diff --git a/ci/OWNERS b/ci/OWNERS index 93fc4a0f27451..89d24a01497b8 100644 --- a/ci/OWNERS +++ b/ci/OWNERS @@ -434,7 +434,7 @@ pkgs/by-name/fo/forgejo/ @adamcstephens @bendlas @emilylange # Node.js /pkgs/build-support/node/build-npm-package @winterqt -/pkgs/build-support/node/fetch-npm-deps @winterqt +/pkgs/build-support/node/prefetch-npm-deps @winterqt /doc/languages-frameworks/javascript.section.md @winterqt /pkgs/development/tools/pnpm @Scrumplex @gepbird /pkgs/build-support/node/fetch-pnpm-deps @Scrumplex @gepbird diff --git a/lib/licenses.nix b/lib/licenses.nix index 63fc954d50a6e..7a594d9d26f0e 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -742,6 +742,18 @@ lib.mapAttrs mkLicense ( fullName = "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer"; }; + hpndSellVariantSafetyClause = { + fullName = "HPND - sell variant with safety critical systems clause"; + url = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/blob/68a5b6d98ae34749cca889f4373b4043d00bfe6a/src/voodoo_dga.c#L12-33"; + # TODO: if the license gets accepted to spdx then + # add spdxId + # else + # remove license + # && replace reference with whatever this license is supposed to be then + # https://github.com/spdx/license-list-XML/issues/2922 + # spdxId = "HPND-sell-variant-safety-clause"; + }; + hpndDec = { fullName = "Historical Permission Notice and Disclaimer - DEC variant"; spdxId = "HPND-DEC"; diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index 9c9010b9fb468..c0b893fdf361c 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -85,7 +85,6 @@ rec { BLK_DEV_DM m DM_CRYPT m MD y - REISERFS_FS m BTRFS_FS m XFS_FS m JFS_FS m @@ -430,7 +429,6 @@ rec { BLK_DEV_DM m DM_CRYPT m MD y - REISERFS_FS m EXT4_FS m USB_STORAGE_CYPRESS_ATACB m @@ -475,7 +473,6 @@ rec { FRAMEBUFFER_CONSOLE y EXT2_FS y EXT3_FS y - REISERFS_FS y MAGIC_SYSRQ y # The kernel doesn't boot at all, with FTRACE diff --git a/maintainers/scripts/bootstrap-files/README.md b/maintainers/scripts/bootstrap-files/README.md index 9abc4402a414d..a353be6e3f602 100644 --- a/maintainers/scripts/bootstrap-files/README.md +++ b/maintainers/scripts/bootstrap-files/README.md @@ -11,10 +11,53 @@ These are called "bootstrap files". Bootstrap files should always be fetched from hydra and uploaded to `tarballs.nixos.org` to guarantee that all the binaries were built from the code committed into `nixpkgs` repository. -The uploads to `tarballs.nixos.org` are done by `@lovesegfault` today. +The uploads to `tarballs.nixos.org` are done by `@NixOS/infra` team members who have S3 write access. This document describes the procedure of updating bootstrap files in `nixpkgs`. +## How to upload bootstrap files (for infra team) + +When a PR updates bootstrap files, the commit message contains the upload commands. +Infra team members with S3 access can upload as follows: + +1. Clone or navigate to the [nixos-infra](https://github.com/NixOS/nixos-infra) repository and enter the `terraform` directory: + + ``` + $ cd nixos-infra/terraform + ``` + +2. Authenticate with AWS SSO: + + ``` + $ aws sso login + ``` + +3. Realize the build output locally (fetch from hydra cache): + + ``` + $ nix-store --realize /nix/store/-stdenv-bootstrap-tools + ``` + +4. Upload to S3 with public-read ACL: + + ``` + $ aws s3 cp --recursive --acl public-read \ + /nix/store/-stdenv-bootstrap-tools/on-server/ \ + s3://nixpkgs-tarballs/stdenv/// + ``` + +5. Verify the upload by downloading and checking hashes: + + ``` + $ aws s3 cp --recursive s3://nixpkgs-tarballs/stdenv/// ./ + $ sha256sum bootstrap-tools.tar.xz busybox + $ sha256sum /nix/store/-stdenv-bootstrap-tools/on-server/* + ``` + + Compare these hashes with those shown in the PR's commit message. + +The exact paths and hashes are provided in each bootstrap update commit message generated by `refresh-tarballs.bash`. + ## How to request the bootstrap seed update To get the tarballs updated let's use an example `i686-unknown-linux-gnu` target: @@ -34,7 +77,7 @@ To get the tarballs updated let's use an example `i686-unknown-linux-gnu` target To validate cross-targets `binfmt` `NixOS` helper can be useful. For `riscv64-unknown-linux-gnu` the `/etc/nixos/configuration.nix` entry would be `boot.binfmt.emulatedSystems = [ "riscv64-linux" ]`. -3. Propose the commit as a PR to update bootstrap tarballs, tag people who can help you test the updated architecture and once reviewed tag `@lovesegfault` to upload the tarballs. +3. Propose the commit as a PR to update bootstrap tarballs, tag people who can help you test the updated architecture and once reviewed tag `@NixOS/infra-build` to upload the tarballs. ## How to add bootstrap files for a new target diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 22b85b1102237..65290e41b983b 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -120,3 +120,41 @@ of pulling the upstream container image from Docker Hub. If you want the old beh - `services.openssh` now supports generating host SSH keys by setting `services.openssh.generateHostKeys = true` while leaving `services.openssh.enable` disabled. This is particularly useful for systems that have no need of an SSH daemon but want SSH host keys for other purposes such as using agenix or sops-nix. - `services.slurm` now supports slurmrestd usage through the `services.slurm.rest` NixOS options. + +- `glibc` has been updated to version 2.42. + + This version no longer makes the stack executable when a shared library requires this. A symptom + is an error like + + > cannot enable executable stack as shared object requires: Invalid argument + + This is usually a bug. Please consider reporting it to the software maintainers. + + In a lot of cases, the library requires the execstack by mistake only. The following workarounds exist: + + * When building the shared library in question from source, use the following linker flags to force turning off the + executable flag: + + ```nix + mkDerivation { + # … + + env.NIX_LDFLAGS = "-z,noexecstack"; + } + ``` + + * If the sources are not available, the execstack-flag can be cleared with `patchelf`: + + ``` + patchelf --clear-execstack binary-only.so + ``` + + * If the shared library to be loaded actually requires an executable stack and it isn't turned + on by the application loading it, you may force allowing that behavior by setting the + following environment variable: + + ``` + GLIBC_TUNABLES=glibc.rtld.execstack=2 + ``` + + **Do not set this globally!** This makes your setup inherently less secure. diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 1bf89a1c1f678..69e3d66046d4a 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1929,7 +1929,6 @@ ./tasks/filesystems/nfs.nix ./tasks/filesystems/ntfs.nix ./tasks/filesystems/overlayfs.nix - ./tasks/filesystems/reiserfs.nix ./tasks/filesystems/squashfs.nix ./tasks/filesystems/sshfs.nix ./tasks/filesystems/unionfs-fuse.nix diff --git a/nixos/modules/security/polkit.nix b/nixos/modules/security/polkit.nix index 27a70c7c4896a..ca0a88246528b 100644 --- a/nixos/modules/security/polkit.nix +++ b/nixos/modules/security/polkit.nix @@ -78,6 +78,8 @@ in ]; systemd.services.polkit.stopIfChanged = false; + systemd.sockets."polkit-agent-helper".wantedBy = [ "sockets.target" ]; + # The polkit daemon reads action/rule files environment.pathsToLink = [ "/share/polkit-1" ]; @@ -94,19 +96,11 @@ in security.pam.services.polkit-1 = { }; - security.wrappers = { - pkexec = { - setuid = true; - owner = "root"; - group = "root"; - source = "${cfg.package.bin}/bin/pkexec"; - }; - polkit-agent-helper-1 = { - setuid = true; - owner = "root"; - group = "root"; - source = "${cfg.package.out}/lib/polkit-1/polkit-agent-helper-1"; - }; + security.wrappers.pkexec = { + setuid = true; + owner = "root"; + group = "root"; + source = "${cfg.package.bin}/bin/pkexec"; }; systemd.tmpfiles.rules = [ diff --git a/nixos/modules/services/desktop-managers/gnome.nix b/nixos/modules/services/desktop-managers/gnome.nix index 8cee536d8b3be..5c11388eb97b0 100644 --- a/nixos/modules/services/desktop-managers/gnome.nix +++ b/nixos/modules/services/desktop-managers/gnome.nix @@ -390,6 +390,10 @@ in systemd.packages = [ pkgs.gnome-session pkgs.gnome-shell + ] + ++ removeExcluded [ + pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ + pkgs.xdg-user-dirs-gtk # Used to create the default bookmarks ]; services.udev.packages = [ diff --git a/nixos/modules/tasks/filesystems.nix b/nixos/modules/tasks/filesystems.nix index 108c1b495c9e5..714f9d5f6d89f 100644 --- a/nixos/modules/tasks/filesystems.nix +++ b/nixos/modules/tasks/filesystems.nix @@ -284,7 +284,6 @@ let ++ lib.optionals (!config.boot.initrd.checkJournalingFS) [ "ext3" "ext4" - "reiserfs" "xfs" "jfs" "f2fs" diff --git a/nixos/modules/tasks/filesystems/reiserfs.nix b/nixos/modules/tasks/filesystems/reiserfs.nix deleted file mode 100644 index 6302ff7358164..0000000000000 --- a/nixos/modules/tasks/filesystems/reiserfs.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -with lib; - -let - - inInitrd = config.boot.initrd.supportedFilesystems.reiserfs or false; - -in - -{ - config = mkIf (config.boot.supportedFilesystems.reiserfs or false) { - - system.fsPackages = [ pkgs.reiserfsprogs ]; - - boot.initrd.kernelModules = mkIf inInitrd [ "reiserfs" ]; - - boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable) '' - copy_bin_and_libs ${pkgs.reiserfsprogs}/sbin/reiserfsck - ln -s reiserfsck $out/bin/fsck.reiserfs - ''; - - boot.initrd.systemd.initrdBin = mkIf inInitrd [ pkgs.reiserfsprogs ]; - - }; -} diff --git a/nixos/tests/systemd-boot.nix b/nixos/tests/systemd-boot.nix index fe0bde3176462..53f8db7a808c1 100644 --- a/nixos/tests/systemd-boot.nix +++ b/nixos/tests/systemd-boot.nix @@ -158,7 +158,8 @@ in } ); - basicXbootldr = runTest ( + # TODO: Fix on aarch64-linux + basicXbootldr = runTestOn [ "x86_64-linux" ] ( { lib, ... }: { name = "systemd-boot-xbootldr"; @@ -282,7 +283,8 @@ in } ); - update = runTest ( + # TODO: Fix on aarch64-linux + update = runTestOn [ "x86_64-linux" ] ( { lib, ... }: { name = "systemd-boot-update"; @@ -457,7 +459,8 @@ in } ); - entryFilenameXbootldr = runTest ( + # TODO: Fix on aarch64-linux + entryFilenameXbootldr = runTestOn [ "x86_64-linux" ] ( { lib, ... }: { name = "systemd-boot-entry-filename-xbootldr"; diff --git a/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix b/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix index 220d3fe68d537..f1845e2a32795 100644 --- a/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix @@ -5,7 +5,6 @@ faust2jack, faust2lv2, helmholtz, - mrpeach, puredata-with-plugins, jack-example-tools, }: @@ -22,7 +21,6 @@ stdenv.mkDerivation rec { plugins = [ helmholtz - mrpeach ]; pitchTracker = puredata-with-plugins plugins; diff --git a/pkgs/applications/audio/mpg123/default.nix b/pkgs/applications/audio/mpg123/default.nix index fb95111cbfe5f..e526288734e1b 100644 --- a/pkgs/applications/audio/mpg123/default.nix +++ b/pkgs/applications/audio/mpg123/default.nix @@ -21,11 +21,11 @@ assert withConplay -> !libOnly; stdenv.mkDerivation rec { pname = "${lib.optionalString libOnly "lib"}mpg123"; - version = "1.33.3"; + version = "1.33.4"; src = fetchurl { url = "mirror://sourceforge/mpg123/mpg123-${version}.tar.bz2"; - hash = "sha256-agxkct0VbiE8IGj0ARXru3OXjC2HPma64qJQ4tIZjSY="; + hash = "sha256-OujJ/4Cpe/wOIuifvNdGh+yk/B2zFbEmB/J/ActaR9k="; }; outputs = [ diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix index 0d8a0a94d4df5..e8f04ad30fc35 100644 --- a/pkgs/applications/editors/neovim/wrapper.nix +++ b/pkgs/applications/editors/neovim/wrapper.nix @@ -198,6 +198,8 @@ let inherit pname version; inherit plugins; + strictDeps = true; + __structuredAttrs = true; dontUnpack = true; inherit diff --git a/pkgs/applications/editors/vim/common.nix b/pkgs/applications/editors/vim/common.nix index 2d46569084bc5..8faedc2467328 100644 --- a/pkgs/applications/editors/vim/common.nix +++ b/pkgs/applications/editors/vim/common.nix @@ -1,6 +1,6 @@ { lib, fetchFromGitHub }: rec { - version = "9.1.1918"; + version = "9.1.2035"; outputs = [ "out" @@ -11,7 +11,7 @@ rec { owner = "vim"; repo = "vim"; rev = "v${version}"; - hash = "sha256-NU/A7yWcLaC+wqsfiHYVhnSZHGDao6+Oib/bSFNSVyQ="; + hash = "sha256-x7WosfqYApaY2Vv1X9+2at/A/KqfacuPy53MGtnxk9w="; }; enableParallelBuilding = true; diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix index 774b76f89fe05..0f4e87c9056ff 100644 --- a/pkgs/applications/graphics/ImageMagick/default.nix +++ b/pkgs/applications/graphics/ImageMagick/default.nix @@ -85,13 +85,13 @@ in stdenv.mkDerivation (finalAttrs: { pname = "imagemagick"; - version = "7.1.2-11"; + version = "7.1.2-12"; src = fetchFromGitHub { owner = "ImageMagick"; repo = "ImageMagick"; tag = finalAttrs.version; - hash = "sha256-RFiE23VW8AbVb7iglxjQMT6njDw+P7vLW6+nSKqN0p8="; + hash = "sha256-0X8Zpr4frknRbWzAu1nprok2ceScTHV8d4+ktnBpQF0="; }; outputs = [ diff --git a/pkgs/applications/terminal-emulators/rxvt-unicode/default.nix b/pkgs/applications/terminal-emulators/rxvt-unicode/default.nix index 7d0be835b33b9..dada6d1e8545c 100644 --- a/pkgs/applications/terminal-emulators/rxvt-unicode/default.nix +++ b/pkgs/applications/terminal-emulators/rxvt-unicode/default.nix @@ -135,12 +135,16 @@ stdenv.mkDerivation { ] ++ lib.optional emojiSupport "--enable-wide-glyphs"; - LDFLAGS = [ - "-lfontconfig" - "-lXrender" - "-lpthread" - ]; - CFLAGS = [ "-I${freetype.dev}/include/freetype2" ]; + env = { + LDFLAGS = toString [ + "-lfontconfig" + "-lXrender" + "-lpthread" + ]; + CFLAGS = toString [ + "-I${freetype.dev}/include/freetype2" + ]; + }; preConfigure = '' # without this the terminfo won't be compiled by tic, see man tic diff --git a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh index 944e45edac1bc..ae76e7a223f71 100644 --- a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh @@ -202,13 +202,32 @@ if [[ "$NIX_DONT_SET_RPATH_@suffixSalt@" != 1 && "$linkType" != static-pie ]]; t # the link time chosen objects will be those of runtime linking. declare -A rpaths for dir in ${libDirs+"${libDirs[@]}"}; do - if [[ "$dir" =~ [/.][/.] ]] && dir2=$(readlink -f "$dir"); then + # If the path is in the store, do not resolve any symlinks and add it to the rpath. + # Resolving symlinks in the store breaks bootstrapping, see issue #454199. + # If it is outside the store, resolve symlinks step by step until it falls + # into the store or it becomes not a symlink. + # Always canonicalize the path before checking it is in the store or not. + if dir2=$(realpath -s "$dir"); then dir="$dir2" + else + continue fi + while [ -z "${rpaths[$dir]:-}" ] && [[ "$dir" != "${NIX_STORE:-}"/* ]] && [ -L "$dir" ]; do + if dir2=$(readlink "$dir"); then + dir="dir2" + else + break + fi + if dir2=$(realpath -s "$dir"); then + dir="dir2" + else + break + fi + done + # If the path turns out to be outside the store, we do not add it to rpath. + # This typically happens for libraries in /tmp that are later + # copied to $out/lib. If not, we're screwed. if [ -n "${rpaths[$dir]:-}" ] || [[ "$dir" != "${NIX_STORE:-}"/* ]]; then - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. continue fi for path in "$dir"/*; do diff --git a/pkgs/build-support/node/fetch-npm-deps/.gitignore b/pkgs/build-support/node/prefetch-npm-deps/.gitignore similarity index 100% rename from pkgs/build-support/node/fetch-npm-deps/.gitignore rename to pkgs/build-support/node/prefetch-npm-deps/.gitignore diff --git a/pkgs/build-support/node/fetch-npm-deps/Cargo.lock b/pkgs/build-support/node/prefetch-npm-deps/Cargo.lock similarity index 50% rename from pkgs/build-support/node/fetch-npm-deps/Cargo.lock rename to pkgs/build-support/node/prefetch-npm-deps/Cargo.lock index dcabca0aeafda..cb526a711d97d 100644 --- a/pkgs/build-support/node/fetch-npm-deps/Cargo.lock +++ b/pkgs/build-support/node/prefetch-npm-deps/Cargo.lock @@ -1,69 +1,71 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.61.2", ] [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "async-channel" @@ -78,9 +80,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backoff" @@ -88,7 +90,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ - "getrandom", + "getrandom 0.2.16", "instant", "rand", ] @@ -101,9 +103,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "block-buffer" @@ -116,15 +118,15 @@ dependencies = [ [[package]] name = "bytes" -version = "1.6.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "camino" -version = "1.1.6" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" [[package]] name = "castaway" @@ -134,45 +136,49 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" [[package]] name = "cc" -version = "1.0.94" +version = "1.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +dependencies = [ + "find-msvc-tools", + "shlex", +] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -189,15 +195,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", @@ -205,9 +211,9 @@ dependencies = [ [[package]] name = "curl" -version = "0.4.46" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2161dd6eba090ff1594084e95fd67aeccf04382ffea77999ea94ed42ec67b6" +checksum = "79fc3b6dd0b87ba36e565715bf9a2ced221311db47bd18011676f24a6066edbc" dependencies = [ "curl-sys", "libc", @@ -215,14 +221,14 @@ dependencies = [ "openssl-sys", "schannel", "socket2", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "curl-sys" -version = "0.4.72+curl-8.6.0" +version = "0.4.84+curl-8.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29cbdc8314c447d11e8fd156dcdd031d9e02a7a976163e396b548c03153bc9ea" +checksum = "abc4294dc41b882eaff37973c2ec3ae203d0091341ee68fbadd1d06e0c18a73b" dependencies = [ "cc", "libc", @@ -230,14 +236,14 @@ dependencies = [ "openssl-sys", "pkg-config", "vcpkg", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "digest" @@ -249,17 +255,28 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "either" -version = "1.11.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -267,25 +284,25 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "errno" -version = "0.3.8" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -305,9 +322,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.2" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fnv" @@ -317,24 +340,24 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -363,15 +386,27 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", "wasi", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "http" version = "0.2.12" @@ -384,39 +419,131 @@ dependencies = [ ] [[package]] -name = "humantime" -version = "2.1.0" +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] [[package]] name = "is_executable" -version = "1.0.1" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9acdc6d67b75e626ad644734e8bc6df893d9cd2a834129065d3dd6158ea9c8" +checksum = "baabb8b4867b26294d818bf3f651a454b6901431711abb96e296245888d6e8c4" dependencies = [ - "winapi", + "windows-sys 0.60.2", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + [[package]] name = "isahc" version = "1.7.2" @@ -444,21 +571,45 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "libc" -version = "0.2.153" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libz-sys" -version = "1.1.16" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" dependencies = [ "cc", "libc", @@ -468,21 +619,27 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "log" -version = "0.4.21" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "nix-nar" @@ -498,21 +655,27 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -522,30 +685,30 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", @@ -554,15 +717,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" @@ -580,11 +743,38 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "portable-atomic" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "prefetch-npm-deps" @@ -610,22 +800,28 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -653,14 +849,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", ] [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -668,9 +864,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -678,9 +874,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -690,9 +886,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -701,28 +897,28 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "rustix" -version = "0.38.32" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -735,27 +931,37 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "serde" -version = "1.0.198" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -764,13 +970,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", + "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -786,23 +994,26 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", "digest", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "sluice" @@ -815,16 +1026,28 @@ dependencies = [ "futures-io", ] +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + [[package]] name = "socket2" -version = "0.5.6" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + [[package]] name = "symlink" version = "0.1.0" @@ -833,41 +1056,53 @@ checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" [[package]] name = "syn" -version = "2.0.59" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tempfile" -version = "3.10.1" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ - "cfg-if", - "fastrand 2.0.2", + "fastrand 2.3.0", + "getrandom 0.3.4", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -875,25 +1110,20 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "tinystr" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -903,9 +1133,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -914,9 +1144,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", ] @@ -933,36 +1163,21 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "url" -version = "2.5.0" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -970,11 +1185,17 @@ dependencies = [ "serde", ] +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vcpkg" @@ -984,15 +1205,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "walkdir" @@ -1006,40 +1227,33 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "winapi" -version = "0.3.9" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "wit-bindgen", ] -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "winapi", + "windows-sys 0.61.2", ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-sys" @@ -1052,11 +1266,29 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.52.0" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", ] [[package]] @@ -1076,18 +1308,35 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -1098,9 +1347,15 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -1110,9 +1365,15 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -1122,15 +1383,27 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -1140,9 +1413,15 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -1152,9 +1431,15 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -1164,9 +1449,15 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -1176,6 +1467,121 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/pkgs/build-support/node/fetch-npm-deps/Cargo.toml b/pkgs/build-support/node/prefetch-npm-deps/Cargo.toml similarity index 79% rename from pkgs/build-support/node/fetch-npm-deps/Cargo.toml rename to pkgs/build-support/node/prefetch-npm-deps/Cargo.toml index dcb7e28a49dd7..d5f789d3eed92 100644 --- a/pkgs/build-support/node/fetch-npm-deps/Cargo.toml +++ b/pkgs/build-support/node/prefetch-npm-deps/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "prefetch-npm-deps" version = "0.1.0" -edition = "2021" +edition = "2024" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -11,7 +11,7 @@ backoff = "0.4.0" data-encoding = "2.5.0" digest = "0.10.7" env_logger = "0.11.3" -isahc = { version = "1.7.2", default_features = false } +isahc = { version = "1.7.2", default-features = false } log = "0.4.21" nix-nar = "0.3.0" rayon = "1.10.0" @@ -22,3 +22,8 @@ sha2 = "0.10.8" tempfile = "3.10.1" url = { version = "2.5.0", features = ["serde"] } walkdir = "2.5.0" + +[profile.release] +codegen-units = 1 +lto = true +opt-level = 3 diff --git a/pkgs/build-support/node/fetch-npm-deps/default.nix b/pkgs/build-support/node/prefetch-npm-deps/default.nix similarity index 100% rename from pkgs/build-support/node/fetch-npm-deps/default.nix rename to pkgs/build-support/node/prefetch-npm-deps/default.nix diff --git a/pkgs/build-support/node/fetch-npm-deps/src/cacache.rs b/pkgs/build-support/node/prefetch-npm-deps/src/cacache.rs similarity index 100% rename from pkgs/build-support/node/fetch-npm-deps/src/cacache.rs rename to pkgs/build-support/node/prefetch-npm-deps/src/cacache.rs diff --git a/pkgs/build-support/node/fetch-npm-deps/src/main.rs b/pkgs/build-support/node/prefetch-npm-deps/src/main.rs similarity index 80% rename from pkgs/build-support/node/fetch-npm-deps/src/main.rs rename to pkgs/build-support/node/prefetch-npm-deps/src/main.rs index 8cc8708211dcc..cdac7ef84c0b4 100644 --- a/pkgs/build-support/node/fetch-npm-deps/src/main.rs +++ b/pkgs/build-support/node/prefetch-npm-deps/src/main.rs @@ -38,7 +38,7 @@ fn cache_map_path() -> Option { /// `dependencies` key in v2 lockfiles designed for backwards compatibility with v1 parsers is removed because of inconsistent data. fn fixup_lockfile( mut lock: Map, - cache: &Option>, + cache: Option<&HashMap>, ) -> anyhow::Result>> { let mut fixed = false; @@ -64,29 +64,29 @@ fn fixup_lockfile( .ok_or_else(|| anyhow!("packages isn't a map"))? .values_mut() { - if let Some(Value::String(resolved)) = package.get("resolved") { - if let Some(Value::String(integrity)) = package.get("integrity") { - if resolved.starts_with("git+") { + if let Some(Value::String(resolved)) = package.get("resolved") + && let Some(Value::String(integrity)) = package.get("integrity") + { + if resolved.starts_with("git+") { + fixed = true; + + package + .as_object_mut() + .ok_or_else(|| anyhow!("package isn't a map"))? + .remove("integrity"); + } else if let Some(cache_hashes) = cache { + let cache_hash = cache_hashes + .get(resolved) + .expect("dependency should have a hash"); + + if integrity != cache_hash { fixed = true; - package + *package .as_object_mut() .ok_or_else(|| anyhow!("package isn't a map"))? - .remove("integrity"); - } else if let Some(cache_hashes) = cache { - let cache_hash = cache_hashes - .get(resolved) - .expect("dependency should have a hash"); - - if integrity != cache_hash { - fixed = true; - - *package - .as_object_mut() - .ok_or_else(|| anyhow!("package isn't a map"))? - .get_mut("integrity") - .unwrap() = Value::String(cache_hash.clone()); - } + .get_mut("integrity") + .unwrap() = Value::String(cache_hash.clone()); } } } @@ -99,17 +99,13 @@ fn fixup_lockfile( v => bail!("unsupported lockfile version {v}"), } - if fixed { - Ok(Some(lock)) - } else { - Ok(None) - } + if fixed { Ok(Some(lock)) } else { Ok(None) } } // Recursive helper to fixup v1 lockfile deps fn fixup_v1_deps( dependencies: &mut Map, - cache: &Option>, + cache: Option<&HashMap>, fixed: &mut bool, ) { for dep in dependencies.values_mut() { @@ -117,31 +113,29 @@ fn fixup_v1_deps( .as_object() .expect("v1 dep must be object") .get("resolved") - { - if let Some(Value::String(integrity)) = dep + && let Some(Value::String(integrity)) = dep .as_object() .expect("v1 dep must be object") .get("integrity") - { - if resolved.starts_with("git+ssh://") { + { + if resolved.starts_with("git+ssh://") { + *fixed = true; + + dep.as_object_mut() + .expect("v1 dep must be object") + .remove("integrity"); + } else if let Some(cache_hashes) = cache { + let cache_hash = cache_hashes + .get(resolved) + .expect("dependency should have a hash"); + + if integrity != cache_hash { *fixed = true; - dep.as_object_mut() + *dep.as_object_mut() .expect("v1 dep must be object") - .remove("integrity"); - } else if let Some(cache_hashes) = cache { - let cache_hash = cache_hashes - .get(resolved) - .expect("dependency should have a hash"); - - if integrity != cache_hash { - *fixed = true; - - *dep.as_object_mut() - .expect("v1 dep must be object") - .get_mut("integrity") - .unwrap() = Value::String(cache_hash.clone()); - } + .get_mut("integrity") + .unwrap() = Value::String(cache_hash.clone()); } } } @@ -185,26 +179,30 @@ fn main() -> anyhow::Result<()> { process::exit(1); } - if let Ok(jobs) = env::var("NIX_BUILD_CORES") { - if !jobs.is_empty() { - rayon::ThreadPoolBuilder::new() - .num_threads( - jobs.parse() - .expect("NIX_BUILD_CORES must be a whole number"), - ) - .build_global() - .unwrap(); - } + if let Ok(jobs) = env::var("NIX_BUILD_CORES") + && !jobs.is_empty() + { + rayon::ThreadPoolBuilder::new() + .num_threads( + jobs.parse() + .expect("NIX_BUILD_CORES must be a whole number"), + ) + .build_global() + .unwrap(); } if args[1] == "--fixup-lockfile" { let lock = serde_json::from_str(&fs::read_to_string(&args[2])?)?; let cache = cache_map_path() - .map(|map_path| Ok::<_, anyhow::Error>(serde_json::from_slice(&fs::read(map_path)?)?)) + .map(|map_path| { + Ok::<_, anyhow::Error>(serde_json::from_slice::>( + &fs::read(map_path)?, + )?) + }) .transpose()?; - if let Some(fixed) = fixup_lockfile(lock, &cache)? { + if let Some(fixed) = fixup_lockfile(lock, cache.as_ref())? { println!("Fixing lockfile"); fs::write(&args[2], serde_json::to_string(&fixed)?)?; @@ -345,7 +343,7 @@ mod tests { hashes.insert(String::from("foo"), String::from("sha512-foo")); assert_eq!( - fixup_lockfile(input.as_object().unwrap().clone(), &Some(hashes))?, + fixup_lockfile(input.as_object().unwrap().clone(), Some(hashes).as_ref())?, Some(expected.as_object().unwrap().clone()) ); @@ -418,7 +416,7 @@ mod tests { hashes.insert(String::from("foo"), String::from("sha512-foo")); assert_eq!( - fixup_lockfile(input.as_object().unwrap().clone(), &Some(hashes))?, + fixup_lockfile(input.as_object().unwrap().clone(), Some(hashes).as_ref())?, Some(expected.as_object().unwrap().clone()) ); diff --git a/pkgs/build-support/node/fetch-npm-deps/src/parse/lock.rs b/pkgs/build-support/node/prefetch-npm-deps/src/parse/lock.rs similarity index 97% rename from pkgs/build-support/node/fetch-npm-deps/src/parse/lock.rs rename to pkgs/build-support/node/prefetch-npm-deps/src/parse/lock.rs index 49bba8780c979..17c6c633ee8f6 100644 --- a/pkgs/build-support/node/fetch-npm-deps/src/parse/lock.rs +++ b/pkgs/build-support/node/prefetch-npm-deps/src/parse/lock.rs @@ -1,8 +1,8 @@ -use anyhow::{anyhow, bail, Context}; +use anyhow::{Context, anyhow, bail}; use rayon::slice::ParallelSliceMut; use serde::{ - de::{self, Visitor}, Deserialize, Deserializer, + de::{self, Visitor}, }; use std::{ cmp::Ordering, @@ -132,7 +132,7 @@ impl<'de> Deserialize<'de> for HashCollection { struct HashCollectionVisitor; -impl<'de> Visitor<'de> for HashCollectionVisitor { +impl Visitor<'_> for HashCollectionVisitor { type Value = HashCollection; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { @@ -161,7 +161,7 @@ impl Hash { .ok_or_else(|| anyhow!("expected SRI hash, got {:?}", s.as_ref()))? .0; - if ALGOS.iter().any(|&a| algo == a) { + if ALGOS.contains(&algo) { Ok(Hash(s.as_ref().to_string())) } else { Err(anyhow!("unknown hash algorithm {algo:?}")) @@ -215,7 +215,7 @@ fn to_new_packages( if let UrlOrString::Url(v) = &package.version { if v.scheme() == "npm" { - if let Some(UrlOrString::Url(ref url)) = &package.resolved { + if let Some(UrlOrString::Url(url)) = &package.resolved { package.version = UrlOrString::Url(url.clone()); } } else { @@ -272,8 +272,8 @@ fn get_initial_url() -> anyhow::Result { #[cfg(test)] mod tests { use super::{ - get_initial_url, packages, to_new_packages, Hash, HashCollection, OldPackage, Package, - UrlOrString, + Hash, HashCollection, OldPackage, Package, UrlOrString, get_initial_url, packages, + to_new_packages, }; use std::{ cmp::Ordering, diff --git a/pkgs/build-support/node/fetch-npm-deps/src/parse/mod.rs b/pkgs/build-support/node/prefetch-npm-deps/src/parse/mod.rs similarity index 87% rename from pkgs/build-support/node/fetch-npm-deps/src/parse/mod.rs rename to pkgs/build-support/node/prefetch-npm-deps/src/parse/mod.rs index 0bca33f039152..6c54d404f3cb5 100644 --- a/pkgs/build-support/node/fetch-npm-deps/src/parse/mod.rs +++ b/pkgs/build-support/node/prefetch-npm-deps/src/parse/mod.rs @@ -1,4 +1,4 @@ -use anyhow::{anyhow, bail, Context}; +use anyhow::{Context, anyhow, bail}; use lock::UrlOrString; use log::{debug, info}; use rayon::prelude::*; @@ -8,7 +8,7 @@ use std::{ io::Write, process::{Command, Stdio}, }; -use tempfile::{tempdir, TempDir}; +use tempfile::{TempDir, tempdir}; use url::Url; use crate::util; @@ -33,7 +33,9 @@ pub fn lockfile( .collect::>>()?; if packages.is_empty() && !force_empty_cache { - bail!("No cacheable dependencies were found. Please inspect the upstream `package-lock.json` file and ensure that remote dependencies have `resolved` URLs and `integrity` hashes. If the lockfile is missing this data, attempt to get upstream to fix it via a tool like . If generating an empty cache is intentional and you would like to do it anyways, set `forceEmptyCache = true`."); + bail!( + "No cacheable dependencies were found. Please inspect the upstream `package-lock.json` file and ensure that remote dependencies have `resolved` URLs and `integrity` hashes. If the lockfile is missing this data, attempt to get upstream to fix it via a tool like . If generating an empty cache is intentional and you would like to do it anyways, set `forceEmptyCache = true`." + ); } let mut new = Vec::new(); @@ -49,7 +51,11 @@ pub fn lockfile( let path = dir.path().join("package"); - info!("recursively parsing lockfile for {} at {path:?}", pkg.name); + info!( + "recursively parsing lockfile for {} at {}", + pkg.name, + path.display() + ); let lockfile_contents = fs::read_to_string(path.join("package-lock.json")); @@ -71,7 +77,10 @@ pub fn lockfile( "prepare", ] { if scripts.contains_key(typ) && lockfile_contents.is_err() && !force_git_deps { - bail!("Git dependency {} contains install scripts, but has no lockfile, which is something that will probably break. Open an issue if you can't feasibly patch this dependency out, and we'll come up with a workaround.\nIf you'd like to attempt to try to use this dependency anyways, set `forceGitDeps = true`.", pkg.name); + bail!( + "Git dependency {} contains install scripts, but has no lockfile, which is something that will probably break. Open an issue if you can't feasibly patch this dependency out, and we'll come up with a workaround.\nIf you'd like to attempt to try to use this dependency anyways, set `forceGitDeps = true`.", + pkg.name + ); } } } @@ -310,7 +319,9 @@ fn get_hosted_git_url(url: &Url) -> anyhow::Result> { match get_url() { Some(u) => Ok(Some(u)), - None => Err(anyhow!("This lockfile either contains a Git dependency with an unsupported host, or a malformed URL in the lockfile: {url}")) + None => Err(anyhow!( + "This lockfile either contains a Git dependency with an unsupported host, or a malformed URL in the lockfile: {url}" + )), } } else { Ok(None) @@ -327,15 +338,17 @@ mod tests { for (input, expected) in [ ( "git+ssh://git@github.com/castlabs/electron-releases.git#fc5f78d046e8d7cdeb66345a2633c383ab41f525", - Some("https://codeload.github.com/castlabs/electron-releases/tar.gz/fc5f78d046e8d7cdeb66345a2633c383ab41f525"), + Some( + "https://codeload.github.com/castlabs/electron-releases/tar.gz/fc5f78d046e8d7cdeb66345a2633c383ab41f525", + ), ), ( "git+ssh://bitbucket.org/foo/bar#branch", - Some("https://bitbucket.org/foo/bar/get/branch.tar.gz") + Some("https://bitbucket.org/foo/bar/get/branch.tar.gz"), ), ( "git+ssh://git.sr.ht/~foo/bar#branch", - Some("https://git.sr.ht/~foo/bar/archive/branch.tar.gz") + Some("https://git.sr.ht/~foo/bar/archive/branch.tar.gz"), ), ] { assert_eq!( diff --git a/pkgs/build-support/node/fetch-npm-deps/src/util.rs b/pkgs/build-support/node/prefetch-npm-deps/src/util.rs similarity index 71% rename from pkgs/build-support/node/fetch-npm-deps/src/util.rs rename to pkgs/build-support/node/prefetch-npm-deps/src/util.rs index 835f77a2f52c8..aca0affad824a 100644 --- a/pkgs/build-support/node/fetch-npm-deps/src/util.rs +++ b/pkgs/build-support/node/prefetch-npm-deps/src/util.rs @@ -1,10 +1,10 @@ use anyhow::bail; -use backoff::{retry, ExponentialBackoff}; +use backoff::{ExponentialBackoff, retry}; use data_encoding::BASE64; use digest::Digest; use isahc::{ - config::{CaCertificate, Configurable, RedirectPolicy, SslOption}, Body, Request, RequestExt, + config::{CaCertificate, Configurable, RedirectPolicy, SslOption}, }; use log::info; use nix_nar::{Encoder, NarError}; @@ -22,18 +22,19 @@ pub fn get_url(url: &Url) -> Result { let mut url = url.clone(); // Respect NIX_NPM_REGISTRY_OVERRIDES environment variable, which should be a JSON mapping in the shape of: // `{ "registry.example.com": "my-registry.local", ... }` - if let Some(host) = url.host_str() { - if let Ok(npm_mirrors) = env::var("NIX_NPM_REGISTRY_OVERRIDES") { - if let Ok(mirrors) = serde_json::from_str::>(&npm_mirrors) { - if let Some(mirror) = mirrors.get(host).and_then(serde_json::Value::as_str) { - let mirror_url = Url::parse(mirror)?; - url.set_path(&(mirror_url.path().to_owned() + url.path())); - url.set_host(Some(mirror_url.host_str().expect(format!("Mirror URL without host part: {mirror_url}").as_str())))?; - eprintln!("Replaced URL {url_} with {url}"); - } - } - } + if let Some(host) = url.host_str() + && let Ok(npm_mirrors) = env::var("NIX_NPM_REGISTRY_OVERRIDES") + && let Ok(mirrors) = serde_json::from_str::>(&npm_mirrors) + && let Some(mirror) = mirrors.get(host).and_then(serde_json::Value::as_str) + { + let mirror_url = Url::parse(mirror)?; + url.set_path(&(mirror_url.path().to_owned() + url.path())); + url.set_host(Some(mirror_url.host_str().unwrap_or_else(|| { + panic!("Mirror URL without host part: {mirror_url}") + })))?; + eprintln!("Replaced URL {url_} with {url}"); } + let mut request = Request::get(url.as_str()).redirect_policy(RedirectPolicy::Limit(10)); // Respect SSL_CERT_FILE if environment variable exists @@ -51,15 +52,13 @@ pub fn get_url(url: &Url) -> Result { // Respect NIX_NPM_TOKENS environment variable, which should be a JSON mapping in the shape of: // `{ "registry.example.com": "example-registry-bearer-token", ... }` - if let Some(host) = url.host_str() { - if let Ok(npm_tokens) = env::var("NIX_NPM_TOKENS") { - if let Ok(tokens) = serde_json::from_str::>(&npm_tokens) { - if let Some(token) = tokens.get(host).and_then(serde_json::Value::as_str) { - info!("Found NPM token for {}. Adding authorization header to request.", host); - request = request.header("Authorization", format!("Bearer {token}")); - } - } - } + if let Some(host) = url.host_str() + && let Ok(npm_tokens) = env::var("NIX_NPM_TOKENS") + && let Ok(tokens) = serde_json::from_str::>(&npm_tokens) + && let Some(token) = tokens.get(host).and_then(serde_json::Value::as_str) + { + info!("Found NPM token for {host}. Adding authorization header to request."); + request = request.header("Authorization", format!("Bearer {token}")); } let res = request.body(())?.send()?; diff --git a/pkgs/build-support/src-only/default.nix b/pkgs/build-support/src-only/default.nix index b732c61560419..f44e41a62eefb 100644 --- a/pkgs/build-support/src-only/default.nix +++ b/pkgs/build-support/src-only/default.nix @@ -54,6 +54,19 @@ let dontInstall = false; installPhase = "cp -pr --reflink=auto -- . $out"; + + # the original derivation might've set something like outputDev = "lib", but "lib" isn't an output anymore + # some things get confused and error if one of these is set to an output that doesn't exist + # ex: pkgs/build-support/setup-hooks/multiple-outputs.sh + outputDev = "out"; + outputBin = "out"; + outputInclude = "out"; + outputLib = "out"; + outputDoc = "out"; + outputDevdoc = "out"; + outputMan = "out"; + outputDevman = "out"; + outputInfo = "out"; }; in diff --git a/pkgs/by-name/aa/aalib/package.nix b/pkgs/by-name/aa/aalib/package.nix index 2dc9439397a8d..fb602b2ee5965 100644 --- a/pkgs/by-name/aa/aalib/package.nix +++ b/pkgs/by-name/aa/aalib/package.nix @@ -33,11 +33,13 @@ stdenv.mkDerivation rec { # The fuloong2f is not supported by aalib still preConfigure = '' - configureFlagsArray+=( - "--bindir=$bin/bin" - "--includedir=$dev/include" + # The configure script does the correct thing when 'system' is already set + # Export it explicitly in case __structuredAttrs is true. + export system + appendToVar configureFlags \ + "--bindir=$bin/bin" \ + "--includedir=$dev/include" \ "--libdir=$out/lib" - ) ''; buildInputs = [ ncurses ]; @@ -54,7 +56,7 @@ stdenv.mkDerivation rec { postInstall = '' mkdir -p $dev/bin mv $bin/bin/aalib-config $dev/bin/aalib-config - substituteInPlace $out/lib/libaa.la --replace "${ncurses.dev}/lib" "${ncurses.out}/lib" + substituteInPlace $out/lib/libaa.la --replace-fail "${ncurses.dev}/lib" "${ncurses.out}/lib" ''; meta = { diff --git a/pkgs/by-name/ab/abseil-cpp/package.nix b/pkgs/by-name/ab/abseil-cpp/package.nix index a264041af4413..5419ae381c67d 100644 --- a/pkgs/by-name/ab/abseil-cpp/package.nix +++ b/pkgs/by-name/ab/abseil-cpp/package.nix @@ -19,6 +19,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-SCQDORhmJmTb0CYm15zjEa7dkwc+lpW2s1d4DsMRovI="; }; + outputs = [ + "out" + "dev" + ]; + cmakeFlags = [ (lib.cmakeBool "ABSL_BUILD_TEST_HELPERS" true) (lib.cmakeBool "ABSL_USE_EXTERNAL_GOOGLETEST" true) diff --git a/pkgs/by-name/al/alsa-lib/package.nix b/pkgs/by-name/al/alsa-lib/package.nix index d0768cf443e31..4f442dd759e9c 100644 --- a/pkgs/by-name/al/alsa-lib/package.nix +++ b/pkgs/by-name/al/alsa-lib/package.nix @@ -10,11 +10,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "alsa-lib"; - version = "1.2.14"; + version = "1.2.15.1"; src = fetchurl { url = "mirror://alsa/lib/alsa-lib-${finalAttrs.version}.tar.bz2"; - hash = "sha256-vpyIoLNgQ2fddBZ6K3VKNeFC9nApKuR6L97yei7pejI="; + hash = "sha256-f5g8qJykIIcsoW6Kn4+X+2PbbBxuJYW5Fzegi7A/Vmw="; }; patches = [ diff --git a/pkgs/by-name/al/alsa-ucm-conf/package.nix b/pkgs/by-name/al/alsa-ucm-conf/package.nix index 40be0117fc3a3..a8390137be78a 100644 --- a/pkgs/by-name/al/alsa-ucm-conf/package.nix +++ b/pkgs/by-name/al/alsa-ucm-conf/package.nix @@ -9,11 +9,11 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "alsa-ucm-conf"; - version = "1.2.14"; + version = "1.2.15.1"; src = fetchurl { url = "mirror://alsa/lib/alsa-ucm-conf-${finalAttrs.version}.tar.bz2"; - hash = "sha256-MumAn1ktkrl4qhAy41KTwzuNDx7Edfk3Aiw+6aMGnCE="; + hash = "sha256-JGxdWdIXtvf0ehH9EPG3ZtJavLDZyZavMHm7nJrFobA="; }; dontBuild = true; diff --git a/pkgs/by-name/am/amf-headers/package.nix b/pkgs/by-name/am/amf-headers/package.nix index 4da4339ac3ca1..3c3ed66439169 100644 --- a/pkgs/by-name/am/amf-headers/package.nix +++ b/pkgs/by-name/am/amf-headers/package.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation rec { pname = "amf-headers"; - version = "1.4.36"; + version = "1.5.0"; src = fetchFromGitHub { owner = "GPUOpen-LibrariesAndSDKs"; repo = "AMF"; tag = "v${version}"; - sha256 = "sha256-0PgWEq+329/EhI0/CgPsCkJ4CiTsFe56w2O+AcjVUdc="; + sha256 = "sha256-ZVC1e4S5CNpfl3ewHR9aVfYwxDBE7/BJ6OyH2kF00fQ="; }; installPhase = '' diff --git a/pkgs/by-name/an/ananicy-cpp/package.nix b/pkgs/by-name/an/ananicy-cpp/package.nix index d70de414965ef..6f38f3577a6d6 100644 --- a/pkgs/by-name/an/ananicy-cpp/package.nix +++ b/pkgs/by-name/an/ananicy-cpp/package.nix @@ -48,6 +48,12 @@ clangStdenv.mkDerivation (finalAttrs: { url = "https://gitlab.com/ananicy-cpp/ananicy-cpp/-/commit/b2589a9b1faa2ecf54aeede40ea781c33bfb09a8.patch"; hash = "sha256-nfyCdhvnWj446z5aPFCXGi79Xgja8W0Eopl6I30fOBM="; }) + + # fix build w/ glibc-2.42 (don't conflict with sched_* API from glibc 2.41) + (fetchpatch { + url = "https://gitlab.com/ananicy-cpp/ananicy-cpp/-/commit/99e64815bacaf3baa28ad89d022e33ebede94fa9.patch"; + hash = "sha256-V9yf0nUa91DXRufDYhufybQUTP6R1CUzF51SEBMdjmA="; + }) ]; strictDeps = true; diff --git a/pkgs/by-name/ap/apple-sdk/common/plists.nix b/pkgs/by-name/ap/apple-sdk/common/plists.nix index 70184d89429ba..a79581e7767d9 100644 --- a/pkgs/by-name/ap/apple-sdk/common/plists.nix +++ b/pkgs/by-name/ap/apple-sdk/common/plists.nix @@ -16,7 +16,6 @@ let STRIP_PNG_TEXT = "NO"; }; Description = if stdenvNoCC.hostPlatform.isMacOS then "macOS" else "iOS"; - FamilyDisplayName = Description; FamilyIdentifier = lib.toLower xcodePlatform; FamilyName = Description; Identifier = CFBundleIdentifier; diff --git a/pkgs/by-name/at/at-spi2-core/package.nix b/pkgs/by-name/at/at-spi2-core/package.nix index 07297cfe0a655..193bb60da079c 100644 --- a/pkgs/by-name/at/at-spi2-core/package.nix +++ b/pkgs/by-name/at/at-spi2-core/package.nix @@ -7,6 +7,7 @@ pkg-config, gobject-introspection, buildPackages, + withDconf ? !stdenv.hostPlatform.isDarwin && lib.meta.availableOn stdenv.hostPlatform dconf, withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages, @@ -90,6 +91,13 @@ stdenv.mkDerivation rec { ] ++ lib.optionals (!systemdSupport) [ "-Duse_systemd=false" + ] + ++ lib.optionals (!withIntrospection) [ + (lib.mesonEnable "introspection" false) + ] + ++ lib.optionals stdenv.hostPlatform.isStatic [ + # The adaptor is only available as a shared object, as gtk2 loads it dynamically + (lib.mesonBool "gtk2_atk_adaptor" false) ]; passthru = { @@ -102,7 +110,7 @@ stdenv.mkDerivation rec { postFixup = '' # Cannot use wrapGAppsHook'due to a dependency cycle wrapProgram $out/libexec/at-spi-bus-launcher \ - --prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules" \ + ${lib.optionalString withDconf ''--prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules"''} \ --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name} ''; diff --git a/pkgs/by-name/au/auto-patchelf/source/auto-patchelf.py b/pkgs/by-name/au/auto-patchelf/source/auto-patchelf.py index bf8882818dd97..360756375f48c 100644 --- a/pkgs/by-name/au/auto-patchelf/source/auto-patchelf.py +++ b/pkgs/by-name/au/auto-patchelf/source/auto-patchelf.py @@ -204,6 +204,36 @@ def find_dependency(soname: str, soarch: str, soabi: str) -> Optional[Path]: return None +def find_first_matching_rpath_with_origin(binary: Path, lib_dir: Path, rpaths: list[str]) -> Optional[Path]: + """ + If lib_dir equals one of the existing $ORIGIN-based RPATH entries + (after resolving $ORIGIN relative to this binary), return that $ORIGIN + entry to preserve it; otherwise return None. + + Note: we return a Path constructed from the RPATH string (which may + contain $ORIGIN). This is intentional so that the caller can treat it + uniformly with other Path entries when building the final RPATH string + (via Path.as_posix). We do not expect this Path to exist on the + filesystem; it functions as a display value. + """ + try: + # resolve(strict=False) does not require the path to exist, but may still + # raise RuntimeError (cycles) or OSError in odd environments. Guard those. + lib_dir_realpath = lib_dir.resolve() + except (OSError, RuntimeError): + return None + for rpath in rpaths: + if "$ORIGIN" not in rpath: + continue + try: + candidate_rpath_realpath = (binary.parent / rpath.replace("$ORIGIN", ".")).resolve() + except (OSError, RuntimeError): + continue + if candidate_rpath_realpath == lib_dir_realpath: + return Path(rpath) + return None + + @dataclass class Dependency: file: Path # The file that contains the dependency @@ -211,7 +241,7 @@ class Dependency: found: bool = False # Whether it was found somewhere -def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list[Path] = [], keep_libc: bool = False, extra_args: list[str] = []) -> list[Dependency]: +def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list[Path] = [], keep_libc: bool = False, preserve_origin: bool = False, extra_args: list[str] = []) -> list[Dependency]: try: with open_elf(path) as elf: @@ -242,6 +272,7 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list file_is_dynamic_executable = is_dynamic_executable(elf) file_dependencies = get_dependencies(elf) + get_dlopen_dependencies(elf) + existing_rpaths = get_rpath(elf) except ELFError: return [] @@ -279,7 +310,10 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list # and resolved automatically by the dynamic linker, unless # keep_libc is enabled. # 3. If a candidate is found in our library dependencies, that - # dependency should be added to rpath. + # dependency should be added to rpath. If --preserve-origin + # is set and this file's existing RUNPATH/RPATH contains a $ORIGIN + # entry that resolves to the same directory, we add that $ORIGIN + # entry instead of an absolute path. # 4. If all of the above fail, libc dependencies should still be # considered found. This is in contrast to step 2, because # enabling keep_libc should allow libc to be found in step 3 @@ -299,7 +333,8 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list was_found = True break elif found_dependency := find_dependency(candidate.name, file_arch, file_osabi): - rpath.append(found_dependency) + origin_rpath_entry = find_first_matching_rpath_with_origin(path, found_dependency, existing_rpaths) if preserve_origin else None + rpath.append(origin_rpath_entry or found_dependency) dependencies.append(Dependency(path, candidate, found=True)) print(f" {candidate} -> found: {found_dependency}") was_found = True @@ -315,6 +350,12 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list rpath.extend(append_rpaths) + # Keep any existing $ORIGIN entries that didn't match a discovered dependency (i.e. dlopen-only lookups) + if preserve_origin: + for existing_rpath in existing_rpaths: + if "$ORIGIN" in existing_rpath: + rpath.append(Path(existing_rpath)) + # Dedup the rpath rpath_str = ":".join(dict.fromkeys(map(Path.as_posix, rpath))) @@ -335,6 +376,7 @@ def auto_patchelf( ignore_missing: list[str] = [], append_rpaths: list[Path] = [], keep_libc: bool = False, + preserve_origin: bool = False, add_existing: bool = True, extra_args: list[str] = []) -> None: @@ -351,7 +393,7 @@ def auto_patchelf( dependencies = [] for path in chain.from_iterable(glob(p, '*', recursive) for p in paths_to_patch): if not path.is_symlink() and path.is_file(): - dependencies += auto_patchelf_file(path, runtime_deps, append_rpaths, keep_libc, extra_args) + dependencies += auto_patchelf_file(path, runtime_deps, append_rpaths, keep_libc, preserve_origin, extra_args) missing = [dep for dep in dependencies if not dep.found] @@ -431,6 +473,12 @@ def main() -> None: action="store_true", help="Attempt to search for and relink libc dependencies.", ) + parser.add_argument( + "--preserve-origin", + dest="preserve_origin", + action="store_true", + help="When possible, replace absolute RPATH entries with original $ORIGIN entries that resolve to the same directory.", + ) parser.add_argument( "--ignore-existing", dest="add_existing", @@ -460,6 +508,7 @@ def main() -> None: args.ignore_missing, append_rpaths=args.append_rpaths, keep_libc=args.keep_libc, + preserve_origin=args.preserve_origin, add_existing=args.add_existing, extra_args=args.extra_args) diff --git a/pkgs/by-name/au/autobase/package-lock.json b/pkgs/by-name/au/autobase/package-lock.json deleted file mode 100644 index c7a51c5b4216a..0000000000000 --- a/pkgs/by-name/au/autobase/package-lock.json +++ /dev/null @@ -1,5309 +0,0 @@ -{ - "name": "autobase", - "version": "7.17.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "autobase", - "version": "7.17.0", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.1", - "bare-events": "^2.2.0", - "compact-encoding": "^2.16.0", - "core-coupler": "^2.0.0", - "debounceify": "^1.0.0", - "hyperbee": "^2.22.0", - "hypercore": "^11.4.0", - "hypercore-crypto": "^3.4.0", - "hypercore-id-encoding": "^1.2.0", - "hyperschema": "^1.12.1", - "index-encoder": "^3.3.2", - "nanoassert": "^2.0.0", - "protomux-wakeup": "^2.0.0", - "ready-resource": "^1.0.0", - "resolve-reject-promise": "^1.1.0", - "safety-catch": "^1.0.2", - "scope-lock": "^1.2.4", - "signal-promise": "^1.0.3", - "sodium-universal": "^5.0.1", - "sub-encoder": "^2.1.1", - "tiny-buffer-map": "^1.1.1" - }, - "devDependencies": { - "autobase-test-helpers": "^3.0.0", - "brittle": "^3.1.1", - "corestore": "^7.0.15", - "rache": "^1.0.0", - "same-data": "^1.0.0", - "standard": "^17.0.0", - "task-backoff": "^1.0.0", - "test-tmp": "^1.2.0", - "uncaughts": "^1.1.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hyperswarm/secret-stream": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.8.1.tgz", - "integrity": "sha512-F3fr8CKB6za9Ac7ifjgAe07qnnesl5kS0MtLsyKxA1Og8E+FZykdwLpgoLjnEa7G6E1L56lASLr42E4kd20sog==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^4.0.0", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^5.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assert": { - "name": "bare-assert", - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/autobase-test-helpers": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/autobase-test-helpers/-/autobase-test-helpers-3.1.0.tgz", - "integrity": "sha512-3Jk1nWEcMxYOtU6rt4ujpchLz0W/Uv7S6v0tea53wW9rZqwFzgffEYbufNak53/93DBbp3gwX+AgHdfHtpx4RQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bare-addon-resolve": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.9.4.tgz", - "integrity": "sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg==", - "license": "Apache-2.0", - "dependencies": { - "bare-module-resolve": "^1.10.0", - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-ansi-escapes": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/bare-ansi-escapes/-/bare-ansi-escapes-2.2.3.tgz", - "integrity": "sha512-02ES4/E2RbrtZSnHJ9LntBhYkLA6lPpSEeP8iqS3MccBIVhVBlEmruF1I7HZqx5Q8aiTeYfQVeqmrU9YO2yYoQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.5" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-cov": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bare-cov/-/bare-cov-1.1.1.tgz", - "integrity": "sha512-YP0QjpKznC55rn3fc3hOPjcegm1eu/ZHVwS+t1c48O48bWMspWzBY+9a6fI5sb/PGwqv47W4clpnmcy7vKhYrQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-inspector": "^4.0.1", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-url": "^2.1.5", - "bare-v8-to-istanbul": "v1.0.0", - "picomatch": "^4.0.2", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-crypto": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/bare-crypto/-/bare-crypto-1.7.0.tgz", - "integrity": "sha512-HPoNUQitmlihHzBotCG5huj0zRpVabrsRfoq6yCB+Y1HRftXmMJPMfVKxELijaMCMSJtlvw6ytotE88lwf6qdg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.3" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-debug-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bare-debug-log/-/bare-debug-log-2.0.0.tgz", - "integrity": "sha512-Vi42PkMQsNV9PUpx2Gl1hikshx5O9FzMJ6o9Nnopseg7qLBBK7Nl31d0RHcfwLEAfmcPApytpc0ZFfq68u22FQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-dns": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bare-dns/-/bare-dns-2.1.2.tgz", - "integrity": "sha512-0GCTZBzL3vJ/xfupMnmKGHYNMrFBpX3sK4I2nTXgH2BAwifvyXVCEKFVypAwyqQJ85tYuTel52nD6us7CqfHXQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-encoding": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-encoding/-/bare-encoding-1.0.0.tgz", - "integrity": "sha512-9T5CSCaytaIWZpFWx9LQLJ6/z/m2Slnan9tQBKmOvoq/UtPBbOKT/B2fo29Xhi4X1FFtNx8DFdtrFgqm2yse/Q==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-env": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-env/-/bare-env-3.0.0.tgz", - "integrity": "sha512-0u964P5ZLAxTi+lW4Kjp7YRJQ5gZr9ycYOtjLxsSrupgMz3sn5Z9n4SH/JIifHwvadsf1brA2JAjP+9IOWwTiw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-events": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", - "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", - "license": "Apache-2.0" - }, - "node_modules/bare-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-format/-/bare-format-1.0.1.tgz", - "integrity": "sha512-1oS+LZrWK6tnYnvNSHDGljc2MPunRxwhpFriuCgzNF+oklrnwmBKD91tS0yt+jpl2j3UgcSDzBIMiVTvLs9A8w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", - "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-hrtime": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/bare-hrtime/-/bare-hrtime-2.0.11.tgz", - "integrity": "sha512-Mnb2rnGRSHzNHQwFrK8VVqD8Oob/CiSsBlgZGKQ1xTj25GPI19sXHjUPzrkHOU1DaoVj1ig1VO7rZGaYOfXPaw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-http1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bare-http1/-/bare-http1-4.0.2.tgz", - "integrity": "sha512-6Jns5oBG9LFz/U2PuFk2LHQbQ1ZuUgPyuahfbNikPL/HcjpSGdSl0xMiN3Qt852Xm1sLBsTGxl0OoM2cVCYzNQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.3.0", - "bare-tcp": "^2.0.0" - } - }, - "node_modules/bare-https": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bare-https/-/bare-https-2.0.0.tgz", - "integrity": "sha512-qmjNZmYQ4nn+k3CLlxVyOqWYamdBPqE7psR5/lFWG39fskAR4C2h29d1Ka5BeWOGDAWhXImFIwZUxwCE/7xeLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-http1": "^4.0.0", - "bare-tcp": "^2.0.0", - "bare-tls": "^2.0.0" - } - }, - "node_modules/bare-inspect": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bare-inspect/-/bare-inspect-3.1.1.tgz", - "integrity": "sha512-DOqRxa/qYZS+P3+3yVdroeixaqc6+gwiSUHntS5294Iykhe9ySzlfoRvSDM//xUHad8sQ59IOhyCoedFluvC6g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-ansi-escapes": "^2.1.0", - "bare-type": "^1.0.0" - }, - "engines": { - "bare": ">=1.18.0" - } - }, - "node_modules/bare-inspector": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bare-inspector/-/bare-inspector-4.0.1.tgz", - "integrity": "sha512-MZGIci2OFzwDNWlY/JUmEVtK/0xa+mbdggOB0jSI0WYkQpyxaiD4q/8xZ42k4kOoZNLKpYMI31wmllm6jS5w9g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.1.0", - "bare-http1": "^4.0.0", - "bare-stream": "^2.0.0", - "bare-url": "^2.0.0", - "bare-ws": "^2.0.0" - }, - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-module-resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.11.1.tgz", - "integrity": "sha512-DCxeT9i8sTs3vUMA3w321OX/oXtNEu5EjObQOnTmCdNp5RXHBAvAaBDHvAi9ta0q/948QPz+co6SsGi6aQMYRg==", - "license": "Apache-2.0", - "dependencies": { - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-net": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bare-net/-/bare-net-2.0.1.tgz", - "integrity": "sha512-klzDKbZFzfguS6054Yv+8/e9rhggYVAg8I8svCWCtYkMwdlh3hz1SGCut6Q7d7iqV60YtuG3Y8957DqLcKuEJQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.2.2", - "bare-pipe": "^4.0.0", - "bare-stream": "^2.0.0", - "bare-tcp": "^2.0.0" - } - }, - "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", - "license": "Apache-2.0", - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-pipe": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bare-pipe/-/bare-pipe-4.0.6.tgz", - "integrity": "sha512-S9kpDJq74gkceynfRqXCaED119k2jF2us4U9xZnTLX0GEduWQY29MNTpAMAf/ucEailW9SPLjGLzbfPCONz3Lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-process": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/bare-semver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.1.tgz", - "integrity": "sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg==", - "license": "Apache-2.0" - }, - "node_modules/bare-signals": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bare-signals/-/bare-signals-4.0.3.tgz", - "integrity": "sha512-xIy8ILawd3xepmpsYYMzPgMWsZm471Onw6jcqoitczuH6kNqN0NVkFKcEztpdq82MMfcsyo7xqLQIgmeoB05rg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.3", - "bare-os": "^3.3.1" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", - "license": "Apache-2.0", - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/bare-subprocess": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bare-subprocess/-/bare-subprocess-5.1.0.tgz", - "integrity": "sha512-uUQdB2Ks+eUXPwYDGKQ2ZX1hV8AoS1fs5ep33GkMIAv21f4zy/soV9IejjlbSqJbnmDLC44RyitRzSAbIed1ng==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.5.4", - "bare-os": "^3.0.1", - "bare-pipe": "^4.0.0" - }, - "engines": { - "bare": ">=1.7.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-tcp": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/bare-tcp/-/bare-tcp-2.0.7.tgz", - "integrity": "sha512-3I91sieZw1WYZDK5nNf/XVBBne0hhsIJsLqy29o/IRITBidK0rJP9ZsKOLlYSiop1PFj7VNWd1ZQtgbQh9wnCg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-dns": "^2.0.4", - "bare-events": "^2.5.4", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-tls": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bare-tls/-/bare-tls-2.1.1.tgz", - "integrity": "sha512-56xUcgn8iEAP0Sje7OgZSwari176L0nNQaEBbpsdCVytxz10dmRY0thSFNOXpCPWIhtuH1AMK0ZzK0l0IxcxPQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-net": "^2.0.1", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-tty": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/bare-tty/-/bare-tty-5.0.2.tgz", - "integrity": "sha512-xOHwI7zZl2Opm7Rul5O+okE32j7O14feJhgovJX2EghtQ2IWVfiC1oH0DmFruMvKthvhZY/Lpg8n5SVBaZhV1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.2.0", - "bare-signals": "^4.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-type": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.0.6.tgz", - "integrity": "sha512-6QFeIIp1d06xU9BjDPkl8+QeHil3TKSDpIKUid6bQzwYvxFOnMVhAifRS3J0fvWirEMlWmqxDDKjHW8RPe6C3Q==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-url": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/bare-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.3.0.tgz", - "integrity": "sha512-s0wQMUw4tjaW5x+mknXPcmmX25v4D27+gqo5IavCpsjjgloA7ta7aXtt/tqlR4ADEUZe4ANzQiLRXrzuMxHdcA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^2.0.0", - "bare-encoding": "^1.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-v8-to-istanbul": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-v8-to-istanbul/-/bare-v8-to-istanbul-1.0.0.tgz", - "integrity": "sha512-5xm9ykzWrk7ntC0Ps2tnNwlFlEAMb3Rk0w/WlwJ/A1xboTQKa9f+NO/31PXB5LspMaz9Qv2pnIwiiHWEnk+kXQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "assert": "npm:bare-assert", - "bare-assert": "^1.0.2", - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.0", - "bare-url": "^2.1.5", - "bare-utils": "^1.2.0", - "fs": "npm:bare-fs", - "path": "npm:bare-path", - "process": "npm:bare-process", - "url": "npm:bare-url", - "util": "npm:bare-utils", - "v8-to-istanbul": "^9.3.0", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-ws": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bare-ws/-/bare-ws-2.0.3.tgz", - "integrity": "sha512-be3cX68FQKln0jnsuyh1eK60EIM8/hYPFNHYZykN1fS3shWhzdKFo+I4gtZloSzS4aIKtVpi7+M0by8Q9y/NSA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-crypto": "^1.2.0", - "bare-events": "^2.3.1", - "bare-http1": "^4.0.0", - "bare-https": "^2.0.0", - "bare-stream": "^2.1.2" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-url": { - "optional": true - } - } - }, - "node_modules/big-sparse-array": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/big-sparse-array/-/big-sparse-array-1.0.3.tgz", - "integrity": "sha512-6RjV/3mSZORlMdpUaQ6rUSpG637cZm0//E54YYGtQg1c1O+AbZP8UTdJ/TchsDZcTVLmyWZcseBfp2HBeXUXOQ==", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brittle": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/brittle/-/brittle-3.17.0.tgz", - "integrity": "sha512-9IJXmSkJozjsDH/WepQ7f1pY4PgZt34QjMcKhUxYwF+q8E7x6197NU+4/NTNmF5Jw5J1ruF73IIj3gEu5ck8+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.0", - "bare-cov": "^1.1.0", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-subprocess": "^5.0.0", - "error-stack-parser": "^2.1.4", - "globbie": "^1.0.2", - "paparam": "^1.6.2", - "same-object": "^1.0.2", - "test-tmp": "^1.4.0", - "tmatch": "^5.0.0" - }, - "bin": { - "brittle": "bin/node.js", - "brittle-bare": "bin/bare.js", - "brittle-node": "bin/node.js", - "brittle-pear": "bin/pear.js" - } - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/builtins/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/codecs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/codecs/-/codecs-3.1.0.tgz", - "integrity": "sha512-Dqx8NwvBvnMeuPQdVKy/XEF71igjR5apxBvCGeV0pP1tXadOiaLvDTXt7xh+/5wI1ASB195mXQGJbw3Ml4YDWQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.3" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/compact-encoding": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/compact-encoding/-/compact-encoding-2.16.1.tgz", - "integrity": "sha512-vP39X4nwtesmZucaAxDg4wnudOoaJTSR+fikzi8VLVxbwLmcWXf3t0LxY0n2H1AMpdoQZ08lmUf4GY3XiDPnMQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.3.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-coupler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/core-coupler/-/core-coupler-2.0.0.tgz", - "integrity": "sha512-FJuEvsdCMwx0Wu+gFQ49rGCi8LCXh8kizHsCQwkdgPZFEFiF0z2HDvyIs+fPt5wMIfU2UVFDuN+dtpfbIxJE6g==", - "license": "Apache-2.0", - "dependencies": { - "safety-catch": "^1.0.2" - } - }, - "node_modules/corestore": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/corestore/-/corestore-7.4.5.tgz", - "integrity": "sha512-eCQO1lH7CcpAJbprl5V6VkmvlT9j3uhD/JT2UqPh2UQ/C9RqmgqOLRcGmGKrBx7LgEuUz+fHc0Tl9rjRSVTVrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.7", - "hypercore": "^11.0.0", - "hypercore-crypto": "^3.4.2", - "hypercore-errors": "^1.4.0", - "hypercore-id-encoding": "^1.3.0", - "ready-resource": "^1.1.1", - "sodium-universal": "^5.0.1", - "which-runtime": "^1.2.1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debounceify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debounceify/-/debounceify-1.1.0.tgz", - "integrity": "sha512-eKuHDVfJVg+u/0nPy8P+fhnLgbyuTgVxuCRrS/R7EpDSMMkBDgSes41MJtSAY1F1hcqfHz3Zy/qpqHHIp/EhdA==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/device-file": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/device-file/-/device-file-1.2.6.tgz", - "integrity": "sha512-gHH0lYHWvxjDOstkLji6ExtmYUPtpgICdkEeOuKkodiz111e7rPZP1WWwHlEmvA/gDNQl3KJkbWJ8YDidu3C4A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.7", - "bare-fs": "^4.0.1", - "fs-native-extensions": "^1.4.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", - "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peerDependencies": { - "eslint": "^8.8.0", - "eslint-plugin-react": "^7.28.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-loop-delay": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/event-loop-delay/-/event-loop-delay-1.1.2.tgz", - "integrity": "sha512-FyRV0Sz97ZRzdAueQp/E9ziBf6fLl+mDRuLFkbXejRYLhzaDCiLQ0Tir0XbxZE7Dx0iuabHbLv+G0BzbDGy+8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "bare-hrtime": "^2.0.9" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-tree": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/flat-tree/-/flat-tree-1.12.1.tgz", - "integrity": "sha512-GchQ+onbnw5QaqsGbpcV6c8etAd396X/EVdDxutQMkGapB0lRvV9heIXS6ZffQVCse0hm2hBpK7GJz2Zp7qiMg==", - "license": "MIT" - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fs": { - "name": "bare-fs", - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", - "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/fs-native-extensions": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.4.2.tgz", - "integrity": "sha512-QoQqYdHJTtfHUUO/ylyKSrt3dtPDyXCAjzveqCxPsV3hpIMNt455ua470+iTKJ8lFZ94pLC6Dv1TBbwOFLiV5w==", - "license": "Apache-2.0", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generate-object-property": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-2.0.0.tgz", - "integrity": "sha512-KwuURPyqn2Mz8DdV29pJwQu0Y7tcsbkULr82eeOcY/ZllFK6I9Wm8dsRByIu7CKWlFi9BdW1b3mcXMp/kQBQsw==", - "license": "MIT", - "dependencies": { - "is-property": "^1.0.0" - } - }, - "node_modules/generate-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/generate-string/-/generate-string-1.0.1.tgz", - "integrity": "sha512-IfTY0dKZM43ACyGvXkbG7De7WY7MxTS5VO6Juhe8oJKpCmrYYXoqp/cJMskkpi0k9H8wuXq0H+eI898/BCqvXg==", - "license": "MIT" - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globbie": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globbie/-/globbie-1.0.3.tgz", - "integrity": "sha512-hcryJmKcftf82xfBWTWxuUITWIIoYO3ec104V17SMHGFl6VLbm1d1Ju9LX9L+jyJTwICpemX/dmPI/HGYoKr1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "picomatch": "^4.0.2" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hyperbee": { - "version": "2.24.3", - "resolved": "https://registry.npmjs.org/hyperbee/-/hyperbee-2.24.3.tgz", - "integrity": "sha512-LUGij+Hj8vaSPY0dgyO5aQfpmeS5IXcB+BlWyyUYec9UXdN9aue7EsK2Gc7o3a+WYgSlmW/tJhGRuOa8HN7BYg==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.0", - "codecs": "^3.0.0", - "debounceify": "^1.0.0", - "hypercore-errors": "^1.0.0", - "mutexify": "^1.4.0", - "protocol-buffers-encodings": "^1.2.0", - "rache": "^1.0.0", - "ready-resource": "^1.0.0", - "safety-catch": "^1.0.2", - "streamx": "^2.12.4", - "unslab": "^1.2.0" - } - }, - "node_modules/hypercore": { - "version": "11.11.2", - "resolved": "https://registry.npmjs.org/hypercore/-/hypercore-11.11.2.tgz", - "integrity": "sha512-KbbMcdxPkuCukDD9zUmKLoAX2wReyCGBHA+wjJ7lcs/UJQl1XzYnkOFlDdp+xV9wHc7WncxIgwsjgbwhxKiuBw==", - "license": "MIT", - "dependencies": { - "@hyperswarm/secret-stream": "^6.0.0", - "b4a": "^1.1.0", - "bare-events": "^2.2.0", - "big-sparse-array": "^1.0.3", - "compact-encoding": "^2.11.0", - "fast-fifo": "^1.3.0", - "flat-tree": "^1.9.0", - "hypercore-crypto": "^3.2.1", - "hypercore-errors": "^1.2.0", - "hypercore-id-encoding": "^1.2.0", - "hypercore-storage": "^1.0.0", - "is-options": "^1.0.1", - "nanoassert": "^2.0.0", - "protomux": "^3.5.0", - "quickbit-universal": "^2.2.0", - "random-array-iterator": "^1.0.0", - "safety-catch": "^1.0.1", - "sodium-universal": "^5.0.1", - "streamx": "^2.12.4", - "unslab": "^1.3.0", - "z32": "^1.0.0" - } - }, - "node_modules/hypercore-crypto": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/hypercore-crypto/-/hypercore-crypto-3.6.1.tgz", - "integrity": "sha512-ltIz2uDwy9pO/ZGTvqcjzyBkvt6O4cVm4r/nNxh0GFs/RbQtqP/i4wCvLEdmU7ptgtnw7fI67WYD1aHPuv4OVA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.6", - "compact-encoding": "^2.15.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/hypercore-errors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/hypercore-errors/-/hypercore-errors-1.4.0.tgz", - "integrity": "sha512-WoaT467lNbDCglxisthpoC1mpBOH/CoM5IADPQm6BvPzZqXca1S6N1uoflLnZOIre9klCr1SdUnLgDWXLalJ7A==", - "license": "Apache-2.0" - }, - "node_modules/hypercore-id-encoding": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hypercore-id-encoding/-/hypercore-id-encoding-1.3.0.tgz", - "integrity": "sha512-W6sHdGo5h7LXEsoWfKf/KfuROZmZRQDlGqJF2EPHW+noCK66Vvr0+zE6cL0vqQi18s0kQPeN7Sq3QyR0Ytc2VQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.5.3", - "z32": "^1.0.0" - } - }, - "node_modules/hypercore-storage": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/hypercore-storage/-/hypercore-storage-1.14.0.tgz", - "integrity": "sha512-IkCRvDaBbZqR0nORvhtVN2h5NtJ/Of+dmxCy7tGzjW51cLrouBCJVBNJ005D6yIiEEvTMFogxPZIA+ZTFEP80Q==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.7", - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0", - "compact-encoding": "^2.16.0", - "device-file": "^1.2.2", - "flat-tree": "^1.12.1", - "hypercore-crypto": "^3.4.2", - "hyperschema": "^1.7.0", - "index-encoder": "^3.3.2", - "resolve-reject-promise": "^1.0.0", - "rocksdb-native": "^3.1.1", - "scope-lock": "^1.2.4", - "streamx": "^2.21.1" - } - }, - "node_modules/hyperschema": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/hyperschema/-/hyperschema-1.13.0.tgz", - "integrity": "sha512-cNbe7Ay2hSbQ1X/Yf1ch9kPPnKU78dq9LT7ppBE8l8LGZ0IKzIbVOWNIJYOXPr97hWHaoTvxIqhr5wb/R80Gmw==", - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.0.1", - "compact-encoding": "^2.15.0", - "generate-object-property": "^2.0.0", - "generate-string": "^1.0.1" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/index-encoder": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/index-encoder/-/index-encoder-3.4.0.tgz", - "integrity": "sha512-k3+ENtseFYI9ZPOIZzVH8LlONUvXAcd4jvCPo+Nob/T/2t5R5Rfh8XiFXBG++gHHuVby7HBDp/3YbyEmE481cg==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-options": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-options/-/is-options-1.0.2.tgz", - "integrity": "sha512-u+Ai74c8Q74aS8BuHwPdI1jptGOT1FQXgCq8/zv0xRuE+wRgSMEJLj8lVO8Zp9BeGb29BXY6AsNPinfqjkr7Fg==", - "license": "MIT", - "dependencies": { - "b4a": "^1.1.1" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mutexify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz", - "integrity": "sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==", - "license": "MIT", - "dependencies": { - "queue-tick": "^1.0.0" - } - }, - "node_modules/nanoassert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", - "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==", - "license": "ISC" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/noise-curve-ed": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/noise-curve-ed/-/noise-curve-ed-2.1.0.tgz", - "integrity": "sha512-zAzJx+VwZM3w6EA1hTmDhJfvAnCeBQn/1FAeZ0LtGxCcCtlAK/uJXQVF/eDVUOaAZ286lHlx77WJ+qj9SmsRRg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/noise-handshake": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.1.0.tgz", - "integrity": "sha512-ZHt2+mOXTvjtaWS2h/JPvQjmknfKrEld2xdSsRYWXnYiJmK/N+dtxrDVSt1cr9wGAlhH7Ek43lIZNsL5bVeX9A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/paparam": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/paparam/-/paparam-1.8.5.tgz", - "integrity": "sha512-LLsGJwf3bJuf32jAfQYIMbt7oXuY2TXG3aWVHGXrE8o9cwGYIj+r/4J/VBn5Sgo+mA5lXzNnfqPqfBGPBIvjvQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path": { - "name": "bare-path", - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process": { - "name": "bare-process", - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protocol-buffers-encodings": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-encodings/-/protocol-buffers-encodings-1.2.0.tgz", - "integrity": "sha512-daeNPuKh1NlLD1uDfbLpD+xyUTc07nEtfHwmBZmt/vH0B7VOM+JOCOpDcx9ZRpqHjAiIkGqyTDi+wfGSl17R9w==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.0", - "signed-varint": "^2.0.1", - "varint": "5.0.0" - } - }, - "node_modules/protomux": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/protomux/-/protomux-3.10.1.tgz", - "integrity": "sha512-jgBqx8ZyaBWea/DFG4eOu1scOaeBwcnagiRC1XFVrjeGt7oAb0Pk5udPpBUpJ4DJBRjra50jD6YcZiQQTRqaaA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1", - "compact-encoding": "^2.5.1", - "queue-tick": "^1.0.0", - "safety-catch": "^1.0.1", - "unslab": "^1.3.0" - } - }, - "node_modules/protomux-wakeup": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/protomux-wakeup/-/protomux-wakeup-2.5.0.tgz", - "integrity": "sha512-+l+OfUwfRj1zdQxYC3dI9voqflRuWKZcyqatsbEgfIXWxmPhCCd63Dql0NCG5YpBH5ERWhfOQ/2G8PKpM9H+fw==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.7", - "hypercore-crypto": "^3.5.0", - "hyperschema": "^1.10.4", - "protomux": "^3.10.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "license": "MIT" - }, - "node_modules/quickbit-native": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/quickbit-native/-/quickbit-native-2.4.6.tgz", - "integrity": "sha512-GXYG0vTLTknHs57qYpNzJO0e2dJpNFyIYZTnKTnOFG5mTUacJIRe7GssnyGJ273zG0iids0D0IOgmZUr0pLENg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "require-addon": "^1.1.0" - } - }, - "node_modules/quickbit-universal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/quickbit-universal/-/quickbit-universal-2.2.0.tgz", - "integrity": "sha512-w02i1R8n7+6pEKTud8DfF8zbFY9o7RtPlUc3jWbtCkDKvhbx/AvV7oNnz4/TcmsPGpSJS+fq5Ud6RH6+YPvSGg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.6.0", - "simdle-universal": "^1.1.0" - }, - "optionalDependencies": { - "quickbit-native": "^2.2.0" - } - }, - "node_modules/rache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rache/-/rache-1.0.0.tgz", - "integrity": "sha512-e0k0g0w/8jOCB+7YqCIlOa+OJ38k0wrYS4x18pMSmqOvLKoyhmMhmQyCcvfY6VaP8D75cqkEnlakXs+RYYLqNg==", - "license": "Apache-2.0" - }, - "node_modules/random-array-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-array-iterator/-/random-array-iterator-1.0.0.tgz", - "integrity": "sha512-u7xCM93XqKEvPTP6xZp2ehttcAemKnh73oKNf1FvzuVCfpt6dILDt1Kxl1LeBjm2iNIeR49VGFhy4Iz3yOun+Q==", - "license": "MIT" - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ready-resource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ready-resource/-/ready-resource-1.1.2.tgz", - "integrity": "sha512-BN2Yfg/avHpozP+XSo+gsjHQ0AejnfbCJeJT4eamAHSf7dgYmNNWsZqTt5IEc06mjlLao+c2jlTbZvpZyRtRNQ==", - "license": "MIT", - "dependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/refcounter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/refcounter/-/refcounter-1.0.0.tgz", - "integrity": "sha512-1WosVzUy0kPUaPMEtlNDwm99UsteALIhXXR8rerELoa63WkYIXAl0hxgwPFrIYBRWZPGUyekQ04FRtPJ7dHk9w==", - "license": "Apache-2.0" - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-addon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.1.0.tgz", - "integrity": "sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg==", - "license": "Apache-2.0", - "dependencies": { - "bare-addon-resolve": "^1.3.0", - "bare-url": "^2.1.0" - }, - "engines": { - "bare": ">=1.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-reject-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-reject-promise/-/resolve-reject-promise-1.1.0.tgz", - "integrity": "sha512-LWsTOA91AqzBTjSGgX79Tc130pwcBK6xjpJEO+qRT5IKZ6bGnHKcc8QL3upUBcWuU8OTIDzKK2VNSwmmlqvAVg==", - "license": "MIT" - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rocksdb-native": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/rocksdb-native/-/rocksdb-native-3.6.4.tgz", - "integrity": "sha512-aeFHk3AjSwhWaUW3lQepyKus1NH0NXHXX4IAZDSYAcX+CacXyESFbxQlrMz9qsoRuX4QDYoBbawOU5jcXVbRZw==", - "license": "Apache-2.0", - "dependencies": { - "compact-encoding": "^2.15.0", - "ready-resource": "^1.0.0", - "refcounter": "^1.0.0", - "require-addon": "^1.0.2", - "resolve-reject-promise": "^1.1.0", - "streamx": "^2.16.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safety-catch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/safety-catch/-/safety-catch-1.0.2.tgz", - "integrity": "sha512-C1UYVZ4dtbBxEtvOcpjBaaD27nP8MlvyAQEp2fOTOEe6pfUpk1cDUxij6BR1jZup6rSyUTaBBplK7LanskrULA==", - "license": "MIT" - }, - "node_modules/same-data": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/same-data/-/same-data-1.0.0.tgz", - "integrity": "sha512-Eqn7N2yV+aKMlUHTRqUwYG1Iv0cJqjlvLKj/GoP5PozJn361QaOYX14+v87r7NqQUZC22noP/LfLrSQiPwAygw==", - "dev": true, - "license": "MIT" - }, - "node_modules/same-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/same-object/-/same-object-1.0.2.tgz", - "integrity": "sha512-csHWhvUsLbIOHDM/nP+KHWM+BLPsIzWkFa8HbzaI0G7BqKXgx+7FJpKTGgLXyz5amfdY2OVBcmXTqYOMEk04og==", - "dev": true, - "license": "MIT" - }, - "node_modules/scope-lock": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/scope-lock/-/scope-lock-1.2.4.tgz", - "integrity": "sha512-BpSd8VCuCxW9ZitcdIC/vjs3gMaP9bRBL5nkHcyfX2VrS52n13/rHuBA2xJ/S/4DPuRdAO/Bk8pWd8eD/gHCIA==", - "license": "Apache-2.0" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-promise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/signal-promise/-/signal-promise-1.0.3.tgz", - "integrity": "sha512-WBgv0UnIq2C+Aeh0/n+IRpP6967eIx9WpynTUoiW3isPpfe1zu2LJzyfXdo9Tgef8yR/sGjcMvoUXD7EYdiz+g==", - "license": "MIT" - }, - "node_modules/signed-varint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", - "integrity": "sha512-abgDPg1106vuZZOvw7cFwdCABddfJRz5akcCcchzTbhyhYnsG31y4AlZEgp315T7W3nQq5P4xeOm186ZiPVFzw==", - "license": "MIT", - "dependencies": { - "varint": "~5.0.0" - } - }, - "node_modules/simdle-native": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/simdle-native/-/simdle-native-1.3.6.tgz", - "integrity": "sha512-WXb3AUnMVOgfMbrOlz0SVpL8pMpC9K2WX/wJ7k5alqza77tO/4vCF7pUtuiPJdMxEBIsX30joKRY7JWRJ4yHqQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "b4a": "^1.6.0", - "require-addon": "^1.1.0" - } - }, - "node_modules/simdle-universal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/simdle-universal/-/simdle-universal-1.1.2.tgz", - "integrity": "sha512-3n3w1bs+uwgHKQjt6arez83EywNlhZzYvNOhvAASTl/8KqNIcqr6aHyGt3JRlfuUC7iB0tomJRPlJ2cRGIpBzA==", - "license": "ISC", - "dependencies": { - "b4a": "^1.6.0" - }, - "optionalDependencies": { - "simdle-native": "^1.1.1" - } - }, - "node_modules/sodium-native": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.6.tgz", - "integrity": "sha512-lKSVfjJ867gb3LrnOZ0nuVxZ19//k/YhhYKVWQg4fklZ85YKtDHTxmEuWuk/s62IoiDbKC/DV50pcSd9tgaVew==", - "license": "MIT", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/sodium-secretstream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sodium-secretstream/-/sodium-secretstream-1.2.0.tgz", - "integrity": "sha512-q/DbraNFXm1KfCiiZvapmz5UC3OlpirYFIvBK2MhGaOFSb3gRyk8OXTi17UI9SGfshQNCpsVvlopogbzZNyW6Q==", - "license": "MIT", - "dependencies": { - "b4a": "^1.1.1", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT" - }, - "node_modules/standard": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.2.tgz", - "integrity": "sha512-WLm12WoXveKkvnPnPnaFUUHuOB2cUdAsJ4AiGHL2G0UNMrcRAWY2WriQaV8IQ3oRmYr0AWUbLNr94ekYFAHOrA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "eslint": "^8.41.0", - "eslint-config-standard": "17.1.0", - "eslint-config-standard-jsx": "^11.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.36.1", - "standard-engine": "^15.1.0", - "version-guard": "^1.1.1" - }, - "bin": { - "standard": "bin/cmd.cjs" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", - "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.6", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sub-encoder": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/sub-encoder/-/sub-encoder-2.1.3.tgz", - "integrity": "sha512-Xxx04ygZo/1J3yHvaSA6VhDmiSaBQkw/PmO3YnnYFXle+tfOGToC6FcDpIfMztWZXJzuKG14b/57HMkiL58C6A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.0", - "codecs": "^3.1.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/task-backoff": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/task-backoff/-/task-backoff-1.0.1.tgz", - "integrity": "sha512-lCzoVzp+5aFQdH0k/eOLdT7J/Mu7Tzkw4PniC/1cnVxKTOcZXqtuNBNgCDs7VqQECn2XtAQxZpoBU4dWIsPItw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "event-loop-delay": "^1.1.2", - "resolve-reject-promise": "^1.1.0" - } - }, - "node_modules/test-tmp": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/test-tmp/-/test-tmp-1.4.0.tgz", - "integrity": "sha512-GVggxGg+jXqP2Wbju50JVLo+9E+nIOPPyWqgr63EbOnNItIKu1cEbJpTWAJeflnyGqXOtcMI7ijHRp88GUkfDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bare-fs": "^4.0.1", - "bare-os": "^3.3.0", - "bare-path": "^3.0.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/timeout-refresh": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-2.0.1.tgz", - "integrity": "sha512-SVqEcMZBsZF9mA78rjzCrYrUs37LMJk3ShZ851ygZYW1cMeIjs9mL57KO6Iv5mmjSQnOe/29/VAfGXo+oRCiVw==", - "license": "MIT" - }, - "node_modules/tiny-buffer-map": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tiny-buffer-map/-/tiny-buffer-map-1.1.1.tgz", - "integrity": "sha512-C1eDw6ks9CmkDbWVCPHobuixPTkxGa7IDERlaVk98dv4tOUdz42o3haHBr0uhNxbj0gczBTVIyS2uQsu+1vc2Q==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.0" - } - }, - "node_modules/tmatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-5.0.0.tgz", - "integrity": "sha512-Ib9OtBkpHn07tXP04SlN1SYRxFgTk6wSM2EBmjjxug4u5RXPRVLkdFJSS1PmrQidaSB8Lru9nRtViQBsbxzE5Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uncaughts": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/uncaughts/-/uncaughts-1.1.1.tgz", - "integrity": "sha512-UuD2hCFnjsoGRsMH2m6cpbRPwUSdCeQw9xjf6gIV48l43Y5lvdrWm4FvBDS8UXtsjx6D6K6BvJy3rloUAiZRYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "which-runtime": "^1.2.1" - } - }, - "node_modules/unslab": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/unslab/-/unslab-1.3.0.tgz", - "integrity": "sha512-YATkfKAFj47kTzmiQrWXMyRvaVrHsW6MEALa4bm+FhiA2YG4oira+Z3DXN6LrYOYn2Y8eO94Lwl9DOHjs1FpoQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.6" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "name": "bare-url", - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/util": { - "name": "bare-utils", - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.3.0.tgz", - "integrity": "sha512-s0wQMUw4tjaW5x+mknXPcmmX25v4D27+gqo5IavCpsjjgloA7ta7aXtt/tqlR4ADEUZe4ANzQiLRXrzuMxHdcA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^2.0.0", - "bare-encoding": "^1.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/varint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", - "integrity": "sha512-gC13b/bWrqQoKY2EmROCZ+AR0jitc6DnDGaQ6Ls9QpKmuSgJB1eQ7H3KETtQm7qSdMWMKCmsshyCmUwMLh3OAA==", - "license": "MIT" - }, - "node_modules/version-guard": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.3.tgz", - "integrity": "sha512-JwPr6erhX53EWH/HCSzfy1tTFrtPXUe927wdM1jqBBeYp1OM+qPHjWbsvv6pIBduqdgxxS+ScfG7S28pzyr2DQ==", - "dev": true, - "license": "0BSD", - "engines": { - "node": ">=0.10.48" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-runtime": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.3.0.tgz", - "integrity": "sha512-mQrEBUe15PdEuJvrBlvy3tika6sxQrkblI7JQ9kXeg8Lcby9FwmKvAYrCT3wLh91k6ltost7AVM7qYhjC8N0Zg==", - "license": "Apache-2.0" - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/z32": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/z32/-/z32-1.1.0.tgz", - "integrity": "sha512-1WUHy+VS6d0HPNspDxvLssBbeQjXMjSnpv0vH82vRAUfg847NmX3OXozp/hRP5jPhxBbrVzrgvAt+UsGNzRFQQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.5.3" - } - } - } -} diff --git a/pkgs/by-name/au/autobase/package.nix b/pkgs/by-name/au/autobase/package.nix deleted file mode 100644 index 19e980c209ee3..0000000000000 --- a/pkgs/by-name/au/autobase/package.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - lib, - buildNpmPackage, - fetchFromGitHub, - nix-update-script, -}: - -buildNpmPackage (finalAttrs: { - pname = "autobase"; - version = "7.20.0"; - - src = fetchFromGitHub { - owner = "holepunchto"; - repo = "autobase"; - tag = "v${finalAttrs.version}"; - hash = "sha256-SEeCbNja5BIgpQh0q0LKo452JClKQe6do5YHwRRBMcs="; - }; - - npmDepsHash = "sha256-H9Xy1VD7WQvi0+86v6CMcmc0L3mB6KuSCtgQSF4AlkY="; - - dontNpmBuild = true; - - # ERROR: Missing package-lock.json from src - # https://github.com/holepunchto/autobase/issues/315 - # Copy vendored package-lock.json to src via postPatch - postPatch = '' - cp ${./package-lock.json} ./package-lock.json - ''; - - passthru.updateScript = nix-update-script { - extraArgs = [ - "--generate-lockfile" - ]; - }; - - meta = { - description = "Concise multiwriter for data structures with Hypercore"; - homepage = "https://github.com/holepunchto/autobase"; - license = lib.licenses.mit; - maintainers = [ ]; - teams = with lib.teams; [ ngi ]; - }; -}) diff --git a/pkgs/by-name/ba/bacula/0001-console-include-termios.h-explicitly.patch b/pkgs/by-name/ba/bacula/0001-console-include-termios.h-explicitly.patch new file mode 100644 index 0000000000000..e4fbca7dff618 --- /dev/null +++ b/pkgs/by-name/ba/bacula/0001-console-include-termios.h-explicitly.patch @@ -0,0 +1,24 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Philip Taron +Date: Wed, 7 Jan 2026 17:30:51 -0800 +Subject: [PATCH] console: include termios.h explicitly + +ncurses 6.6 moved the termios.h include inside #ifdef NCURSES_INTERNALS +in term.h, so applications can no longer rely on term.h to provide +termios symbols. Include termios.h explicitly. +--- + src/console/conio.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/console/conio.c b/src/console/conio.c +index 2bea887..7ac61d6 100755 +--- a/src/console/conio.c ++++ b/src/console/conio.c +@@ -56,6 +56,7 @@ + + #include + #include ++#include + + #ifdef HAVE_SUN_OS + #ifndef _TERM_H diff --git a/pkgs/by-name/ba/bacula/package.nix b/pkgs/by-name/ba/bacula/package.nix index 73e550554a97f..ee2bbb35e0989 100644 --- a/pkgs/by-name/ba/bacula/package.nix +++ b/pkgs/by-name/ba/bacula/package.nix @@ -21,6 +21,12 @@ stdenv.mkDerivation rec { sha256 = "sha256-KUr9PS651bccPQ6I/fGetRO/24Q7KNNcBVLkrgYoJ6E="; }; + patches = [ + # ncurses 6.6 moved the termios.h include inside #ifdef NCURSES_INTERNALS in term.h, + # so applications can no longer rely on term.h to provide termios symbols. + ./0001-console-include-termios.h-explicitly.patch + ]; + # libtool.m4 only matches macOS 10.* postPatch = lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) '' substituteInPlace configure \ diff --git a/pkgs/by-name/bi/bison/package.nix b/pkgs/by-name/bi/bison/package.nix index f52f48ce51a3e..e5c6eef040ae4 100644 --- a/pkgs/by-name/bi/bison/package.nix +++ b/pkgs/by-name/bi/bison/package.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { pname = "bison"; - version = "3.8.2"; + version = "3.8.2"; # Check the note above doInstallCheck before updating. src = fetchurl { url = "mirror://gnu/${pname}/${pname}-${version}.tar.gz"; @@ -46,7 +46,9 @@ stdenv.mkDerivation rec { # Normal check and install check largely execute the same test suite doCheck = false; - doInstallCheck = true; + # Tests were disabled on LLVM/Darwin due to https://github.com/NixOS/nixpkgs/issues/463659 + # TODO: enable doInstallCheck unconditionally when fixed upstream. + doInstallCheck = !stdenv.cc.isClang; meta = { homepage = "https://www.gnu.org/software/bison/"; diff --git a/pkgs/by-name/bm/bmake/package.nix b/pkgs/by-name/bm/bmake/package.nix index a762ea5eadda3..8c7c6841cf3e4 100644 --- a/pkgs/by-name/bm/bmake/package.nix +++ b/pkgs/by-name/bm/bmake/package.nix @@ -10,11 +10,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "bmake"; - version = "20250804"; + version = "20251111"; src = fetchurl { url = "https://www.crufty.net/ftp/pub/sjg/bmake-${finalAttrs.version}.tar.gz"; - hash = "sha256-C0kDdkSyUyBtLnENRuMoWeYt/ixsjnIYrkOfLvUN6K0="; + hash = "sha256-RaP4UVZ3uo85M9ghP0u2EaXDyIOAvi5GIi+kRwlQYGA="; }; patches = [ diff --git a/pkgs/by-name/bp/bpftools/package.nix b/pkgs/by-name/bp/bpftools/package.nix index 0f2f39951445e..b0ddef31f9f32 100644 --- a/pkgs/by-name/bp/bpftools/package.nix +++ b/pkgs/by-name/bp/bpftools/package.nix @@ -8,6 +8,7 @@ libbfd, libbfd_2_38, elfutils, + openssl, readline, zlib, python3, @@ -50,6 +51,7 @@ stdenv.mkDerivation rec { ++ [ elfutils zlib + openssl readline ]; diff --git a/pkgs/by-name/br/brotli/package.nix b/pkgs/by-name/br/brotli/package.nix index a28ac9846ec1f..7320d148d9934 100644 --- a/pkgs/by-name/br/brotli/package.nix +++ b/pkgs/by-name/br/brotli/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchurl, cmake, python3Packages, staticOnly ? stdenv.hostPlatform.isStatic, @@ -20,6 +21,15 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-kl8ZHt71v17QR2bDP+ad/5uixf+GStEPLQ5ooFoC5i8="; }; + patches = [ + # Fixes build on LoongArch64 & IA64 + # https://github.com/google/brotli/commit/e230f474b87134e8c6c85b630084c612057f253e + (fetchurl { + url = "https://github.com/google/brotli/commit/e230f474b87134e8c6c85b630084c612057f253e.patch"; + hash = "sha256-QERl8RHJz7tFr++hZIYwdj1/ogPpjArC+ia8S/bWxKk="; + }) + ]; + nativeBuildInputs = [ cmake ]; cmakeFlags = lib.optional staticOnly "-DBUILD_SHARED_LIBS=OFF"; diff --git a/pkgs/by-name/c-/c-ares/fix-link-local-dns-servers.patch b/pkgs/by-name/c-/c-ares/fix-link-local-dns-servers.patch deleted file mode 100644 index 07a5b5f2084c5..0000000000000 --- a/pkgs/by-name/c-/c-ares/fix-link-local-dns-servers.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0fbeb87f65ad9e9e6cead10d778291db71489f34 Mon Sep 17 00:00:00 2001 -From: iucoen <68678186+iucoen@users.noreply.github.com> -Date: Thu, 5 Jun 2025 20:08:43 -0700 -Subject: [PATCH] Fix IPv6 link-local nameservers in /etc/resolv.conf (#997) - -There are two issues that broke link-local nameservers in resolv.conf -1. channel->sock_funcs needs to be initialized before -ares_init_by_sysconfig() -2. The aif_nametoindex and aif_indextoname function pointers were not -initlized at all. ---- - src/lib/ares_init.c | 4 ++-- - src/lib/ares_set_socket_functions.c | 2 ++ - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/lib/ares_init.c b/src/lib/ares_init.c -index ae78262a11..ce6181833c 100644 ---- a/src/lib/ares_init.c -+++ b/src/lib/ares_init.c -@@ -271,6 +271,8 @@ int ares_init_options(ares_channel_t **channelptr, - goto done; - } - -+ ares_set_socket_functions_def(channel); -+ - /* Initialize Server List */ - channel->servers = - ares_slist_create(channel->rand_state, server_sort_cb, server_destroy_cb); -@@ -346,8 +348,6 @@ int ares_init_options(ares_channel_t **channelptr, - goto done; - } - -- ares_set_socket_functions_def(channel); -- - /* Initialize the event thread */ - if (channel->optmask & ARES_OPT_EVENT_THREAD) { - ares_event_thread_t *e = NULL; -diff --git a/src/lib/ares_set_socket_functions.c b/src/lib/ares_set_socket_functions.c -index cfe434327d..9994e81df5 100644 ---- a/src/lib/ares_set_socket_functions.c -+++ b/src/lib/ares_set_socket_functions.c -@@ -127,6 +127,8 @@ ares_status_t - channel->sock_funcs.asendto = funcs->asendto; - channel->sock_funcs.agetsockname = funcs->agetsockname; - channel->sock_funcs.abind = funcs->abind; -+ channel->sock_funcs.aif_nametoindex = funcs->aif_nametoindex; -+ channel->sock_funcs.aif_indextoname = funcs->aif_indextoname; - } - - /* Implement newer versions here ...*/ \ No newline at end of file diff --git a/pkgs/by-name/c-/c-ares/package.nix b/pkgs/by-name/c-/c-ares/package.nix index 46c34d0db20a7..4e7a3b2e97ba0 100644 --- a/pkgs/by-name/c-/c-ares/package.nix +++ b/pkgs/by-name/c-/c-ares/package.nix @@ -18,19 +18,14 @@ stdenv.mkDerivation rec { pname = "c-ares"; - version = "1.34.5"; + version = "1.34.6"; src = fetchurl { # Note: tag name varies in some versions, e.g. v1.30.0, c-ares-1_17_0. url = "https://github.com/c-ares/c-ares/releases/download/v${version}/c-ares-${version}.tar.gz"; - hash = "sha256-fZNXkOmvCBwlxJX9E8LPzaR5KYNBjpY1jvbnMg7gY0Y="; + hash = "sha256-kS3XzDs+innFL9f7nA9Ozwqqc+Re/aiAJmotbia4TvU="; }; - patches = [ - # Fix being unable to use Ipv6 link-local DNS servers. See: https://github.com/c-ares/c-ares/pull/997. - ./fix-link-local-dns-servers.patch - ]; - outputs = [ "out" "dev" diff --git a/pkgs/by-name/ca/cacert/package.nix b/pkgs/by-name/ca/cacert/package.nix index e92080542defb..ccfb2b777d96d 100644 --- a/pkgs/by-name/ca/cacert/package.nix +++ b/pkgs/by-name/ca/cacert/package.nix @@ -23,7 +23,7 @@ let lib.concatStringsSep "\n\n" extraCertificateStrings ); - srcVersion = "3.117"; + srcVersion = "3.119.1"; version = if nssOverride != null then nssOverride.version else srcVersion; meta = { homepage = "https://curl.haxx.se/docs/caextract.html"; @@ -47,7 +47,7 @@ let owner = "nss-dev"; repo = "nss"; rev = "NSS_${lib.replaceStrings [ "." ] [ "_" ] version}_RTM"; - hash = "sha256-sAs0TiV3TK/WtgHvEjl2KFAgebyWZYmcRcmxjpn2AME="; + hash = "sha256-GxLTqHcVWGiFezcwdctXJ8k9wqizVJPHyLBPZzphLro="; }; dontBuild = true; diff --git a/pkgs/by-name/ca/cargo-c/package.nix b/pkgs/by-name/ca/cargo-c/package.nix index 557b21f65d0e9..ce4cb935bcbc1 100644 --- a/pkgs/by-name/ca/cargo-c/package.nix +++ b/pkgs/by-name/ca/cargo-c/package.nix @@ -12,19 +12,19 @@ let # this version may need to be updated along with package version - cargoVersion = "0.90.0"; + cargoVersion = "0.93.0"; in rustPlatform.buildRustPackage rec { pname = "cargo-c"; - version = "0.10.15"; + version = "0.10.19"; src = fetchCrate { inherit pname; version = "${version}+cargo-${cargoVersion}"; - hash = "sha256-szqDSHGihE+Oj8L3EBlC5XH4kSBYOptd0Xtk3MhXooQ="; + hash = "sha256-PrBmB+0tmU2MAUnRr+wx4g9hu0Y9i6WfR8U89bwiLVY="; }; - cargoHash = "sha256-36ygs/EhCktG1jmBnP9c7EgnfcWnGrqqcW3qAw+Yfy4="; + cargoHash = "sha256-EM/vAfW/ucOfK/XmAQn9Zk75eFb7pp8uZoByKbALCyo="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ca/catch2_3/package.nix b/pkgs/by-name/ca/catch2_3/package.nix index 586fa9f3d9edb..fb439afc929b8 100644 --- a/pkgs/by-name/ca/catch2_3/package.nix +++ b/pkgs/by-name/ca/catch2_3/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation rec { pname = "catch2"; - version = "3.11.0"; + version = "3.12.0"; src = fetchFromGitHub { owner = "catchorg"; repo = "Catch2"; tag = "v${version}"; - hash = "sha256-7Dx7PhtRwkbo8vHF57sAns2fQZ442D3cMyCt25RvzJc="; + hash = "sha256-M1n2jWiA0hNCNqO3zSXRANiaMVCebn7/VU/4FfcjoA8="; }; patches = lib.optionals stdenv.cc.isClang [ diff --git a/pkgs/by-name/ch/chuck/darwin-limits.patch b/pkgs/by-name/ch/chuck/darwin-limits.patch deleted file mode 100644 index dc98a17269131..0000000000000 --- a/pkgs/by-name/ch/chuck/darwin-limits.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/src/core/util_string.cpp 2014-10-27 22:52:11.875981552 +0100 -+++ b/src/core/util_string.cpp 2014-10-27 22:54:18.613001994 +0100 -@@ -40,6 +40,10 @@ - #include - #endif // __PLATFORM_LINUX__ - -+#ifdef __PLATFORM_MACOSX__ -+#include -+#endif // __PLATFORM_MACOSX__ -+ - #include - using namespace std; - diff --git a/pkgs/by-name/cm/cmocka/package.nix b/pkgs/by-name/cm/cmocka/package.nix index e3a74a440395a..baeea60c9fcad 100644 --- a/pkgs/by-name/cm/cmocka/package.nix +++ b/pkgs/by-name/cm/cmocka/package.nix @@ -7,11 +7,11 @@ stdenv.mkDerivation rec { pname = "cmocka"; - version = "1.1.8"; + version = "2.0.1"; src = fetchurl { url = "https://cmocka.org/files/${lib.versions.majorMinor version}/cmocka-${version}.tar.xz"; - hash = "sha256-WENbVYdm1/THKboWO9867Di+07x2batoTjUm7Qqnx4A="; + hash = "sha256-PzUzOCuimrOr9cT0snt50WXw31HqWH3nSbEbaLQBkYA="; }; patches = [ diff --git a/pkgs/by-name/co/corestore/package-lock.json b/pkgs/by-name/co/corestore/package-lock.json deleted file mode 100644 index 0e2f2d6548c23..0000000000000 --- a/pkgs/by-name/co/corestore/package-lock.json +++ /dev/null @@ -1,5112 +0,0 @@ -{ - "name": "corestore", - "version": "7.4.5", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "corestore", - "version": "7.4.5", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.7", - "hypercore": "^11.0.0", - "hypercore-crypto": "^3.4.2", - "hypercore-errors": "^1.4.0", - "hypercore-id-encoding": "^1.3.0", - "ready-resource": "^1.1.1", - "sodium-universal": "^5.0.1", - "which-runtime": "^1.2.1" - }, - "devDependencies": { - "brittle": "^3.7.0", - "rache": "^1.0.0", - "standard": "^17.1.2", - "test-tmp": "^1.3.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hyperswarm/secret-stream": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.8.1.tgz", - "integrity": "sha512-F3fr8CKB6za9Ac7ifjgAe07qnnesl5kS0MtLsyKxA1Og8E+FZykdwLpgoLjnEa7G6E1L56lASLr42E4kd20sog==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^4.0.0", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^5.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assert": { - "name": "bare-assert", - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bare-addon-resolve": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.9.4.tgz", - "integrity": "sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg==", - "license": "Apache-2.0", - "dependencies": { - "bare-module-resolve": "^1.10.0", - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-ansi-escapes": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/bare-ansi-escapes/-/bare-ansi-escapes-2.2.3.tgz", - "integrity": "sha512-02ES4/E2RbrtZSnHJ9LntBhYkLA6lPpSEeP8iqS3MccBIVhVBlEmruF1I7HZqx5Q8aiTeYfQVeqmrU9YO2yYoQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.5" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-cov": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bare-cov/-/bare-cov-1.1.1.tgz", - "integrity": "sha512-YP0QjpKznC55rn3fc3hOPjcegm1eu/ZHVwS+t1c48O48bWMspWzBY+9a6fI5sb/PGwqv47W4clpnmcy7vKhYrQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-inspector": "^4.0.1", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-url": "^2.1.5", - "bare-v8-to-istanbul": "v1.0.0", - "picomatch": "^4.0.2", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-crypto": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/bare-crypto/-/bare-crypto-1.7.0.tgz", - "integrity": "sha512-HPoNUQitmlihHzBotCG5huj0zRpVabrsRfoq6yCB+Y1HRftXmMJPMfVKxELijaMCMSJtlvw6ytotE88lwf6qdg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.3" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-debug-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bare-debug-log/-/bare-debug-log-2.0.0.tgz", - "integrity": "sha512-Vi42PkMQsNV9PUpx2Gl1hikshx5O9FzMJ6o9Nnopseg7qLBBK7Nl31d0RHcfwLEAfmcPApytpc0ZFfq68u22FQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-dns": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bare-dns/-/bare-dns-2.1.2.tgz", - "integrity": "sha512-0GCTZBzL3vJ/xfupMnmKGHYNMrFBpX3sK4I2nTXgH2BAwifvyXVCEKFVypAwyqQJ85tYuTel52nD6us7CqfHXQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-encoding": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-encoding/-/bare-encoding-1.0.0.tgz", - "integrity": "sha512-9T5CSCaytaIWZpFWx9LQLJ6/z/m2Slnan9tQBKmOvoq/UtPBbOKT/B2fo29Xhi4X1FFtNx8DFdtrFgqm2yse/Q==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-env": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-env/-/bare-env-3.0.0.tgz", - "integrity": "sha512-0u964P5ZLAxTi+lW4Kjp7YRJQ5gZr9ycYOtjLxsSrupgMz3sn5Z9n4SH/JIifHwvadsf1brA2JAjP+9IOWwTiw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-events": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", - "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", - "license": "Apache-2.0" - }, - "node_modules/bare-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-format/-/bare-format-1.0.1.tgz", - "integrity": "sha512-1oS+LZrWK6tnYnvNSHDGljc2MPunRxwhpFriuCgzNF+oklrnwmBKD91tS0yt+jpl2j3UgcSDzBIMiVTvLs9A8w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", - "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-hrtime": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/bare-hrtime/-/bare-hrtime-2.0.11.tgz", - "integrity": "sha512-Mnb2rnGRSHzNHQwFrK8VVqD8Oob/CiSsBlgZGKQ1xTj25GPI19sXHjUPzrkHOU1DaoVj1ig1VO7rZGaYOfXPaw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-http1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bare-http1/-/bare-http1-4.0.2.tgz", - "integrity": "sha512-6Jns5oBG9LFz/U2PuFk2LHQbQ1ZuUgPyuahfbNikPL/HcjpSGdSl0xMiN3Qt852Xm1sLBsTGxl0OoM2cVCYzNQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.3.0", - "bare-tcp": "^2.0.0" - } - }, - "node_modules/bare-https": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bare-https/-/bare-https-2.0.0.tgz", - "integrity": "sha512-qmjNZmYQ4nn+k3CLlxVyOqWYamdBPqE7psR5/lFWG39fskAR4C2h29d1Ka5BeWOGDAWhXImFIwZUxwCE/7xeLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-http1": "^4.0.0", - "bare-tcp": "^2.0.0", - "bare-tls": "^2.0.0" - } - }, - "node_modules/bare-inspect": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bare-inspect/-/bare-inspect-3.1.1.tgz", - "integrity": "sha512-DOqRxa/qYZS+P3+3yVdroeixaqc6+gwiSUHntS5294Iykhe9ySzlfoRvSDM//xUHad8sQ59IOhyCoedFluvC6g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-ansi-escapes": "^2.1.0", - "bare-type": "^1.0.0" - }, - "engines": { - "bare": ">=1.18.0" - } - }, - "node_modules/bare-inspector": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bare-inspector/-/bare-inspector-4.0.1.tgz", - "integrity": "sha512-MZGIci2OFzwDNWlY/JUmEVtK/0xa+mbdggOB0jSI0WYkQpyxaiD4q/8xZ42k4kOoZNLKpYMI31wmllm6jS5w9g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.1.0", - "bare-http1": "^4.0.0", - "bare-stream": "^2.0.0", - "bare-url": "^2.0.0", - "bare-ws": "^2.0.0" - }, - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-module-resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.11.1.tgz", - "integrity": "sha512-DCxeT9i8sTs3vUMA3w321OX/oXtNEu5EjObQOnTmCdNp5RXHBAvAaBDHvAi9ta0q/948QPz+co6SsGi6aQMYRg==", - "license": "Apache-2.0", - "dependencies": { - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-net": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bare-net/-/bare-net-2.0.1.tgz", - "integrity": "sha512-klzDKbZFzfguS6054Yv+8/e9rhggYVAg8I8svCWCtYkMwdlh3hz1SGCut6Q7d7iqV60YtuG3Y8957DqLcKuEJQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.2.2", - "bare-pipe": "^4.0.0", - "bare-stream": "^2.0.0", - "bare-tcp": "^2.0.0" - } - }, - "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", - "license": "Apache-2.0", - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-pipe": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bare-pipe/-/bare-pipe-4.0.6.tgz", - "integrity": "sha512-S9kpDJq74gkceynfRqXCaED119k2jF2us4U9xZnTLX0GEduWQY29MNTpAMAf/ucEailW9SPLjGLzbfPCONz3Lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-process": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/bare-semver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.1.tgz", - "integrity": "sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg==", - "license": "Apache-2.0" - }, - "node_modules/bare-signals": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bare-signals/-/bare-signals-4.0.3.tgz", - "integrity": "sha512-xIy8ILawd3xepmpsYYMzPgMWsZm471Onw6jcqoitczuH6kNqN0NVkFKcEztpdq82MMfcsyo7xqLQIgmeoB05rg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.3", - "bare-os": "^3.3.1" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", - "license": "Apache-2.0", - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/bare-subprocess": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bare-subprocess/-/bare-subprocess-5.1.0.tgz", - "integrity": "sha512-uUQdB2Ks+eUXPwYDGKQ2ZX1hV8AoS1fs5ep33GkMIAv21f4zy/soV9IejjlbSqJbnmDLC44RyitRzSAbIed1ng==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.5.4", - "bare-os": "^3.0.1", - "bare-pipe": "^4.0.0" - }, - "engines": { - "bare": ">=1.7.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-tcp": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/bare-tcp/-/bare-tcp-2.0.7.tgz", - "integrity": "sha512-3I91sieZw1WYZDK5nNf/XVBBne0hhsIJsLqy29o/IRITBidK0rJP9ZsKOLlYSiop1PFj7VNWd1ZQtgbQh9wnCg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-dns": "^2.0.4", - "bare-events": "^2.5.4", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-tls": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bare-tls/-/bare-tls-2.1.1.tgz", - "integrity": "sha512-56xUcgn8iEAP0Sje7OgZSwari176L0nNQaEBbpsdCVytxz10dmRY0thSFNOXpCPWIhtuH1AMK0ZzK0l0IxcxPQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-net": "^2.0.1", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-tty": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/bare-tty/-/bare-tty-5.0.2.tgz", - "integrity": "sha512-xOHwI7zZl2Opm7Rul5O+okE32j7O14feJhgovJX2EghtQ2IWVfiC1oH0DmFruMvKthvhZY/Lpg8n5SVBaZhV1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.2.0", - "bare-signals": "^4.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-type": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.0.6.tgz", - "integrity": "sha512-6QFeIIp1d06xU9BjDPkl8+QeHil3TKSDpIKUid6bQzwYvxFOnMVhAifRS3J0fvWirEMlWmqxDDKjHW8RPe6C3Q==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-url": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/bare-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.3.0.tgz", - "integrity": "sha512-s0wQMUw4tjaW5x+mknXPcmmX25v4D27+gqo5IavCpsjjgloA7ta7aXtt/tqlR4ADEUZe4ANzQiLRXrzuMxHdcA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^2.0.0", - "bare-encoding": "^1.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-v8-to-istanbul": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-v8-to-istanbul/-/bare-v8-to-istanbul-1.0.0.tgz", - "integrity": "sha512-5xm9ykzWrk7ntC0Ps2tnNwlFlEAMb3Rk0w/WlwJ/A1xboTQKa9f+NO/31PXB5LspMaz9Qv2pnIwiiHWEnk+kXQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "assert": "npm:bare-assert", - "bare-assert": "^1.0.2", - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.0", - "bare-url": "^2.1.5", - "bare-utils": "^1.2.0", - "fs": "npm:bare-fs", - "path": "npm:bare-path", - "process": "npm:bare-process", - "url": "npm:bare-url", - "util": "npm:bare-utils", - "v8-to-istanbul": "^9.3.0", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-ws": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bare-ws/-/bare-ws-2.0.3.tgz", - "integrity": "sha512-be3cX68FQKln0jnsuyh1eK60EIM8/hYPFNHYZykN1fS3shWhzdKFo+I4gtZloSzS4aIKtVpi7+M0by8Q9y/NSA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-crypto": "^1.2.0", - "bare-events": "^2.3.1", - "bare-http1": "^4.0.0", - "bare-https": "^2.0.0", - "bare-stream": "^2.1.2" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-url": { - "optional": true - } - } - }, - "node_modules/big-sparse-array": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/big-sparse-array/-/big-sparse-array-1.0.3.tgz", - "integrity": "sha512-6RjV/3mSZORlMdpUaQ6rUSpG637cZm0//E54YYGtQg1c1O+AbZP8UTdJ/TchsDZcTVLmyWZcseBfp2HBeXUXOQ==", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brittle": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/brittle/-/brittle-3.17.0.tgz", - "integrity": "sha512-9IJXmSkJozjsDH/WepQ7f1pY4PgZt34QjMcKhUxYwF+q8E7x6197NU+4/NTNmF5Jw5J1ruF73IIj3gEu5ck8+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.0", - "bare-cov": "^1.1.0", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-subprocess": "^5.0.0", - "error-stack-parser": "^2.1.4", - "globbie": "^1.0.2", - "paparam": "^1.6.2", - "same-object": "^1.0.2", - "test-tmp": "^1.4.0", - "tmatch": "^5.0.0" - }, - "bin": { - "brittle": "bin/node.js", - "brittle-bare": "bin/bare.js", - "brittle-node": "bin/node.js", - "brittle-pear": "bin/pear.js" - } - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/builtins/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/compact-encoding": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/compact-encoding/-/compact-encoding-2.16.1.tgz", - "integrity": "sha512-vP39X4nwtesmZucaAxDg4wnudOoaJTSR+fikzi8VLVxbwLmcWXf3t0LxY0n2H1AMpdoQZ08lmUf4GY3XiDPnMQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.3.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/device-file": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/device-file/-/device-file-1.2.6.tgz", - "integrity": "sha512-gHH0lYHWvxjDOstkLji6ExtmYUPtpgICdkEeOuKkodiz111e7rPZP1WWwHlEmvA/gDNQl3KJkbWJ8YDidu3C4A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.7", - "bare-fs": "^4.0.1", - "fs-native-extensions": "^1.4.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", - "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peerDependencies": { - "eslint": "^8.8.0", - "eslint-plugin-react": "^7.28.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-tree": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/flat-tree/-/flat-tree-1.12.1.tgz", - "integrity": "sha512-GchQ+onbnw5QaqsGbpcV6c8etAd396X/EVdDxutQMkGapB0lRvV9heIXS6ZffQVCse0hm2hBpK7GJz2Zp7qiMg==", - "license": "MIT" - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fs": { - "name": "bare-fs", - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", - "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/fs-native-extensions": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.4.2.tgz", - "integrity": "sha512-QoQqYdHJTtfHUUO/ylyKSrt3dtPDyXCAjzveqCxPsV3hpIMNt455ua470+iTKJ8lFZ94pLC6Dv1TBbwOFLiV5w==", - "license": "Apache-2.0", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generate-object-property": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-2.0.0.tgz", - "integrity": "sha512-KwuURPyqn2Mz8DdV29pJwQu0Y7tcsbkULr82eeOcY/ZllFK6I9Wm8dsRByIu7CKWlFi9BdW1b3mcXMp/kQBQsw==", - "license": "MIT", - "dependencies": { - "is-property": "^1.0.0" - } - }, - "node_modules/generate-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/generate-string/-/generate-string-1.0.1.tgz", - "integrity": "sha512-IfTY0dKZM43ACyGvXkbG7De7WY7MxTS5VO6Juhe8oJKpCmrYYXoqp/cJMskkpi0k9H8wuXq0H+eI898/BCqvXg==", - "license": "MIT" - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globbie": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globbie/-/globbie-1.0.3.tgz", - "integrity": "sha512-hcryJmKcftf82xfBWTWxuUITWIIoYO3ec104V17SMHGFl6VLbm1d1Ju9LX9L+jyJTwICpemX/dmPI/HGYoKr1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "picomatch": "^4.0.2" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hypercore": { - "version": "11.11.2", - "resolved": "https://registry.npmjs.org/hypercore/-/hypercore-11.11.2.tgz", - "integrity": "sha512-KbbMcdxPkuCukDD9zUmKLoAX2wReyCGBHA+wjJ7lcs/UJQl1XzYnkOFlDdp+xV9wHc7WncxIgwsjgbwhxKiuBw==", - "license": "MIT", - "dependencies": { - "@hyperswarm/secret-stream": "^6.0.0", - "b4a": "^1.1.0", - "bare-events": "^2.2.0", - "big-sparse-array": "^1.0.3", - "compact-encoding": "^2.11.0", - "fast-fifo": "^1.3.0", - "flat-tree": "^1.9.0", - "hypercore-crypto": "^3.2.1", - "hypercore-errors": "^1.2.0", - "hypercore-id-encoding": "^1.2.0", - "hypercore-storage": "^1.0.0", - "is-options": "^1.0.1", - "nanoassert": "^2.0.0", - "protomux": "^3.5.0", - "quickbit-universal": "^2.2.0", - "random-array-iterator": "^1.0.0", - "safety-catch": "^1.0.1", - "sodium-universal": "^5.0.1", - "streamx": "^2.12.4", - "unslab": "^1.3.0", - "z32": "^1.0.0" - } - }, - "node_modules/hypercore-crypto": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/hypercore-crypto/-/hypercore-crypto-3.6.1.tgz", - "integrity": "sha512-ltIz2uDwy9pO/ZGTvqcjzyBkvt6O4cVm4r/nNxh0GFs/RbQtqP/i4wCvLEdmU7ptgtnw7fI67WYD1aHPuv4OVA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.6", - "compact-encoding": "^2.15.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/hypercore-errors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/hypercore-errors/-/hypercore-errors-1.4.0.tgz", - "integrity": "sha512-WoaT467lNbDCglxisthpoC1mpBOH/CoM5IADPQm6BvPzZqXca1S6N1uoflLnZOIre9klCr1SdUnLgDWXLalJ7A==", - "license": "Apache-2.0" - }, - "node_modules/hypercore-id-encoding": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hypercore-id-encoding/-/hypercore-id-encoding-1.3.0.tgz", - "integrity": "sha512-W6sHdGo5h7LXEsoWfKf/KfuROZmZRQDlGqJF2EPHW+noCK66Vvr0+zE6cL0vqQi18s0kQPeN7Sq3QyR0Ytc2VQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.5.3", - "z32": "^1.0.0" - } - }, - "node_modules/hypercore-storage": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/hypercore-storage/-/hypercore-storage-1.14.0.tgz", - "integrity": "sha512-IkCRvDaBbZqR0nORvhtVN2h5NtJ/Of+dmxCy7tGzjW51cLrouBCJVBNJ005D6yIiEEvTMFogxPZIA+ZTFEP80Q==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.7", - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0", - "compact-encoding": "^2.16.0", - "device-file": "^1.2.2", - "flat-tree": "^1.12.1", - "hypercore-crypto": "^3.4.2", - "hyperschema": "^1.7.0", - "index-encoder": "^3.3.2", - "resolve-reject-promise": "^1.0.0", - "rocksdb-native": "^3.1.1", - "scope-lock": "^1.2.4", - "streamx": "^2.21.1" - } - }, - "node_modules/hyperschema": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/hyperschema/-/hyperschema-1.13.0.tgz", - "integrity": "sha512-cNbe7Ay2hSbQ1X/Yf1ch9kPPnKU78dq9LT7ppBE8l8LGZ0IKzIbVOWNIJYOXPr97hWHaoTvxIqhr5wb/R80Gmw==", - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.0.1", - "compact-encoding": "^2.15.0", - "generate-object-property": "^2.0.0", - "generate-string": "^1.0.1" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/index-encoder": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/index-encoder/-/index-encoder-3.4.0.tgz", - "integrity": "sha512-k3+ENtseFYI9ZPOIZzVH8LlONUvXAcd4jvCPo+Nob/T/2t5R5Rfh8XiFXBG++gHHuVby7HBDp/3YbyEmE481cg==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-options": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-options/-/is-options-1.0.2.tgz", - "integrity": "sha512-u+Ai74c8Q74aS8BuHwPdI1jptGOT1FQXgCq8/zv0xRuE+wRgSMEJLj8lVO8Zp9BeGb29BXY6AsNPinfqjkr7Fg==", - "license": "MIT", - "dependencies": { - "b4a": "^1.1.1" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoassert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", - "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==", - "license": "ISC" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/noise-curve-ed": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/noise-curve-ed/-/noise-curve-ed-2.1.0.tgz", - "integrity": "sha512-zAzJx+VwZM3w6EA1hTmDhJfvAnCeBQn/1FAeZ0LtGxCcCtlAK/uJXQVF/eDVUOaAZ286lHlx77WJ+qj9SmsRRg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/noise-handshake": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.1.0.tgz", - "integrity": "sha512-ZHt2+mOXTvjtaWS2h/JPvQjmknfKrEld2xdSsRYWXnYiJmK/N+dtxrDVSt1cr9wGAlhH7Ek43lIZNsL5bVeX9A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/paparam": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/paparam/-/paparam-1.8.5.tgz", - "integrity": "sha512-LLsGJwf3bJuf32jAfQYIMbt7oXuY2TXG3aWVHGXrE8o9cwGYIj+r/4J/VBn5Sgo+mA5lXzNnfqPqfBGPBIvjvQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path": { - "name": "bare-path", - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process": { - "name": "bare-process", - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protomux": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/protomux/-/protomux-3.10.1.tgz", - "integrity": "sha512-jgBqx8ZyaBWea/DFG4eOu1scOaeBwcnagiRC1XFVrjeGt7oAb0Pk5udPpBUpJ4DJBRjra50jD6YcZiQQTRqaaA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1", - "compact-encoding": "^2.5.1", - "queue-tick": "^1.0.0", - "safety-catch": "^1.0.1", - "unslab": "^1.3.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "license": "MIT" - }, - "node_modules/quickbit-native": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/quickbit-native/-/quickbit-native-2.4.6.tgz", - "integrity": "sha512-GXYG0vTLTknHs57qYpNzJO0e2dJpNFyIYZTnKTnOFG5mTUacJIRe7GssnyGJ273zG0iids0D0IOgmZUr0pLENg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "require-addon": "^1.1.0" - } - }, - "node_modules/quickbit-universal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/quickbit-universal/-/quickbit-universal-2.2.0.tgz", - "integrity": "sha512-w02i1R8n7+6pEKTud8DfF8zbFY9o7RtPlUc3jWbtCkDKvhbx/AvV7oNnz4/TcmsPGpSJS+fq5Ud6RH6+YPvSGg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.6.0", - "simdle-universal": "^1.1.0" - }, - "optionalDependencies": { - "quickbit-native": "^2.2.0" - } - }, - "node_modules/rache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rache/-/rache-1.0.0.tgz", - "integrity": "sha512-e0k0g0w/8jOCB+7YqCIlOa+OJ38k0wrYS4x18pMSmqOvLKoyhmMhmQyCcvfY6VaP8D75cqkEnlakXs+RYYLqNg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/random-array-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-array-iterator/-/random-array-iterator-1.0.0.tgz", - "integrity": "sha512-u7xCM93XqKEvPTP6xZp2ehttcAemKnh73oKNf1FvzuVCfpt6dILDt1Kxl1LeBjm2iNIeR49VGFhy4Iz3yOun+Q==", - "license": "MIT" - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ready-resource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ready-resource/-/ready-resource-1.1.2.tgz", - "integrity": "sha512-BN2Yfg/avHpozP+XSo+gsjHQ0AejnfbCJeJT4eamAHSf7dgYmNNWsZqTt5IEc06mjlLao+c2jlTbZvpZyRtRNQ==", - "license": "MIT", - "dependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/refcounter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/refcounter/-/refcounter-1.0.0.tgz", - "integrity": "sha512-1WosVzUy0kPUaPMEtlNDwm99UsteALIhXXR8rerELoa63WkYIXAl0hxgwPFrIYBRWZPGUyekQ04FRtPJ7dHk9w==", - "license": "Apache-2.0" - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-addon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.1.0.tgz", - "integrity": "sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg==", - "license": "Apache-2.0", - "dependencies": { - "bare-addon-resolve": "^1.3.0", - "bare-url": "^2.1.0" - }, - "engines": { - "bare": ">=1.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-reject-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-reject-promise/-/resolve-reject-promise-1.1.0.tgz", - "integrity": "sha512-LWsTOA91AqzBTjSGgX79Tc130pwcBK6xjpJEO+qRT5IKZ6bGnHKcc8QL3upUBcWuU8OTIDzKK2VNSwmmlqvAVg==", - "license": "MIT" - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rocksdb-native": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/rocksdb-native/-/rocksdb-native-3.6.4.tgz", - "integrity": "sha512-aeFHk3AjSwhWaUW3lQepyKus1NH0NXHXX4IAZDSYAcX+CacXyESFbxQlrMz9qsoRuX4QDYoBbawOU5jcXVbRZw==", - "license": "Apache-2.0", - "dependencies": { - "compact-encoding": "^2.15.0", - "ready-resource": "^1.0.0", - "refcounter": "^1.0.0", - "require-addon": "^1.0.2", - "resolve-reject-promise": "^1.1.0", - "streamx": "^2.16.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safety-catch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/safety-catch/-/safety-catch-1.0.2.tgz", - "integrity": "sha512-C1UYVZ4dtbBxEtvOcpjBaaD27nP8MlvyAQEp2fOTOEe6pfUpk1cDUxij6BR1jZup6rSyUTaBBplK7LanskrULA==", - "license": "MIT" - }, - "node_modules/same-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/same-object/-/same-object-1.0.2.tgz", - "integrity": "sha512-csHWhvUsLbIOHDM/nP+KHWM+BLPsIzWkFa8HbzaI0G7BqKXgx+7FJpKTGgLXyz5amfdY2OVBcmXTqYOMEk04og==", - "dev": true, - "license": "MIT" - }, - "node_modules/scope-lock": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/scope-lock/-/scope-lock-1.2.4.tgz", - "integrity": "sha512-BpSd8VCuCxW9ZitcdIC/vjs3gMaP9bRBL5nkHcyfX2VrS52n13/rHuBA2xJ/S/4DPuRdAO/Bk8pWd8eD/gHCIA==", - "license": "Apache-2.0" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simdle-native": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/simdle-native/-/simdle-native-1.3.6.tgz", - "integrity": "sha512-WXb3AUnMVOgfMbrOlz0SVpL8pMpC9K2WX/wJ7k5alqza77tO/4vCF7pUtuiPJdMxEBIsX30joKRY7JWRJ4yHqQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "b4a": "^1.6.0", - "require-addon": "^1.1.0" - } - }, - "node_modules/simdle-universal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/simdle-universal/-/simdle-universal-1.1.2.tgz", - "integrity": "sha512-3n3w1bs+uwgHKQjt6arez83EywNlhZzYvNOhvAASTl/8KqNIcqr6aHyGt3JRlfuUC7iB0tomJRPlJ2cRGIpBzA==", - "license": "ISC", - "dependencies": { - "b4a": "^1.6.0" - }, - "optionalDependencies": { - "simdle-native": "^1.1.1" - } - }, - "node_modules/sodium-native": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.6.tgz", - "integrity": "sha512-lKSVfjJ867gb3LrnOZ0nuVxZ19//k/YhhYKVWQg4fklZ85YKtDHTxmEuWuk/s62IoiDbKC/DV50pcSd9tgaVew==", - "license": "MIT", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/sodium-secretstream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sodium-secretstream/-/sodium-secretstream-1.2.0.tgz", - "integrity": "sha512-q/DbraNFXm1KfCiiZvapmz5UC3OlpirYFIvBK2MhGaOFSb3gRyk8OXTi17UI9SGfshQNCpsVvlopogbzZNyW6Q==", - "license": "MIT", - "dependencies": { - "b4a": "^1.1.1", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT" - }, - "node_modules/standard": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.2.tgz", - "integrity": "sha512-WLm12WoXveKkvnPnPnaFUUHuOB2cUdAsJ4AiGHL2G0UNMrcRAWY2WriQaV8IQ3oRmYr0AWUbLNr94ekYFAHOrA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "eslint": "^8.41.0", - "eslint-config-standard": "17.1.0", - "eslint-config-standard-jsx": "^11.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.36.1", - "standard-engine": "^15.1.0", - "version-guard": "^1.1.1" - }, - "bin": { - "standard": "bin/cmd.cjs" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", - "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.6", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-tmp": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/test-tmp/-/test-tmp-1.4.0.tgz", - "integrity": "sha512-GVggxGg+jXqP2Wbju50JVLo+9E+nIOPPyWqgr63EbOnNItIKu1cEbJpTWAJeflnyGqXOtcMI7ijHRp88GUkfDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bare-fs": "^4.0.1", - "bare-os": "^3.3.0", - "bare-path": "^3.0.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/timeout-refresh": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-2.0.1.tgz", - "integrity": "sha512-SVqEcMZBsZF9mA78rjzCrYrUs37LMJk3ShZ851ygZYW1cMeIjs9mL57KO6Iv5mmjSQnOe/29/VAfGXo+oRCiVw==", - "license": "MIT" - }, - "node_modules/tmatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-5.0.0.tgz", - "integrity": "sha512-Ib9OtBkpHn07tXP04SlN1SYRxFgTk6wSM2EBmjjxug4u5RXPRVLkdFJSS1PmrQidaSB8Lru9nRtViQBsbxzE5Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unslab": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/unslab/-/unslab-1.3.0.tgz", - "integrity": "sha512-YATkfKAFj47kTzmiQrWXMyRvaVrHsW6MEALa4bm+FhiA2YG4oira+Z3DXN6LrYOYn2Y8eO94Lwl9DOHjs1FpoQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.6" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "name": "bare-url", - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/util": { - "name": "bare-utils", - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.3.0.tgz", - "integrity": "sha512-s0wQMUw4tjaW5x+mknXPcmmX25v4D27+gqo5IavCpsjjgloA7ta7aXtt/tqlR4ADEUZe4ANzQiLRXrzuMxHdcA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^2.0.0", - "bare-encoding": "^1.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/version-guard": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.3.tgz", - "integrity": "sha512-JwPr6erhX53EWH/HCSzfy1tTFrtPXUe927wdM1jqBBeYp1OM+qPHjWbsvv6pIBduqdgxxS+ScfG7S28pzyr2DQ==", - "dev": true, - "license": "0BSD", - "engines": { - "node": ">=0.10.48" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-runtime": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.3.0.tgz", - "integrity": "sha512-mQrEBUe15PdEuJvrBlvy3tika6sxQrkblI7JQ9kXeg8Lcby9FwmKvAYrCT3wLh91k6ltost7AVM7qYhjC8N0Zg==", - "license": "Apache-2.0" - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/z32": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/z32/-/z32-1.1.0.tgz", - "integrity": "sha512-1WUHy+VS6d0HPNspDxvLssBbeQjXMjSnpv0vH82vRAUfg847NmX3OXozp/hRP5jPhxBbrVzrgvAt+UsGNzRFQQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.5.3" - } - } - } -} diff --git a/pkgs/by-name/co/corestore/package.nix b/pkgs/by-name/co/corestore/package.nix deleted file mode 100644 index d8824357fb81e..0000000000000 --- a/pkgs/by-name/co/corestore/package.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - lib, - buildNpmPackage, - fetchFromGitHub, - nix-update-script, -}: - -buildNpmPackage (finalAttrs: { - pname = "corestore"; - version = "7.4.7"; - - src = fetchFromGitHub { - owner = "holepunchto"; - repo = "corestore"; - tag = "v${finalAttrs.version}"; - hash = "sha256-/UhiuEBoAJc1U2/VYVWLyEGcXUndH0QmM++FN4KCTHo="; - }; - - npmDepsHash = "sha256-hQYvQeTwlIWImdNhgpnJjDC24Fx4G0eST7tptWV1Xgw="; - - dontNpmBuild = true; - - # ERROR: Missing package-lock.json from src - # Upstream doesn't want to maintain a lockfile in their repo: https://github.com/holepunchto/corestore/issues/119 - # Copy vendored package-lock.json to src via postPatch - postPatch = '' - cp ${./package-lock.json} ./package-lock.json - ''; - - passthru.updateScript = nix-update-script { }; - - meta = { - description = "Simple corestore that wraps a random-access-storage module"; - homepage = "https://github.com/holepunchto/corestore"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ themadbit ]; - teams = with lib.teams; [ ngi ]; - }; -}) diff --git a/pkgs/by-name/cr/cryptsetup/package.nix b/pkgs/by-name/cr/cryptsetup/package.nix index 5ab95727c063e..d310ed986ca9b 100644 --- a/pkgs/by-name/cr/cryptsetup/package.nix +++ b/pkgs/by-name/cr/cryptsetup/package.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "cryptsetup"; - version = "2.8.1"; + version = "2.8.3"; outputs = [ "bin" @@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: { url = "mirror://kernel/linux/utils/cryptsetup/v${lib.versions.majorMinor finalAttrs.version}/" + "cryptsetup-${finalAttrs.version}.tar.xz"; - hash = "sha256-LDN563ZZfcq1CRFEmwE+JpfEv/zHFtu/DZsOj7u0b7Q="; + hash = "sha256-SoojuLnRoyUEUuQKzq1EIaA+RaOJVK0FlWNPQmaqgA8="; }; patches = [ diff --git a/pkgs/by-name/da/dav1d/package.nix b/pkgs/by-name/da/dav1d/package.nix index 443ad79790c50..0a8711977f47c 100644 --- a/pkgs/by-name/da/dav1d/package.nix +++ b/pkgs/by-name/da/dav1d/package.nix @@ -27,13 +27,13 @@ assert useVulkan -> withExamples; stdenv.mkDerivation rec { pname = "dav1d"; - version = "1.5.2"; + version = "1.5.3"; src = fetchFromGitHub { owner = "videolan"; repo = "dav1d"; rev = version; - hash = "sha256-rxRO5EWjrOUsCYXd2rDDhfcEZbfSuMfjujRAHTqUYhI="; + hash = "sha256-E3da/LJ8HNy1osExmupovqnL8JHgVNzPUCG5F8TJKXQ="; }; outputs = [ diff --git a/pkgs/by-name/ed/ed/package.nix b/pkgs/by-name/ed/ed/package.nix index 25db42bca9c71..8e23c84e54fa0 100644 --- a/pkgs/by-name/ed/ed/package.nix +++ b/pkgs/by-name/ed/ed/package.nix @@ -14,11 +14,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "ed"; - version = "1.22.2"; + version = "1.22.4"; src = fetchurl { url = "mirror://gnu/ed/ed-${finalAttrs.version}.tar.lz"; - hash = "sha256-9Y0VJCBW4Vr3bxPzTGDYkPoqLVywq++RwRXk2DeU/+M="; + hash = "sha256-mHoeu7rT/PY6H/qeKbP6feBlFQ0WMZ0KSd2LV/gdPpw="; }; nativeBuildInputs = [ lzip ]; diff --git a/pkgs/by-name/er/eresi/package.nix b/pkgs/by-name/er/eresi/package.nix index 817cd76ef6642..0e2783ad658b0 100644 --- a/pkgs/by-name/er/eresi/package.nix +++ b/pkgs/by-name/er/eresi/package.nix @@ -84,6 +84,8 @@ stdenv.mkDerivation rec { installTargets = lib.singleton "install" ++ lib.optional stdenv.hostPlatform.is64bit "install64"; + __structuredAttrs = true; + meta = { description = "ERESI Reverse Engineering Software Interface"; license = lib.licenses.gpl2Only; diff --git a/pkgs/by-name/fa/fast-float/package.nix b/pkgs/by-name/fa/fast-float/package.nix index e9a5948fbdc4f..6558a2dae15a5 100644 --- a/pkgs/by-name/fa/fast-float/package.nix +++ b/pkgs/by-name/fa/fast-float/package.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "fast-float"; - version = "8.1.0"; + version = "8.2.2"; src = fetchFromGitHub { owner = "fastfloat"; repo = "fast_float"; rev = "v${finalAttrs.version}"; - hash = "sha256-kTLmk+mxfdN/+vKdyohcaNSeoAkhJf3uesaBOz123ag="; + hash = "sha256-IZCZZayK3INU5P8HwZvWfOJuRfBrbPYuMQCjgCjHCWE="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/by-name/fl/fluidsynth/package.nix b/pkgs/by-name/fl/fluidsynth/package.nix index 60852d919bf6b..00fe283c9c452 100644 --- a/pkgs/by-name/fl/fluidsynth/package.nix +++ b/pkgs/by-name/fl/fluidsynth/package.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "fluidsynth"; - version = "2.5.1"; + version = "2.5.2"; src = fetchFromGitHub { owner = "FluidSynth"; repo = "fluidsynth"; tag = "v${finalAttrs.version}"; - hash = "sha256-gTkW2X7fcmxJwYf13Yma6cBigz4sbsb99dBSYTDlcyY="; + hash = "sha256-Ei6ts6gmC3jg1b7nORUCYxoAzoPoN3foyVnrmhpqHTs="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/fr/freeglut/package.nix b/pkgs/by-name/fr/freeglut/package.nix index 507d28a4dd0c3..c6d5d0883f5d3 100644 --- a/pkgs/by-name/fr/freeglut/package.nix +++ b/pkgs/by-name/fr/freeglut/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchurl, - fetchpatch, libICE, libXext, libXi, @@ -16,29 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "freeglut"; - version = "3.6.0"; + version = "3.8.0"; src = fetchurl { url = "mirror://sourceforge/freeglut/freeglut-${finalAttrs.version}.tar.gz"; - sha256 = "sha256-nD1NZRb7+gKA7ck8d2mPtzA+RDwaqvN9Jp4yiKbD6lI="; + hash = "sha256-Z03K/yUBDgnkUK7EWLiHDZ6YxG+ZU420V6tlmzIdmYk="; }; - patches = [ - (fetchpatch { - name = "freeglut-fix-cmake-4.patch"; - url = "https://github.com/freeglut/freeglut/commit/2294389397912c9a6505a88221abb7dca0a4fb79.patch"; - hash = "sha256-buNhlVUbDekklnar6KFWN/GUKE+jMEqTGrY3LY0LwVs="; - }) - - # Fix build with gcc15 - # https://github.com/freeglut/freeglut/pull/187 - (fetchpatch { - name = "freeglut-fix-fgPlatformDestroyContext-prototype-for-C23.patch"; - url = "https://github.com/freeglut/freeglut/commit/800772e993a3ceffa01ccf3fca449d3279cde338.patch"; - hash = "sha256-agXw3JHq81tx5514kkorvuU5mX4E3AV930hy1OJl4L0="; - }) - ]; - outputs = [ "out" "dev" diff --git a/pkgs/development/tools/misc/gdb/darwin-target-match.patch b/pkgs/by-name/gd/gdb/darwin-target-match.patch similarity index 100% rename from pkgs/development/tools/misc/gdb/darwin-target-match.patch rename to pkgs/by-name/gd/gdb/darwin-target-match.patch diff --git a/pkgs/development/tools/misc/gdb/debug-info-from-env.patch b/pkgs/by-name/gd/gdb/debug-info-from-env.patch similarity index 100% rename from pkgs/development/tools/misc/gdb/debug-info-from-env.patch rename to pkgs/by-name/gd/gdb/debug-info-from-env.patch diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/by-name/gd/gdb/package.nix similarity index 56% rename from pkgs/development/tools/misc/gdb/default.nix rename to pkgs/by-name/gd/gdb/package.nix index 1e80532dcb973..a9d78b415103c 100644 --- a/pkgs/development/tools/misc/gdb/default.nix +++ b/pkgs/by-name/gd/gdb/package.nix @@ -12,10 +12,7 @@ buildPackages, # Run time - ncurses, readline, - gmp, - mpfr, expat, libipt, zlib, @@ -24,14 +21,23 @@ dejagnu, sourceHighlight, libiconv, + xxHash, + withTui ? true, + ncurses, + withGmp ? true, + gmp, + withMpfr ? true, + mpfr, + withGuile ? false, + guile, pythonSupport ? stdenv.hostPlatform == stdenv.buildPlatform && !stdenv.hostPlatform.isCygwin, - python3 ? null, + python3, enableDebuginfod ? lib.meta.availableOn stdenv.hostPlatform elfutils, elfutils, - guile ? null, hostCpuOnly ? false, enableSim ? false, + enableUbsan ? false, safePaths ? [ # $debugdir:$datadir/auto-load are whitelisted by default by GDB "$debugdir" @@ -43,39 +49,45 @@ }: let - basename = "gdb"; - targetPrefix = lib.optionalString ( + inherit (lib) + optional + optionals + optionalString + withFeature + enableFeature + withFeatureAs + ; + targetPrefix = optionalString ( stdenv.targetPlatform != stdenv.hostPlatform ) "${stdenv.targetPlatform.config}-"; + pname = targetPrefix + "gdb" + optionalString hostCpuOnly "-host-cpu-only"; in -assert pythonSupport -> python3 != null; - -stdenv.mkDerivation rec { - pname = targetPrefix + basename + lib.optionalString hostCpuOnly "-host-cpu-only"; - version = "16.3"; +stdenv.mkDerivation (finalAttrs: { + inherit pname; + version = "17.1"; src = fetchurl { - url = "mirror://gnu/gdb/${basename}-${version}.tar.xz"; - hash = "sha256-vPzQlVKKmHkXrPn/8/FnIYFpSSbMGNYJyZ0AQsACJMU="; + url = "mirror://gnu/gdb/gdb-${finalAttrs.version}.tar.xz"; + hash = "sha256-FJlvX3TJ9o9aVD/cRbyngAIH+R+SrupsLnkYIsfG2HY="; }; postPatch = - lib.optionalString stdenv.hostPlatform.isDarwin '' + optionalString stdenv.hostPlatform.isDarwin '' substituteInPlace gdb/darwin-nat.c \ - --replace '#include "bfd/mach-o.h"' '#include "mach-o.h"' + --replace-fail '#include "bfd/mach-o.h"' '#include "mach-o.h"' '' - + lib.optionalString stdenv.hostPlatform.isMusl '' - substituteInPlace sim/erc32/erc32.c --replace sys/fcntl.h fcntl.h - substituteInPlace sim/erc32/interf.c --replace sys/fcntl.h fcntl.h - substituteInPlace sim/erc32/sis.c --replace sys/fcntl.h fcntl.h - substituteInPlace sim/ppc/emul_unix.c --replace sys/termios.h termios.h + + optionalString stdenv.hostPlatform.isMusl '' + substituteInPlace sim/erc32/erc32.c --replace-fail sys/fcntl.h fcntl.h + substituteInPlace sim/erc32/interf.c --replace-fail sys/fcntl.h fcntl.h + substituteInPlace sim/erc32/sis.c --replace-fail sys/fcntl.h fcntl.h + substituteInPlace sim/ppc/emul_unix.c --replace-fail sys/termios.h termios.h ''; patches = [ ./debug-info-from-env.patch ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ + ++ optionals stdenv.hostPlatform.isDarwin [ ./darwin-target-match.patch ]; @@ -89,20 +101,22 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses readline - gmp - mpfr expat libipt zlib zstd xz - guile sourceHighlight + xxHash + dejagnu # for tests ] - ++ lib.optional pythonSupport python3 - ++ lib.optional doCheck dejagnu - ++ lib.optional enableDebuginfod (elfutils.override { enableDebuginfod = true; }) - ++ lib.optional stdenv.hostPlatform.isDarwin libiconv; + ++ optional withTui ncurses + ++ optional withMpfr mpfr + ++ optional withGmp gmp + ++ optional pythonSupport python3 + ++ optional withGuile guile + ++ optional enableDebuginfod (elfutils.override { enableDebuginfod = true; }) + ++ optional stdenv.hostPlatform.isDarwin libiconv; propagatedNativeBuildInputs = [ setupDebugInfoDirs ]; @@ -111,24 +125,23 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; # darwin build fails with format hardening since v7.12 - hardeningDisable = lib.optionals stdenv.hostPlatform.isDarwin [ "format" ]; + hardeningDisable = optionals stdenv.hostPlatform.isDarwin [ "format" ]; env.NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral"; # Workaround for Apple Silicon, configurePlatforms must be disabled - configurePlatforms = - lib.optionals (!(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)) - [ - "build" - "host" - "target" - ]; + configurePlatforms = optionals (!(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)) [ + "build" + "host" + "target" + ]; preConfigure = '' # remove precompiled docs, required for man gdbinit to mention /etc/gdb/gdbinit rm gdb/doc/*.info* rm gdb/doc/*.5 rm gdb/doc/*.1 + # fix doc build https://sourceware.org/bugzilla/show_bug.cgi?id=27808 rm gdb/doc/GDBvn.texi @@ -146,33 +159,37 @@ stdenv.mkDerivation rec { # subset of the platform description. "--program-prefix=${targetPrefix}" - "--disable-werror" + (enableFeature true "werror") + (enableFeature true "64-bit-bfd") + (enableFeature false "install-libbfd") + (enableFeature withTui "tui") + (withFeature withTui "curses") + (enableFeature false "shared") + (enableFeature true "static") + (withFeature true "system-readline") + (withFeature true "system-zlib") + (withFeature true "expat") + (withFeatureAs true "libexpat-prefix" "${expat.dev}") + (withFeatureAs withGmp "gmp" "${gmp.dev}") + (withFeatureAs withMpfr "mpfr" "${mpfr.dev}") + (withFeature pythonSupport "python") + (withFeature withGuile "guile") + (enableFeature enableSim "sim") + (enableFeature enableUbsan "ubsan") + (withFeatureAs true "system-gdbinit" "/etc/gdb/gdbinit") + (withFeatureAs true "system-gdbinit-dir" "/etc/gdb/gdbinit.d") + (withFeatureAs true "auto-load-safe-path" (builtins.concatStringsSep ":" safePaths)) + (withFeature enableDebuginfod "debuginfod") + (enableFeature (!stdenv.hostPlatform.isMusl) "nls") ] - ++ lib.optional (!hostCpuOnly) "--enable-targets=all" + ++ optional (!hostCpuOnly) "--enable-targets=all" ++ [ - "--enable-64-bit-bfd" - "--disable-install-libbfd" - "--disable-shared" - "--enable-static" - "--with-system-zlib" - "--with-system-readline" - - "--with-system-gdbinit=/etc/gdb/gdbinit" - "--with-system-gdbinit-dir=/etc/gdb/gdbinit.d" - - "--with-gmp=${gmp.dev}" - "--with-mpfr=${mpfr.dev}" - "--with-expat" - "--with-libexpat-prefix=${expat.dev}" - "--with-auto-load-safe-path=${builtins.concatStringsSep ":" safePaths}" + (enableFeature ( + !stdenv.hostPlatform.isStatic && !stdenv.hostPlatform.isLoongArch64 + ) "inprocess-agent") ] - ++ lib.optional (!pythonSupport) "--without-python" - ++ lib.optional stdenv.hostPlatform.isMusl "--disable-nls" - ++ lib.optional stdenv.hostPlatform.isStatic "--disable-inprocess-agent" - ++ lib.optional enableDebuginfod "--with-debuginfod=yes" - ++ lib.optional (!enableSim) "--disable-sim" # Workaround for Apple Silicon, "--target" must be "faked", see eg: https://github.com/Homebrew/homebrew-core/pull/209753 - ++ lib.optional ( + ++ optional ( stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64 ) "--target=x86_64-apple-darwin"; @@ -181,9 +198,6 @@ stdenv.mkDerivation rec { rm -v $out/share/info/bfd.info ''; - # TODO: Investigate & fix the test failures. - doCheck = false; - passthru = { updateScript = writeScript "update-gdb" '' #!/usr/bin/env nix-shell @@ -199,24 +213,19 @@ stdenv.mkDerivation rec { }; meta = { - mainProgram = "gdb"; - description = "GNU Project debugger"; - + mainProgram = "gdb"; longDescription = '' GDB, the GNU Project debugger, allows you to see what is going on `inside' another program while it executes -- or what another program was doing at the moment it crashed. ''; - homepage = "https://www.gnu.org/software/gdb/"; - license = lib.licenses.gpl3Plus; - platforms = with lib.platforms; linux ++ cygwin ++ freebsd ++ darwin; maintainers = with lib.maintainers; [ pierron globin ]; }; -} +}) diff --git a/pkgs/by-name/gi/gifsicle/package.nix b/pkgs/by-name/gi/gifsicle/package.nix index 7290e8f086eba..17149ea57fd50 100644 --- a/pkgs/by-name/gi/gifsicle/package.nix +++ b/pkgs/by-name/gi/gifsicle/package.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { configureFlags = lib.optional (!gifview) "--disable-gifview"; - LDFLAGS = lib.optionalString static "-static"; + env.LDFLAGS = lib.optionalString static "-static"; doCheck = true; checkPhase = '' diff --git a/pkgs/by-name/gi/git/package.nix b/pkgs/by-name/gi/git/package.nix index fd9a5f2f51794..a1bc5aca526c3 100644 --- a/pkgs/by-name/gi/git/package.nix +++ b/pkgs/by-name/gi/git/package.nix @@ -130,7 +130,12 @@ stdenv.mkDerivation (finalAttrs: { url = "https://lore.kernel.org/git/20251201031040.1120091-1-brianmlyles@gmail.com/raw"; hash = "sha256-vvhbvg74OIMzfksHiErSnjOZ+W0M/T9J8GOQ4E4wKbU="; }) - + # Fixes t8020 test on big-endian + (fetchurl { + name = "last-modified-fix-bug-caused-by-inproper-initialized-memory.patch"; + url = "https://lore.kernel.org/git/20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com/raw"; + hash = "sha256-WdewOwD7hMhnahhUUEYAlM58tT3MkxUlBa3n8IwrESU="; + }) ] ++ lib.optionals withSsh [ # Hard-code the ssh executable to ${pkgs.openssh}/bin/ssh instead of diff --git a/pkgs/by-name/gl/glslang/package.nix b/pkgs/by-name/gl/glslang/package.nix index e62d8596d31c5..b0fcf1bf56f56 100644 --- a/pkgs/by-name/gl/glslang/package.nix +++ b/pkgs/by-name/gl/glslang/package.nix @@ -2,21 +2,20 @@ lib, stdenv, fetchFromGitHub, - bison, cmake, - jq, python3, spirv-headers, spirv-tools, + config, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "glslang"; version = "16.1.0"; src = fetchFromGitHub { owner = "KhronosGroup"; repo = "glslang"; - rev = version; + tag = finalAttrs.version; hash = "sha256-cEREniYgSd62mnvKaQkgs69ETL5pLl5Gyv3hKOtSv3w="; }; @@ -26,48 +25,40 @@ stdenv.mkDerivation rec { "dev" ]; - # These get set at all-packages, keep onto them for child drvs - passthru = { - spirv-tools = spirv-tools; - spirv-headers = spirv-headers; - }; - nativeBuildInputs = [ cmake python3 - bison - jq ]; - cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ]; + propagatedBuildInputs = [ + spirv-tools + spirv-headers + ]; - postPatch = '' - cp --no-preserve=mode -r "${spirv-tools.src}" External/spirv-tools - ln -s "${spirv-headers.src}" External/spirv-tools/external/spirv-headers - ''; + cmakeFlags = [ + (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + (lib.cmakeBool "BUILD_EXTERNAL" false) + (lib.cmakeBool "ALLOW_EXTERNAL_SPIRV_TOOLS" true) + ]; - # This is a dirty fix for lib/cmake/SPIRVTargets.cmake:51 which includes this directory postInstall = '' - mkdir -p $dev/include/External - moveToOutput lib/pkgconfig "''${!outputDev}" - moveToOutput lib/cmake "''${!outputDev}" - ''; - - # Fix the paths in .pc, even though it's unclear if these .pc are really useful. - postFixup = '' - substituteInPlace $dev/lib/pkgconfig/*.pc \ - --replace-fail '=''${prefix}//' '=/' \ - --replace-fail "includedir=$dev/$dev" "includedir=$dev" - # add a symlink for backwards compatibility ln -s $bin/bin/glslang $bin/bin/glslangValidator ''; + passthru = lib.optionalAttrs config.allowAliases { + # Added 2026-01-06, https://github.com/NixOS/nixpkgs/pull/477412 + spirv-tools = throw "'glslang' no longer pins to specific 'spirv-tools'"; + + # Added 2026-01-06, https://github.com/NixOS/nixpkgs/pull/477412 + spirv-headers = throw "'glslang' no longer pins to specific 'spirv-headers'"; + }; + meta = { - inherit (src.meta) homepage; + inherit (finalAttrs.src.meta) homepage; description = "Khronos reference front-end for GLSL and ESSL"; license = lib.licenses.asl20; platforms = lib.platforms.unix; maintainers = [ lib.maintainers.ralith ]; }; -} +}) diff --git a/pkgs/by-name/gn/gn/package.nix b/pkgs/by-name/gn/gn/package.nix index 6f3d6a89d7846..f3fc70734fd7a 100644 --- a/pkgs/by-name/gn/gn/package.nix +++ b/pkgs/by-name/gn/gn/package.nix @@ -11,11 +11,11 @@ version ? # This is a workaround for update-source-version to be able to update this let - _version = "0-unstable-2025-09-18"; + _version = "0-unstable-2025-10-08"; in _version, - rev ? "81b24e01531ecf0eff12ec9359a555ec3944ec4e", - hash ? "sha256-sm5GWbkm3ua7EkCWTuY4TG6EXKe3asXTrH1APnNARJQ=", + rev ? "07d3c6f4dc290fae5ca6152ebcb37d6815c411ab", + hash ? "sha256-kIPhfuJBQSISdRjloe0N2JrqvuVrEkNijb92/9zSE9I=", }: stdenv.mkDerivation { diff --git a/pkgs/by-name/gn/gnutls/gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch b/pkgs/by-name/gn/gnutls/gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch new file mode 100644 index 0000000000000..1764c4e3bff3c --- /dev/null +++ b/pkgs/by-name/gn/gnutls/gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch @@ -0,0 +1,351 @@ +Applied the following incremental gnulib commits: + +- 55a366a06fbd98bf13adc531579e3513cee97a32 +- 65ed9d3b24ad09fd61d326c83e7f1b05f6e9d65f +- ce8e9de0bf34bc63dffc67ab384334c509175f64 +- 6164b4cb0887b5331a4e64449107decd37d32735 + +With adjustments specific to the structure & differences in gnutls: + +- The gnulib version included in the gnutls 3.8.11 release tarball is older than the one in the 3.8.11 tag on GitLab, necessitating this patching. + Maybe an issue with their release making process. +- gnulib code is duplicated across gl and src/gl, with the tests only existing the latter. + Unsure why this is duplicated, but applied to both versions. +- A Makefile.in is used for the test flags instead of the fancy automake modules + in the upstream gnulib project, so we add -lm to the float test there. + Surrounding texts in this file are slightly different in every project. +diff '--color=auto' -ruN a/gl/float.c b/gl/float.c +--- a/gl/float.c 2025-11-20 03:09:15.000000000 +0100 ++++ b/gl/float.c 2026-01-04 14:19:05.770105827 +0100 +@@ -23,7 +23,7 @@ + #if GNULIB_defined_long_double_union + # if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + const union gl_long_double_union gl_LDBL_MAX = +- { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; ++ { { DBL_MAX, DBL_MAX / 0x1p53 } }; + # elif defined __i386__ + const union gl_long_double_union gl_LDBL_MAX = + { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } }; +diff '--color=auto' -ruN a/gl/float.in.h b/gl/float.in.h +--- a/gl/float.in.h 2025-11-20 03:09:15.000000000 +0100 ++++ b/gl/float.in.h 2026-01-04 14:22:50.690169887 +0100 +@@ -113,44 +113,38 @@ + # define LDBL_MAX_10_EXP 4932 + #endif + +-/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are +- wrong. +- On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */ +-#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ ++/* On PowerPC with gcc 15 when using __ibm128 long double, the value of ++ LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX, and LDBL_NORM_MAX are wrong. */ ++#if ((defined _ARCH_PPC || defined _POWER) && LDBL_MANT_DIG == 106 \ ++ && defined __GNUC__) + # undef LDBL_MIN_EXP + # define LDBL_MIN_EXP DBL_MIN_EXP + # undef LDBL_MIN_10_EXP + # define LDBL_MIN_10_EXP DBL_MIN_10_EXP + # undef LDBL_MIN + # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ +-#endif +-#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + # undef LDBL_MAX +-/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }. +- It is not easy to define: +- #define LDBL_MAX 1.79769313486231580793728971405302307166e308L +- is too small, whereas +- #define LDBL_MAX 1.79769313486231580793728971405302307167e308L +- is too large. Apparently a bug in GCC decimal-to-binary conversion. +- Also, I can't get values larger than +- #define LDBL63 ((long double) (1ULL << 63)) +- #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL) +- which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }. +- So, define it like this through a reference to an external variable ++/* LDBL_MAX is 2**1024 - 2**918, represented as: { 0x7FEFFFFF, 0xFFFFFFFF, ++ 0x7C9FFFFF, 0xFFFFFFFF }. ++ ++ Do not write it as a constant expression, as GCC would likely treat ++ that as infinity due to the vagaries of this platform's funky arithmetic. ++ Instead, define it through a reference to an external variable. ++ Like the following, but using a union to avoid type mismatches: + +- const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }; ++ const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / 0x1p53 }; + extern const long double LDBL_MAX; + +- or through a pointer cast ++ The following alternative would not work as well when GCC is optimizing: ++ ++ #define LDBL_MAX (*(long double const *) (double[]) ++ { DBL_MAX, DBL_MAX / 0x1p53 }) + +- #define LDBL_MAX \ +- (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }) ++ The following alternative would require GCC 6 or later: + +- Unfortunately, this is not a constant expression, and the latter expression +- does not work well when GCC is optimizing.. */ ++ #define LDBL_MAX __builtin_pack_longdouble (DBL_MAX, DBL_MAX / 0x1p53) ++ ++ Unfortunately none of the alternatives are constant expressions. */ + # if !GNULIB_defined_long_double_union + union gl_long_double_union + { +@@ -161,6 +155,8 @@ + # endif + extern const union gl_long_double_union gl_LDBL_MAX; + # define LDBL_MAX (gl_LDBL_MAX.ld) ++# undef LDBL_NORM_MAX ++# define LDBL_NORM_MAX LDBL_MAX + #endif + + /* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong. +@@ -181,6 +177,21 @@ + # endif + #endif + ++/* On PowerPC platforms, 'long double' has a double-double representation. ++ Up to ISO C 17, this was outside the scope of ISO C because it can represent ++ numbers with mantissas of the form 1.<52 bits><52 bits>, such as ++ 1.0L + 4.94065645841246544176568792868221e-324L = 1 + 2^-1074; see ++ ISO C 17 § 5.2.4.2.2.(3). ++ In ISO C 23, wording has been included that makes this 'long double' ++ representation compliant; see ISO C 23 § 5.2.5.3.3.(8)-(9). In this setting, ++ numbers with mantissas of the form 1.<52 bits><52 bits> are ++ called "unnormalized". And since LDBL_EPSILON must be normalized (per ++ ISO C 23 § 5.2.5.3.3.(33)), it must be 2^-105. */ ++#if defined __powerpc__ && LDBL_MANT_DIG == 106 ++# undef LDBL_EPSILON ++# define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */ ++#endif ++ + /* ============================ ISO C11 support ============================ */ + + /* 'float' properties */ +@@ -309,7 +320,11 @@ + # endif + #endif + #ifndef LDBL_NORM_MAX +-# define LDBL_NORM_MAX LDBL_MAX ++# ifdef __LDBL_NORM_MAX__ ++# define LDBL_NORM_MAX __LDBL_NORM_MAX__ ++# else ++# define LDBL_NORM_MAX LDBL_MAX ++# endif + #endif + #ifndef LDBL_SNAN + /* For sh, beware of . */ +diff '--color=auto' -ruN a/src/gl/float.c b/src/gl/float.c +--- a/src/gl/float.c 2025-11-20 03:09:15.000000000 +0100 ++++ b/src/gl/float.c 2026-01-04 14:19:23.234252595 +0100 +@@ -23,7 +23,7 @@ + #if GNULIB_defined_long_double_union + # if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + const union gl_long_double_union gl_LDBL_MAX = +- { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; ++ { { DBL_MAX, DBL_MAX / 0x1p53 } }; + # elif defined __i386__ + const union gl_long_double_union gl_LDBL_MAX = + { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } }; +diff '--color=auto' -ruN a/src/gl/float.in.h b/src/gl/float.in.h +--- a/src/gl/float.in.h 2025-11-20 03:09:15.000000000 +0100 ++++ b/src/gl/float.in.h 2026-01-04 14:24:52.632412768 +0100 +@@ -113,44 +113,38 @@ + # define LDBL_MAX_10_EXP 4932 + #endif + +-/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are +- wrong. +- On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */ +-#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ ++/* On PowerPC with gcc 15 when using __ibm128 long double, the value of ++ LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX, and LDBL_NORM_MAX are wrong. */ ++#if ((defined _ARCH_PPC || defined _POWER) && LDBL_MANT_DIG == 106 \ ++ && defined __GNUC__) + # undef LDBL_MIN_EXP + # define LDBL_MIN_EXP DBL_MIN_EXP + # undef LDBL_MIN_10_EXP + # define LDBL_MIN_10_EXP DBL_MIN_10_EXP + # undef LDBL_MIN + # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ +-#endif +-#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + # undef LDBL_MAX +-/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }. +- It is not easy to define: +- #define LDBL_MAX 1.79769313486231580793728971405302307166e308L +- is too small, whereas +- #define LDBL_MAX 1.79769313486231580793728971405302307167e308L +- is too large. Apparently a bug in GCC decimal-to-binary conversion. +- Also, I can't get values larger than +- #define LDBL63 ((long double) (1ULL << 63)) +- #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL) +- which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }. +- So, define it like this through a reference to an external variable ++/* LDBL_MAX is 2**1024 - 2**918, represented as: { 0x7FEFFFFF, 0xFFFFFFFF, ++ 0x7C9FFFFF, 0xFFFFFFFF }. ++ ++ Do not write it as a constant expression, as GCC would likely treat ++ that as infinity due to the vagaries of this platform's funky arithmetic. ++ Instead, define it through a reference to an external variable. ++ Like the following, but using a union to avoid type mismatches: + +- const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }; ++ const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / 0x1p53 }; + extern const long double LDBL_MAX; + +- or through a pointer cast ++ The following alternative would not work as well when GCC is optimizing: ++ ++ #define LDBL_MAX (*(long double const *) (double[]) ++ { DBL_MAX, DBL_MAX / 0x1p53 }) + +- #define LDBL_MAX \ +- (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }) ++ The following alternative would require GCC 6 or later: + +- Unfortunately, this is not a constant expression, and the latter expression +- does not work well when GCC is optimizing.. */ ++ #define LDBL_MAX __builtin_pack_longdouble (DBL_MAX, DBL_MAX / 0x1p53) ++ ++ Unfortunately none of the alternatives are constant expressions. */ + # if !GNULIB_defined_long_double_union + union gl_long_double_union + { +@@ -161,6 +155,8 @@ + # endif + extern const union gl_long_double_union gl_LDBL_MAX; + # define LDBL_MAX (gl_LDBL_MAX.ld) ++# undef LDBL_NORM_MAX ++# define LDBL_NORM_MAX LDBL_MAX + #endif + + /* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong. +@@ -181,6 +177,21 @@ + # endif + #endif + ++/* On PowerPC platforms, 'long double' has a double-double representation. ++ Up to ISO C 17, this was outside the scope of ISO C because it can represent ++ numbers with mantissas of the form 1.<52 bits><52 bits>, such as ++ 1.0L + 4.94065645841246544176568792868221e-324L = 1 + 2^-1074; see ++ ISO C 17 § 5.2.4.2.2.(3). ++ In ISO C 23, wording has been included that makes this 'long double' ++ representation compliant; see ISO C 23 § 5.2.5.3.3.(8)-(9). In this setting, ++ numbers with mantissas of the form 1.<52 bits><52 bits> are ++ called "unnormalized". And since LDBL_EPSILON must be normalized (per ++ ISO C 23 § 5.2.5.3.3.(33)), it must be 2^-105. */ ++#if defined __powerpc__ && LDBL_MANT_DIG == 106 ++# undef LDBL_EPSILON ++# define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */ ++#endif ++ + /* ============================ ISO C11 support ============================ */ + + /* 'float' properties */ +@@ -309,7 +320,11 @@ + # endif + #endif + #ifndef LDBL_NORM_MAX +-# define LDBL_NORM_MAX LDBL_MAX ++# ifdef __LDBL_NORM_MAX__ ++# define LDBL_NORM_MAX __LDBL_NORM_MAX__ ++# else ++# define LDBL_NORM_MAX LDBL_MAX ++# endif + #endif + #ifndef LDBL_SNAN + /* For sh, beware of . */ +diff '--color=auto' -ruN a/src/gl/tests/Makefile.in b/src/gl/tests/Makefile.in +--- a/src/gl/tests/Makefile.in 2025-11-20 03:09:50.000000000 +0100 ++++ b/src/gl/tests/Makefile.in 2026-01-04 14:10:49.765136843 +0100 +@@ -821,7 +821,7 @@ + $(am__DEPENDENCIES_1) + test_float_h_SOURCES = test-float-h.c + test_float_h_OBJECTS = test-float-h.$(OBJEXT) +-test_float_h_LDADD = $(LDADD) ++test_float_h_LDADD = $(LDADD) -lm + test_float_h_DEPENDENCIES = libtests.a ../../../src/gl/libgnu_gpl.la \ + libtests.a ../../../src/gl/libgnu_gpl.la libtests.a \ + $(am__DEPENDENCIES_1) +diff '--color=auto' -ruN a/src/gl/tests/test-float-h.c b/src/gl/tests/test-float-h.c +--- a/src/gl/tests/test-float-h.c 2025-11-20 03:09:15.000000000 +0100 ++++ b/src/gl/tests/test-float-h.c 2026-01-04 14:26:11.677858229 +0100 +@@ -101,6 +101,8 @@ + + /* ------------------------------------------------------------------------- */ + ++#include ++ + #include "fpucw.h" + #include "isnanf-nolibm.h" + #include "isnand-nolibm.h" +@@ -396,6 +398,44 @@ + + /* -------------------- Check macros for 'long double' -------------------- */ + ++static int ++test_isfinitel (long double volatile x) ++{ ++ if (x != x) ++ return 0; ++ long double volatile zero = x * 0; ++ return zero == 0; ++} ++ ++/* Return X after normalization. This makes a difference on platforms ++ where long double can represent unnormalized values. For example, ++ suppose x = 1 + 2**-106 on PowerPC with IBM long double where ++ FLT_RADIX = 2, LDBL_MANT_DIG = 106, and LDBL_EPSILON = 2**-105. ++ Then 1 < x < 1 + LDBL_EPSILON, and normalize_long_double (x) returns 1. */ ++static long double ++normalize_long_double (long double volatile x) ++{ ++ if (FLT_RADIX == 2 && test_isfinitel (x)) ++ { ++ int xexp; ++ long double volatile ++ frac = frexpl (x, &xexp), ++ significand = frac * pow2l (LDBL_MANT_DIG), ++ normalized_significand = truncl (significand), ++ normalized_x = normalized_significand * pow2l (xexp - LDBL_MANT_DIG); ++ ++ /* The test_isfinitel defends against PowerPC with IBM long double, ++ which fritzes out near LDBL_MAX. */ ++ if (test_isfinitel (normalized_x)) ++ x = normalized_x; ++ } ++ else ++ { ++ /* Hope that X is already normalized. */ ++ } ++ return x; ++} ++ + static void + test_long_double (void) + { +@@ -455,7 +495,7 @@ + for (n = 0; n <= 2 * LDBL_MANT_DIG; n++) + { + volatile long double half_n = pow2l (- n); /* 2^-n */ +- volatile long double x = me - half_n; ++ volatile long double x = normalize_long_double (me - half_n); + if (x < me) + ASSERT (x <= 1.0L); + } +@@ -484,7 +524,7 @@ + #endif + + /* Check the value of LDBL_NORM_MAX. */ +- ASSERT (LDBL_NORM_MAX == LDBL_MAX); ++ ASSERT (LDBL_NORM_MAX == normalize_long_double (LDBL_MAX)); + + /* Check the value of LDBL_SNAN. */ + ASSERT (isnanl (LDBL_SNAN)); diff --git a/pkgs/by-name/gn/gnutls/package.nix b/pkgs/by-name/gn/gnutls/package.nix index fc21229d0d35b..98f58a62e3f1d 100644 --- a/pkgs/by-name/gn/gnutls/package.nix +++ b/pkgs/by-name/gn/gnutls/package.nix @@ -85,6 +85,11 @@ stdenv.mkDerivation rec { patches = [ ./nix-ssl-cert-file.patch + + # Fixes test-float failure on ppc64 with C23 + # https://lists.gnu.org/archive/html/bug-gnulib/2025-07/msg00021.html + # Multiple upstream commits squashed with adjustments, see header + ./gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch ]; # Skip some tests: diff --git a/pkgs/by-name/go/google-cloud-cpp/package.nix b/pkgs/by-name/go/google-cloud-cpp/package.nix index 778fe40d01774..f4f898ec615ee 100644 --- a/pkgs/by-name/go/google-cloud-cpp/package.nix +++ b/pkgs/by-name/go/google-cloud-cpp/package.nix @@ -108,7 +108,10 @@ stdenv.mkDerivation (finalAttrs: { installCheckPhase = let - disabledTests = lib.optionalString stdenv.hostPlatform.isDarwin '' + disabledTests = '' + bigtable_internal_data_connection_impl_test + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' common_internal_async_connection_ready_test bigtable_async_read_stream_test bigtable_metadata_update_policy_test diff --git a/pkgs/by-name/gp/gparted/package.nix b/pkgs/by-name/gp/gparted/package.nix index 9b492e9f9b697..2f62aff4e2dc4 100644 --- a/pkgs/by-name/gp/gparted/package.nix +++ b/pkgs/by-name/gp/gparted/package.nix @@ -35,7 +35,6 @@ lvm2, nilfs-utils, ntfs3g, - reiserfsprogs, udftools, xfsprogs, xfsdump, @@ -97,7 +96,6 @@ stdenv.mkDerivation (finalAttrs: { lvm2 nilfs-utils ntfs3g - reiserfsprogs udftools xfsprogs xfsdump diff --git a/pkgs/by-name/gp/gpgme/package.nix b/pkgs/by-name/gp/gpgme/package.nix index 259870655bcd5..cd68dd81ec3b3 100644 --- a/pkgs/by-name/gp/gpgme/package.nix +++ b/pkgs/by-name/gp/gpgme/package.nix @@ -17,9 +17,10 @@ libsForQt5, qt6Packages, python3, + testers, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "gpgme"; version = "2.0.1"; @@ -32,10 +33,16 @@ stdenv.mkDerivation rec { outputBin = "dev"; # gpgme-config; not so sure about gpgme-tool src = fetchurl { - url = "mirror://gnupg/gpgme/gpgme-${version}.tar.bz2"; + url = "mirror://gnupg/gpgme/gpgme-${finalAttrs.version}.tar.bz2"; hash = "sha256-ghqwaVyELqtRdSqBmAySsEEMfq3QQQP3kdXSpSZ4SWY="; }; + postPatch = '' + # remove -unknown suffix from pkgconfig version + substituteInPlace autogen.sh \ + --replace-fail 'tmp="-unknown"' 'tmp=""' + ''; + patches = [ # Don't use deprecated LFS64 APIs (removed in musl 1.2.4) # https://dev.gnupg.org/D600 @@ -92,6 +99,10 @@ stdenv.mkDerivation rec { passthru.tests = { inherit gpa; + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + versionCheck = true; + }; python = python3.pkgs.gpgme; qt5 = libsForQt5.qgpgme; qt6 = qt6Packages.qgpgme; @@ -99,7 +110,7 @@ stdenv.mkDerivation rec { meta = { homepage = "https://gnupg.org/software/gpgme/index.html"; - changelog = "https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;f=NEWS;hb=gpgme-${version}"; + changelog = "https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;f=NEWS;hb=gpgme-${finalAttrs.version}"; description = "Library for making GnuPG easier to use"; longDescription = '' GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG @@ -111,7 +122,11 @@ stdenv.mkDerivation rec { lgpl21Plus gpl3Plus ]; + pkgConfigModules = [ + "gpgme" + "gpgme-glib" + ]; platforms = lib.platforms.unix; maintainers = with lib.maintainers; [ dotlambda ]; }; -} +}) diff --git a/pkgs/by-name/gp/gpgmepp/package.nix b/pkgs/by-name/gp/gpgmepp/package.nix index 1c8225759bd17..d0f6ce2ae37dd 100644 --- a/pkgs/by-name/gp/gpgmepp/package.nix +++ b/pkgs/by-name/gp/gpgmepp/package.nix @@ -5,6 +5,7 @@ lib, libgpg-error, stdenv, + testers, }: stdenv.mkDerivation (finalAttrs: { @@ -16,6 +17,12 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-1HlgScBnCKJvMJb3SO8JU0fho8HlcFYXAf6VLD9WU4I="; }; + postPatch = '' + # remove -unknown suffix from pkgconfig version + substituteInPlace cmake/modules/G10GetFullVersion.cmake \ + --replace-fail '"''${version}-unknown"' '"''${version}"' + ''; + outputs = [ "out" "dev" @@ -35,12 +42,20 @@ stdenv.mkDerivation (finalAttrs: { libgpg-error ]; + passthru.tests = { + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + versionCheck = true; + }; + }; + meta = { changelog = "https://dev.gnupg.org/source/gpgmepp/browse/master/NEWS;gpgmepp-${finalAttrs.version}?as=remarkup"; description = "C++ bindings/wrapper for GPGME"; homepage = "https://dev.gnupg.org/source/gpgmepp"; license = lib.licenses.lgpl21Plus; maintainers = [ lib.maintainers.dotlambda ]; + pkgConfigModules = [ "gpgmepp" ]; platforms = lib.platforms.unix; }; }) diff --git a/pkgs/by-name/gr/groff/fix-underspecified-getenv-prototype.patch b/pkgs/by-name/gr/groff/fix-underspecified-getenv-prototype.patch new file mode 100644 index 0000000000000..663f81f41c935 --- /dev/null +++ b/pkgs/by-name/gr/groff/fix-underspecified-getenv-prototype.patch @@ -0,0 +1,24 @@ +commit e49b934b77a76443005f92a737dae7370b50e5f7 +Author: G. Branden Robinson +Date: Tue Jan 23 19:39:03 2024 -0600 + + [libgroff]: Fix underspecified getenv() prototype. + + * src/libs/libgroff/getopt.c: Do it. Seen when building groff on a + non-glibc-based system (clang 17 complains). + +--- +Link: https://lists.libreplanet.org/archive/html/groff-commit/2024-01/msg00103.html +diff --git a/src/libs/libgroff/getopt.c b/src/libs/libgroff/getopt.c +index 6d4ee5b3a..77f8da1ed 100644 +--- a/src/libs/libgroff/getopt.c ++++ b/src/libs/libgroff/getopt.c +@@ -124,7 +124,7 @@ static struct _getopt_data getopt_data; + whose names are inconsistent. */ + + #ifndef getenv +-extern char *getenv (); ++extern char *getenv (const char *); + #endif + + #endif /* not __GNU_LIBRARY__ */ diff --git a/pkgs/by-name/gr/groff/package.nix b/pkgs/by-name/gr/groff/package.nix index 4780697cfe5d6..ec203ed3902fd 100644 --- a/pkgs/by-name/gr/groff/package.nix +++ b/pkgs/by-name/gr/groff/package.nix @@ -34,6 +34,12 @@ stdenv.mkDerivation rec { hash = "sha256-a5dX9ZK3UYtJAutq9+VFcL3Mujeocf3bLTCuOGNRHBM="; }; + patches = [ + # Backport e49b934 "Fix underspecified `getenv()` prototype." for non-glibc systems with C23 + # This can be dropped in the next release, when the local getopt implementation in libgroff is removed + ./fix-underspecified-getenv-prototype.patch + ]; + outputs = [ "out" "man" diff --git a/pkgs/by-name/ha/harfbuzz/package.nix b/pkgs/by-name/ha/harfbuzz/package.nix index 042e82e6ae5b3..cebf23db0247f 100644 --- a/pkgs/by-name/ha/harfbuzz/package.nix +++ b/pkgs/by-name/ha/harfbuzz/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchurl, + fetchpatch, pkg-config, glib, freetype, @@ -34,13 +35,22 @@ stdenv.mkDerivation (finalAttrs: { pname = "harfbuzz${lib.optionalString withIcu "-icu"}"; - version = "12.2.0"; + version = "12.3.0"; src = fetchurl { url = "https://github.com/harfbuzz/harfbuzz/releases/download/${finalAttrs.version}/harfbuzz-${finalAttrs.version}.tar.xz"; - hash = "sha256-7LYDqkJqiyRmVxhme9pkqEwVBNt0VO5Mrb02Lupk5UU="; + hash = "sha256-hmDr08J9lAf8hDO10XK6+6XwMXywu0M58o5TcMk9Qrc="; }; + patches = [ + (fetchpatch { + # https://github.com/harfbuzz/harfbuzz/security/advisories/GHSA-xvjr-f2r9-c7ww + name = "CVE-2026-22693.patch"; + url = "https://github.com/harfbuzz/harfbuzz/commit/1265ff8d990284f04d8768f35b0e20ae5f60daae.patch"; + hash = "sha256-mdgIhp1ndPSfzplBRB7s+BN2T5Z9dEYZ0bAmSDCUPSE="; + }) + ]; + postPatch = '' patchShebangs src/*.py test '' diff --git a/pkgs/by-name/hw/hwdata/package.nix b/pkgs/by-name/hw/hwdata/package.nix index e5b1cecf12ff8..a523b6ac82d28 100644 --- a/pkgs/by-name/hw/hwdata/package.nix +++ b/pkgs/by-name/hw/hwdata/package.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "hwdata"; - version = "0.402"; + version = "0.403"; src = fetchFromGitHub { owner = "vcrhonek"; repo = "hwdata"; rev = "v${finalAttrs.version}"; - hash = "sha256-akLI2MdF6BDwvSoKt1jhlMyhKQv4TWxLFZWF7ivIezA="; + hash = "sha256-90Op2armm7Fg0Eyj5+Md0IMos915wqjv8cqTYVJF/NA="; }; doCheck = false; # this does build machine-specific checks (e.g. enumerates PCI bus) diff --git a/pkgs/by-name/hy/hyper-cmd-utils/package.nix b/pkgs/by-name/hy/hyper-cmd-utils/package.nix index 41d922e864c3a..d6df4ccfb14f9 100644 --- a/pkgs/by-name/hy/hyper-cmd-utils/package.nix +++ b/pkgs/by-name/hy/hyper-cmd-utils/package.nix @@ -3,6 +3,7 @@ lib, fetchurl, fetchFromGitHub, + patchelfUnstable, }: buildNpmPackage { @@ -30,6 +31,23 @@ buildNpmPackage { }) ]; + nativeBuildInputs = [ + patchelfUnstable # --clear-execstack is only available on 0.18 + ]; + + postInstall = '' + # glibc 2.41+ refuses to make the stack executable if it isn't executable, + # but a library loaded via `dlopen()` mandates it. + # According to https://github.com/holepunchto/sodium-native/issues/214 + # this isn't necessary in this case. + while IFS= read -r -d ''' file; do + # Skip PEs with the same name + if patchelf --print-rpath "$file" &>/dev/null; then + patchelf "$file" --clear-execstack + fi + done < <(find $out/lib/node_modules -name 'sodium-native.node' -print0) + ''; + meta = { description = "HyperCmd Utils"; homepage = "https://github.com/holepunchto/hyper-cmd-utils"; diff --git a/pkgs/by-name/hy/hypercore/package-lock.json b/pkgs/by-name/hy/hypercore/package-lock.json deleted file mode 100644 index 686597510833d..0000000000000 --- a/pkgs/by-name/hy/hypercore/package-lock.json +++ /dev/null @@ -1,5272 +0,0 @@ -{ - "name": "hypercore", - "version": "11.7.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "hypercore", - "version": "11.7.0", - "license": "MIT", - "dependencies": { - "@hyperswarm/secret-stream": "^6.0.0", - "b4a": "^1.1.0", - "bare-events": "^2.2.0", - "big-sparse-array": "^1.0.3", - "compact-encoding": "^2.11.0", - "fast-fifo": "^1.3.0", - "flat-tree": "^1.9.0", - "hypercore-crypto": "^3.2.1", - "hypercore-errors": "^1.2.0", - "hypercore-id-encoding": "^1.2.0", - "hypercore-storage": "^1.0.0", - "is-options": "^1.0.1", - "nanoassert": "^2.0.0", - "protomux": "^3.5.0", - "quickbit-universal": "^2.2.0", - "random-array-iterator": "^1.0.0", - "safety-catch": "^1.0.1", - "sodium-universal": "^5.0.1", - "streamx": "^2.12.4", - "unslab": "^1.3.0", - "z32": "^1.0.0" - }, - "devDependencies": { - "brittle": "^3.0.0", - "debugging-stream": "^3.1.0", - "hyperswarm": "^4.3.6", - "rache": "^1.0.0", - "range-parser": "^1.2.1", - "speedometer": "^1.1.0", - "standard": "^17.0.0", - "test-tmp": "^1.0.2", - "tiny-byte-size": "^1.1.0", - "udx-native": "^1.6.1", - "uncaughts": "^1.1.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hyperswarm/secret-stream": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.8.1.tgz", - "integrity": "sha512-F3fr8CKB6za9Ac7ifjgAe07qnnesl5kS0MtLsyKxA1Og8E+FZykdwLpgoLjnEa7G6E1L56lASLr42E4kd20sog==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^4.0.0", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^5.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assert": { - "name": "bare-assert", - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bare-addon-resolve": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.9.4.tgz", - "integrity": "sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg==", - "license": "Apache-2.0", - "dependencies": { - "bare-module-resolve": "^1.10.0", - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-ansi-escapes": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/bare-ansi-escapes/-/bare-ansi-escapes-2.2.3.tgz", - "integrity": "sha512-02ES4/E2RbrtZSnHJ9LntBhYkLA6lPpSEeP8iqS3MccBIVhVBlEmruF1I7HZqx5Q8aiTeYfQVeqmrU9YO2yYoQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.5" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-cov": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bare-cov/-/bare-cov-1.1.1.tgz", - "integrity": "sha512-YP0QjpKznC55rn3fc3hOPjcegm1eu/ZHVwS+t1c48O48bWMspWzBY+9a6fI5sb/PGwqv47W4clpnmcy7vKhYrQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-inspector": "^4.0.1", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-url": "^2.1.5", - "bare-v8-to-istanbul": "v1.0.0", - "picomatch": "^4.0.2", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-crypto": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/bare-crypto/-/bare-crypto-1.4.4.tgz", - "integrity": "sha512-xssBzK7GpQUc70sk++eibRs0moYcqVqbODrPZCT3h8bXnw4aUt4ntSzgkclriKCNjgEoS3nZGcSH5hW3HMKowA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.3" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-debug-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bare-debug-log/-/bare-debug-log-2.0.0.tgz", - "integrity": "sha512-Vi42PkMQsNV9PUpx2Gl1hikshx5O9FzMJ6o9Nnopseg7qLBBK7Nl31d0RHcfwLEAfmcPApytpc0ZFfq68u22FQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-dns": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/bare-dns/-/bare-dns-2.0.5.tgz", - "integrity": "sha512-C8JF4f/nXXtzyyqyKaSs74HgYZCW3VcG836D0nmANQWGgZlKpw6VMHfpAZM7O4ljcyaNYxdq9pOKE+WXh3AOgA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-env": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-env/-/bare-env-3.0.0.tgz", - "integrity": "sha512-0u964P5ZLAxTi+lW4Kjp7YRJQ5gZr9ycYOtjLxsSrupgMz3sn5Z9n4SH/JIifHwvadsf1brA2JAjP+9IOWwTiw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "license": "Apache-2.0" - }, - "node_modules/bare-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-format/-/bare-format-1.0.1.tgz", - "integrity": "sha512-1oS+LZrWK6tnYnvNSHDGljc2MPunRxwhpFriuCgzNF+oklrnwmBKD91tS0yt+jpl2j3UgcSDzBIMiVTvLs9A8w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", - "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-hrtime": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/bare-hrtime/-/bare-hrtime-2.0.11.tgz", - "integrity": "sha512-Mnb2rnGRSHzNHQwFrK8VVqD8Oob/CiSsBlgZGKQ1xTj25GPI19sXHjUPzrkHOU1DaoVj1ig1VO7rZGaYOfXPaw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-http1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bare-http1/-/bare-http1-4.0.2.tgz", - "integrity": "sha512-6Jns5oBG9LFz/U2PuFk2LHQbQ1ZuUgPyuahfbNikPL/HcjpSGdSl0xMiN3Qt852Xm1sLBsTGxl0OoM2cVCYzNQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.3.0", - "bare-tcp": "^2.0.0" - } - }, - "node_modules/bare-https": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bare-https/-/bare-https-2.0.0.tgz", - "integrity": "sha512-qmjNZmYQ4nn+k3CLlxVyOqWYamdBPqE7psR5/lFWG39fskAR4C2h29d1Ka5BeWOGDAWhXImFIwZUxwCE/7xeLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-http1": "^4.0.0", - "bare-tcp": "^2.0.0", - "bare-tls": "^2.0.0" - } - }, - "node_modules/bare-inspect": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/bare-inspect/-/bare-inspect-3.0.8.tgz", - "integrity": "sha512-Z3McUtoM/saxTBtr7l4M9ADR1m5foXwtxJrO1OPaBLN25M4lNHVm7uwL9e0qlS8kuLXTI41TLEN4S9veJ3EJJA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-ansi-escapes": "^2.1.0", - "bare-type": "^1.0.0" - } - }, - "node_modules/bare-inspector": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bare-inspector/-/bare-inspector-4.0.1.tgz", - "integrity": "sha512-MZGIci2OFzwDNWlY/JUmEVtK/0xa+mbdggOB0jSI0WYkQpyxaiD4q/8xZ42k4kOoZNLKpYMI31wmllm6jS5w9g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.1.0", - "bare-http1": "^4.0.0", - "bare-stream": "^2.0.0", - "bare-url": "^2.0.0", - "bare-ws": "^2.0.0" - }, - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-module-resolve": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.10.2.tgz", - "integrity": "sha512-C9COe/GhWfVXKytW3DElTkiBU+Gb2OXeaVkdGdRB/lp26TVLESHkTGS876iceAGdvtPgohfp9nX8vXHGvN3++Q==", - "license": "Apache-2.0", - "dependencies": { - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", - "license": "Apache-2.0", - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-pipe": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bare-pipe/-/bare-pipe-4.0.6.tgz", - "integrity": "sha512-S9kpDJq74gkceynfRqXCaED119k2jF2us4U9xZnTLX0GEduWQY29MNTpAMAf/ucEailW9SPLjGLzbfPCONz3Lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-process": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/bare-semver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.1.tgz", - "integrity": "sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg==", - "license": "Apache-2.0" - }, - "node_modules/bare-signals": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bare-signals/-/bare-signals-4.0.2.tgz", - "integrity": "sha512-+V7ngZRbkQDN6OJj1/Evm725HeXvZ3onHI52jBi/LJAe2bSPn2sNZI1Y9xu0MlebhROdRTqa7lpN/OQVDMRt3g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.3", - "bare-os": "^3.3.1" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", - "license": "Apache-2.0", - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/bare-subprocess": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/bare-subprocess/-/bare-subprocess-5.0.4.tgz", - "integrity": "sha512-inV6g89grjzvCH7YZ53ppXQj90Ank+vSB2xu9v/yqR8KyA7Q05U/I1AwFi4BaEWMTDz6je5z0TdaNRpUm6dKbA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.5.4", - "bare-os": "^3.0.1", - "bare-pipe": "^4.0.0" - }, - "engines": { - "bare": ">=1.7.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-tcp": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/bare-tcp/-/bare-tcp-2.0.4.tgz", - "integrity": "sha512-Xv0DgOwG0zZwmckY43aRs2iOGewkgXlsBu0oWv3h7Y7sGl8a2tyNe4frxYWRRN3N09SwUJZtid1RSW315MDXmg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-dns": "^2.0.4", - "bare-events": "^2.5.4", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-tls": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/bare-tls/-/bare-tls-2.0.5.tgz", - "integrity": "sha512-Yy/QkenaComG5LWB7u6LetL0witdb85TRbf/llx+byaKtnW0awt98Z4i3eCgZQB++aUWdh/+eXeOBpffCE0INw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-tty": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/bare-tty/-/bare-tty-5.0.2.tgz", - "integrity": "sha512-xOHwI7zZl2Opm7Rul5O+okE32j7O14feJhgovJX2EghtQ2IWVfiC1oH0DmFruMvKthvhZY/Lpg8n5SVBaZhV1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.2.0", - "bare-signals": "^4.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-type": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.0.6.tgz", - "integrity": "sha512-6QFeIIp1d06xU9BjDPkl8+QeHil3TKSDpIKUid6bQzwYvxFOnMVhAifRS3J0fvWirEMlWmqxDDKjHW8RPe6C3Q==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-url": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/bare-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.2.1.tgz", - "integrity": "sha512-R7fKMh8mr4TwVsIP3MzBc9ZFha1904FMIixWDtuLb5XlNIDQ7It4atE1UND5TZHTB0LpNSj81hL207d2+dU3jQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^2.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-v8-to-istanbul": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-v8-to-istanbul/-/bare-v8-to-istanbul-1.0.0.tgz", - "integrity": "sha512-5xm9ykzWrk7ntC0Ps2tnNwlFlEAMb3Rk0w/WlwJ/A1xboTQKa9f+NO/31PXB5LspMaz9Qv2pnIwiiHWEnk+kXQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "assert": "npm:bare-assert", - "bare-assert": "^1.0.2", - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.0", - "bare-url": "^2.1.5", - "bare-utils": "^1.2.0", - "fs": "npm:bare-fs", - "path": "npm:bare-path", - "process": "npm:bare-process", - "url": "npm:bare-url", - "util": "npm:bare-utils", - "v8-to-istanbul": "^9.3.0", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-ws": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bare-ws/-/bare-ws-2.0.1.tgz", - "integrity": "sha512-ugewb5bmg3k4ICBe1Rkd6Z80/E082xDjyrVDMfk/4HJoTeqIiDZ+hJKJMEXsyfo482Gk6QpNq0ixRjIIumpubA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-crypto": "^1.2.0", - "bare-events": "^2.3.1", - "bare-http1": "^4.0.0", - "bare-https": "^2.0.0", - "bare-stream": "^2.1.2" - } - }, - "node_modules/big-sparse-array": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/big-sparse-array/-/big-sparse-array-1.0.3.tgz", - "integrity": "sha512-6RjV/3mSZORlMdpUaQ6rUSpG637cZm0//E54YYGtQg1c1O+AbZP8UTdJ/TchsDZcTVLmyWZcseBfp2HBeXUXOQ==", - "license": "MIT" - }, - "node_modules/bits-to-bytes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bits-to-bytes/-/bits-to-bytes-1.3.0.tgz", - "integrity": "sha512-OJoHTpFXS9bXHBCekGTByf3MqM8CGblBDIduKQeeVVeiU9dDWywSSirXIBYGgg3d1zbVuvnMa1vD4r6PA0kOKg==", - "dev": true, - "license": "ISC", - "dependencies": { - "b4a": "^1.5.0" - } - }, - "node_modules/blind-relay": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/blind-relay/-/blind-relay-1.4.0.tgz", - "integrity": "sha512-6xt7fDfCs6eGmNNym6I9N42jmjcMQn2qwwOVnkP9ZnrkXFk6c4/tdO1xqRmDEzKzV8gigd+DVdCUG/RUYnen7Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4", - "bare-events": "^2.2.0", - "bits-to-bytes": "^1.3.0", - "compact-encoding": "^2.12.0", - "compact-encoding-bitfield": "^1.0.0", - "protomux": "^3.5.1", - "sodium-universal": "^5.0.0", - "streamx": "^2.15.1" - } - }, - "node_modules/bogon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bogon/-/bogon-1.1.0.tgz", - "integrity": "sha512-a6SnToksXHuUlgeMvI/txWmTcKz7c7iBa8f0HbXL4toN1Uza/CTQ4F7n9jSDX49TCpxv3KUP100q4sZfwLyLiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "compact-encoding": "^2.11.0", - "compact-encoding-net": "^1.2.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brittle": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/brittle/-/brittle-3.16.2.tgz", - "integrity": "sha512-wST8oJbMEhLoy1gZ8x4x1FUTfzcwnMTsvkWbUmtG8068Q/4/9gfkcZh9WpmhDmD0VESALpZpB8SmnTYpU/jWPQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.0", - "bare-cov": "^1.1.0", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-subprocess": "^5.0.0", - "error-stack-parser": "^2.1.4", - "globbie": "^1.0.2", - "paparam": "^1.6.2", - "same-object": "^1.0.2", - "test-tmp": "^1.4.0", - "tmatch": "^5.0.0" - }, - "bin": { - "brittle": "bin/node.js", - "brittle-bare": "bin/bare.js", - "brittle-node": "bin/node.js", - "brittle-pear": "bin/pear.js" - } - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/builtins/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/compact-encoding": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/compact-encoding/-/compact-encoding-2.16.1.tgz", - "integrity": "sha512-vP39X4nwtesmZucaAxDg4wnudOoaJTSR+fikzi8VLVxbwLmcWXf3t0LxY0n2H1AMpdoQZ08lmUf4GY3XiDPnMQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.3.0" - } - }, - "node_modules/compact-encoding-bitfield": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/compact-encoding-bitfield/-/compact-encoding-bitfield-1.0.0.tgz", - "integrity": "sha512-3nMVKUg+PF72UHfainmCL8uKvyWfxsjqOtUY+HiMPGLPCTjnwzoKfFAMo1Ad7nwTPdjBqtGK5b3BOFTFW4EBTg==", - "dev": true, - "license": "ISC", - "dependencies": { - "compact-encoding": "^2.4.1" - } - }, - "node_modules/compact-encoding-net": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/compact-encoding-net/-/compact-encoding-net-1.2.0.tgz", - "integrity": "sha512-LVXpNpF7PGQeHRVVLGgYWzuVoYAaDZvKUsUxRioGfkotzvOh4AzoQF1HBH3zMNaSnx7gJXuUr3hkjnijaH/Eng==", - "dev": true, - "license": "ISC", - "dependencies": { - "compact-encoding": "^2.4.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debugging-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debugging-stream/-/debugging-stream-3.1.0.tgz", - "integrity": "sha512-WZw2HC1sz5CE0FhFHPsycN9HDDSNr9ytZGnEcYjWaP4dNzePS8EPnuiiQDmhMjQ6vE2K/X2UWoSTOAcCilprCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "streamx": "^2.20.2" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/device-file": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/device-file/-/device-file-1.2.6.tgz", - "integrity": "sha512-gHH0lYHWvxjDOstkLji6ExtmYUPtpgICdkEeOuKkodiz111e7rPZP1WWwHlEmvA/gDNQl3KJkbWJ8YDidu3C4A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.7", - "bare-fs": "^4.0.1", - "fs-native-extensions": "^1.4.0" - } - }, - "node_modules/dht-rpc": { - "version": "6.18.1", - "resolved": "https://registry.npmjs.org/dht-rpc/-/dht-rpc-6.18.1.tgz", - "integrity": "sha512-uTcHj8dERVjmoUsSxqAulQ+qo11Qy4pMK419tyF2cFpyf56Y09u1v9g8yWlay0KjUY5bvdybBQ/V8YWN/wyK5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.1", - "bare-events": "^2.2.0", - "compact-encoding": "^2.11.0", - "compact-encoding-net": "^1.2.0", - "fast-fifo": "^1.1.0", - "kademlia-routing-table": "^1.0.1", - "nat-sampler": "^1.0.1", - "sodium-universal": "^5.0.0", - "streamx": "^2.13.2", - "time-ordered-set": "^2.0.0", - "udx-native": "^1.5.3" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", - "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peerDependencies": { - "eslint": "^8.8.0", - "eslint-plugin-react": "^7.28.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-tree": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/flat-tree/-/flat-tree-1.12.1.tgz", - "integrity": "sha512-GchQ+onbnw5QaqsGbpcV6c8etAd396X/EVdDxutQMkGapB0lRvV9heIXS6ZffQVCse0hm2hBpK7GJz2Zp7qiMg==", - "license": "MIT" - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fs": { - "name": "bare-fs", - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", - "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/fs-native-extensions": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.4.2.tgz", - "integrity": "sha512-QoQqYdHJTtfHUUO/ylyKSrt3dtPDyXCAjzveqCxPsV3hpIMNt455ua470+iTKJ8lFZ94pLC6Dv1TBbwOFLiV5w==", - "license": "Apache-2.0", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generate-object-property": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-2.0.0.tgz", - "integrity": "sha512-KwuURPyqn2Mz8DdV29pJwQu0Y7tcsbkULr82eeOcY/ZllFK6I9Wm8dsRByIu7CKWlFi9BdW1b3mcXMp/kQBQsw==", - "license": "MIT", - "dependencies": { - "is-property": "^1.0.0" - } - }, - "node_modules/generate-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/generate-string/-/generate-string-1.0.1.tgz", - "integrity": "sha512-IfTY0dKZM43ACyGvXkbG7De7WY7MxTS5VO6Juhe8oJKpCmrYYXoqp/cJMskkpi0k9H8wuXq0H+eI898/BCqvXg==", - "license": "MIT" - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globbie": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globbie/-/globbie-1.0.3.tgz", - "integrity": "sha512-hcryJmKcftf82xfBWTWxuUITWIIoYO3ec104V17SMHGFl6VLbm1d1Ju9LX9L+jyJTwICpemX/dmPI/HGYoKr1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "picomatch": "^4.0.2" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hypercore-crypto": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/hypercore-crypto/-/hypercore-crypto-3.6.0.tgz", - "integrity": "sha512-0slkW1wzq4B95SD8Z5nt1Yf/3KrIcGsBWTJTsCjHzMXie+sZ5I2IkWcxX1mo4+c0xVESnKAKphKSpGf2kf2BGA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.6", - "compact-encoding": "^2.15.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/hypercore-errors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/hypercore-errors/-/hypercore-errors-1.4.0.tgz", - "integrity": "sha512-WoaT467lNbDCglxisthpoC1mpBOH/CoM5IADPQm6BvPzZqXca1S6N1uoflLnZOIre9klCr1SdUnLgDWXLalJ7A==", - "license": "Apache-2.0" - }, - "node_modules/hypercore-id-encoding": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hypercore-id-encoding/-/hypercore-id-encoding-1.3.0.tgz", - "integrity": "sha512-W6sHdGo5h7LXEsoWfKf/KfuROZmZRQDlGqJF2EPHW+noCK66Vvr0+zE6cL0vqQi18s0kQPeN7Sq3QyR0Ytc2VQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.5.3", - "z32": "^1.0.0" - } - }, - "node_modules/hypercore-storage": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/hypercore-storage/-/hypercore-storage-1.14.0.tgz", - "integrity": "sha512-IkCRvDaBbZqR0nORvhtVN2h5NtJ/Of+dmxCy7tGzjW51cLrouBCJVBNJ005D6yIiEEvTMFogxPZIA+ZTFEP80Q==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.7", - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0", - "compact-encoding": "^2.16.0", - "device-file": "^1.2.2", - "flat-tree": "^1.12.1", - "hypercore-crypto": "^3.4.2", - "hyperschema": "^1.7.0", - "index-encoder": "^3.3.2", - "resolve-reject-promise": "^1.0.0", - "rocksdb-native": "^3.1.1", - "scope-lock": "^1.2.4", - "streamx": "^2.21.1" - } - }, - "node_modules/hyperdht": { - "version": "6.20.5", - "resolved": "https://registry.npmjs.org/hyperdht/-/hyperdht-6.20.5.tgz", - "integrity": "sha512-eDAwTmAtE9rjMivgqYtqHalTdBVhhCMBVHlCWRVhEcWtchpDonsd2dmX26lJ0raoF+l9djkXvPcN1/kb9/kykw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@hyperswarm/secret-stream": "^6.6.2", - "b4a": "^1.3.1", - "bare-events": "^2.2.0", - "blind-relay": "^1.3.0", - "bogon": "^1.0.0", - "compact-encoding": "^2.4.1", - "compact-encoding-net": "^1.0.1", - "dht-rpc": "^6.15.1", - "hypercore-crypto": "^3.3.0", - "hypercore-id-encoding": "^1.2.0", - "noise-curve-ed": "^2.0.0", - "noise-handshake": "^4.0.0", - "record-cache": "^1.1.1", - "safety-catch": "^1.0.1", - "signal-promise": "^1.0.3", - "sodium-universal": "^5.0.1", - "streamx": "^2.16.1", - "unslab": "^1.3.0", - "xache": "^1.1.0" - }, - "bin": { - "hyperdht": "bin.js" - } - }, - "node_modules/hyperschema": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/hyperschema/-/hyperschema-1.11.0.tgz", - "integrity": "sha512-oIu1hQ4zO1AqpBc6Dt07WenlELFfs6S6gQETmf7P6UTHwGSPiVc067B6gFxApVRgZuv9cQ4edReILNtHFEgj0A==", - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.0.1", - "compact-encoding": "^2.15.0", - "generate-object-property": "^2.0.0", - "generate-string": "^1.0.1" - } - }, - "node_modules/hyperswarm": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/hyperswarm/-/hyperswarm-4.11.7.tgz", - "integrity": "sha512-/cOHoiuho81u8OdJhJkAg3Byc2X/47doS4pO6L8EMnhPJnYDHtLYa/SdVsbGNjzjso0Q20qAe7WTwbqdtt/diA==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1", - "bare-events": "^2.2.0", - "hyperdht": "^6.11.0", - "safety-catch": "^1.0.2", - "shuffled-priority-queue": "^2.1.0", - "unslab": "^1.3.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/index-encoder": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/index-encoder/-/index-encoder-3.4.0.tgz", - "integrity": "sha512-k3+ENtseFYI9ZPOIZzVH8LlONUvXAcd4jvCPo+Nob/T/2t5R5Rfh8XiFXBG++gHHuVby7HBDp/3YbyEmE481cg==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-options": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-options/-/is-options-1.0.2.tgz", - "integrity": "sha512-u+Ai74c8Q74aS8BuHwPdI1jptGOT1FQXgCq8/zv0xRuE+wRgSMEJLj8lVO8Zp9BeGb29BXY6AsNPinfqjkr7Fg==", - "license": "MIT", - "dependencies": { - "b4a": "^1.1.1" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/kademlia-routing-table": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/kademlia-routing-table/-/kademlia-routing-table-1.0.6.tgz", - "integrity": "sha512-Ve6jwIlUCYvUzBnXnzVRHDZCFgXURW9gmF3r7n05kZs/2rNbLHXwGdcq0qIaSwdmJCvtosgR4JensnVU65hzNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoassert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", - "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==", - "license": "ISC" - }, - "node_modules/nat-sampler": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nat-sampler/-/nat-sampler-1.0.1.tgz", - "integrity": "sha512-yQvyNN7xbqR8crTKk3U8gRgpcV1Az+vfCEijiHu9oHHsnIl8n3x+yXNHl42M6L3czGynAVoOT9TqBfS87gDdcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/noise-curve-ed": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/noise-curve-ed/-/noise-curve-ed-2.1.0.tgz", - "integrity": "sha512-zAzJx+VwZM3w6EA1hTmDhJfvAnCeBQn/1FAeZ0LtGxCcCtlAK/uJXQVF/eDVUOaAZ286lHlx77WJ+qj9SmsRRg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/noise-handshake": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.1.0.tgz", - "integrity": "sha512-ZHt2+mOXTvjtaWS2h/JPvQjmknfKrEld2xdSsRYWXnYiJmK/N+dtxrDVSt1cr9wGAlhH7Ek43lIZNsL5bVeX9A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/paparam": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/paparam/-/paparam-1.8.5.tgz", - "integrity": "sha512-LLsGJwf3bJuf32jAfQYIMbt7oXuY2TXG3aWVHGXrE8o9cwGYIj+r/4J/VBn5Sgo+mA5lXzNnfqPqfBGPBIvjvQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path": { - "name": "bare-path", - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process": { - "name": "bare-process", - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protomux": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/protomux/-/protomux-3.10.1.tgz", - "integrity": "sha512-jgBqx8ZyaBWea/DFG4eOu1scOaeBwcnagiRC1XFVrjeGt7oAb0Pk5udPpBUpJ4DJBRjra50jD6YcZiQQTRqaaA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1", - "compact-encoding": "^2.5.1", - "queue-tick": "^1.0.0", - "safety-catch": "^1.0.1", - "unslab": "^1.3.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "license": "MIT" - }, - "node_modules/quickbit-native": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/quickbit-native/-/quickbit-native-2.4.5.tgz", - "integrity": "sha512-Ku6ESjIpRqpVZxDFFBLaQlSXltYvE0rxFA/090CWV1uxupTiAmEQqp8o/S2ah8J0NT1pxHsDqCOG8J7ITa83sw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "require-addon": "^1.1.0" - } - }, - "node_modules/quickbit-universal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/quickbit-universal/-/quickbit-universal-2.2.0.tgz", - "integrity": "sha512-w02i1R8n7+6pEKTud8DfF8zbFY9o7RtPlUc3jWbtCkDKvhbx/AvV7oNnz4/TcmsPGpSJS+fq5Ud6RH6+YPvSGg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.6.0", - "simdle-universal": "^1.1.0" - }, - "optionalDependencies": { - "quickbit-native": "^2.2.0" - } - }, - "node_modules/rache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rache/-/rache-1.0.0.tgz", - "integrity": "sha512-e0k0g0w/8jOCB+7YqCIlOa+OJ38k0wrYS4x18pMSmqOvLKoyhmMhmQyCcvfY6VaP8D75cqkEnlakXs+RYYLqNg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/random-array-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-array-iterator/-/random-array-iterator-1.0.0.tgz", - "integrity": "sha512-u7xCM93XqKEvPTP6xZp2ehttcAemKnh73oKNf1FvzuVCfpt6dILDt1Kxl1LeBjm2iNIeR49VGFhy4Iz3yOun+Q==", - "license": "MIT" - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ready-resource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ready-resource/-/ready-resource-1.1.2.tgz", - "integrity": "sha512-BN2Yfg/avHpozP+XSo+gsjHQ0AejnfbCJeJT4eamAHSf7dgYmNNWsZqTt5IEc06mjlLao+c2jlTbZvpZyRtRNQ==", - "license": "MIT", - "dependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/record-cache": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.2.0.tgz", - "integrity": "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1" - } - }, - "node_modules/refcounter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/refcounter/-/refcounter-1.0.0.tgz", - "integrity": "sha512-1WosVzUy0kPUaPMEtlNDwm99UsteALIhXXR8rerELoa63WkYIXAl0hxgwPFrIYBRWZPGUyekQ04FRtPJ7dHk9w==", - "license": "Apache-2.0" - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-addon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.1.0.tgz", - "integrity": "sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg==", - "license": "Apache-2.0", - "dependencies": { - "bare-addon-resolve": "^1.3.0", - "bare-url": "^2.1.0" - }, - "engines": { - "bare": ">=1.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-reject-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-reject-promise/-/resolve-reject-promise-1.1.0.tgz", - "integrity": "sha512-LWsTOA91AqzBTjSGgX79Tc130pwcBK6xjpJEO+qRT5IKZ6bGnHKcc8QL3upUBcWuU8OTIDzKK2VNSwmmlqvAVg==", - "license": "MIT" - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rocksdb-native": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rocksdb-native/-/rocksdb-native-3.6.2.tgz", - "integrity": "sha512-+Ih3yVYveBuMDu4meL9Nwimv7G4s53PrAvRpfPFSq8/GejPyhPDgPkIeB8jtYdeWb5RxEpHd7zaax42IW/Vfvw==", - "license": "Apache-2.0", - "dependencies": { - "compact-encoding": "^2.15.0", - "ready-resource": "^1.0.0", - "refcounter": "^1.0.0", - "require-addon": "^1.0.2", - "resolve-reject-promise": "^1.1.0", - "streamx": "^2.16.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safety-catch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/safety-catch/-/safety-catch-1.0.2.tgz", - "integrity": "sha512-C1UYVZ4dtbBxEtvOcpjBaaD27nP8MlvyAQEp2fOTOEe6pfUpk1cDUxij6BR1jZup6rSyUTaBBplK7LanskrULA==", - "license": "MIT" - }, - "node_modules/same-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/same-object/-/same-object-1.0.2.tgz", - "integrity": "sha512-csHWhvUsLbIOHDM/nP+KHWM+BLPsIzWkFa8HbzaI0G7BqKXgx+7FJpKTGgLXyz5amfdY2OVBcmXTqYOMEk04og==", - "dev": true, - "license": "MIT" - }, - "node_modules/scope-lock": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/scope-lock/-/scope-lock-1.2.4.tgz", - "integrity": "sha512-BpSd8VCuCxW9ZitcdIC/vjs3gMaP9bRBL5nkHcyfX2VrS52n13/rHuBA2xJ/S/4DPuRdAO/Bk8pWd8eD/gHCIA==", - "license": "Apache-2.0" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shuffled-priority-queue": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/shuffled-priority-queue/-/shuffled-priority-queue-2.1.0.tgz", - "integrity": "sha512-xhdh7fHyMsr0m/w2kDfRJuBFRS96b9l8ZPNWGaQ+PMvnUnZ/Eh+gJJ9NsHBd7P9k0399WYlCLzsy18EaMfyadA==", - "dev": true, - "license": "MIT", - "dependencies": { - "unordered-set": "^2.0.1" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-promise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/signal-promise/-/signal-promise-1.0.3.tgz", - "integrity": "sha512-WBgv0UnIq2C+Aeh0/n+IRpP6967eIx9WpynTUoiW3isPpfe1zu2LJzyfXdo9Tgef8yR/sGjcMvoUXD7EYdiz+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/simdle-native": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/simdle-native/-/simdle-native-1.3.6.tgz", - "integrity": "sha512-WXb3AUnMVOgfMbrOlz0SVpL8pMpC9K2WX/wJ7k5alqza77tO/4vCF7pUtuiPJdMxEBIsX30joKRY7JWRJ4yHqQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "b4a": "^1.6.0", - "require-addon": "^1.1.0" - } - }, - "node_modules/simdle-universal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/simdle-universal/-/simdle-universal-1.1.2.tgz", - "integrity": "sha512-3n3w1bs+uwgHKQjt6arez83EywNlhZzYvNOhvAASTl/8KqNIcqr6aHyGt3JRlfuUC7iB0tomJRPlJ2cRGIpBzA==", - "license": "ISC", - "dependencies": { - "b4a": "^1.6.0" - }, - "optionalDependencies": { - "simdle-native": "^1.1.1" - } - }, - "node_modules/sodium-native": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.3.tgz", - "integrity": "sha512-8mmRxZtN9Lw2foyBFuRO193OYmyQ9fnXQrWIcUHn3XLmGZEU3QkCFauLA8zokoGM0nfsdo1OuvGOlL7591dYeQ==", - "license": "MIT", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/sodium-secretstream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sodium-secretstream/-/sodium-secretstream-1.2.0.tgz", - "integrity": "sha512-q/DbraNFXm1KfCiiZvapmz5UC3OlpirYFIvBK2MhGaOFSb3gRyk8OXTi17UI9SGfshQNCpsVvlopogbzZNyW6Q==", - "license": "MIT", - "dependencies": { - "b4a": "^1.1.1", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, - "node_modules/speedometer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.1.0.tgz", - "integrity": "sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT" - }, - "node_modules/standard": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.2.tgz", - "integrity": "sha512-WLm12WoXveKkvnPnPnaFUUHuOB2cUdAsJ4AiGHL2G0UNMrcRAWY2WriQaV8IQ3oRmYr0AWUbLNr94ekYFAHOrA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "eslint": "^8.41.0", - "eslint-config-standard": "17.1.0", - "eslint-config-standard-jsx": "^11.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.36.1", - "standard-engine": "^15.1.0", - "version-guard": "^1.1.1" - }, - "bin": { - "standard": "bin/cmd.cjs" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", - "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.6", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-tmp": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/test-tmp/-/test-tmp-1.4.0.tgz", - "integrity": "sha512-GVggxGg+jXqP2Wbju50JVLo+9E+nIOPPyWqgr63EbOnNItIKu1cEbJpTWAJeflnyGqXOtcMI7ijHRp88GUkfDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bare-fs": "^4.0.1", - "bare-os": "^3.3.0", - "bare-path": "^3.0.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/time-ordered-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/time-ordered-set/-/time-ordered-set-2.0.1.tgz", - "integrity": "sha512-VJEKmgSN2UiOLB8BpN8Sh2b9LGMHTP5OPrQRpnKjvOheOyzk0mufbjzjKTIG2gO4A+Y+vDJ+0TcLbpUmMLsg8A==", - "dev": true, - "license": "MIT" - }, - "node_modules/timeout-refresh": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-2.0.1.tgz", - "integrity": "sha512-SVqEcMZBsZF9mA78rjzCrYrUs37LMJk3ShZ851ygZYW1cMeIjs9mL57KO6Iv5mmjSQnOe/29/VAfGXo+oRCiVw==", - "license": "MIT" - }, - "node_modules/tiny-byte-size": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-byte-size/-/tiny-byte-size-1.1.0.tgz", - "integrity": "sha512-OQ+i4RZzIQ0CR22DEr3G+ckRwN93R9UQMNqeym41Ntfj/dchPyWu1cuu8mvdCv61Ng3uOmNgX+8WesK1f37x+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/tmatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-5.0.0.tgz", - "integrity": "sha512-Ib9OtBkpHn07tXP04SlN1SYRxFgTk6wSM2EBmjjxug4u5RXPRVLkdFJSS1PmrQidaSB8Lru9nRtViQBsbxzE5Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/udx-native": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/udx-native/-/udx-native-1.17.8.tgz", - "integrity": "sha512-nB5SxTF9WzTNrxJnVSyEOtapoPjxAU1KboN/z1JWMtAVXArwtQ9Mxn+jJvlx4skINQHH6xUqQsQdSCL1Ja2h1Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.5.0", - "bare-events": "^2.2.0", - "require-addon": "^1.1.0", - "streamx": "^2.14.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uncaughts": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/uncaughts/-/uncaughts-1.1.1.tgz", - "integrity": "sha512-UuD2hCFnjsoGRsMH2m6cpbRPwUSdCeQw9xjf6gIV48l43Y5lvdrWm4FvBDS8UXtsjx6D6K6BvJy3rloUAiZRYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "which-runtime": "^1.2.1" - } - }, - "node_modules/unordered-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz", - "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==", - "dev": true, - "license": "MIT" - }, - "node_modules/unslab": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/unslab/-/unslab-1.3.0.tgz", - "integrity": "sha512-YATkfKAFj47kTzmiQrWXMyRvaVrHsW6MEALa4bm+FhiA2YG4oira+Z3DXN6LrYOYn2Y8eO94Lwl9DOHjs1FpoQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.6" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "name": "bare-url", - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/util": { - "name": "bare-utils", - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.2.1.tgz", - "integrity": "sha512-R7fKMh8mr4TwVsIP3MzBc9ZFha1904FMIixWDtuLb5XlNIDQ7It4atE1UND5TZHTB0LpNSj81hL207d2+dU3jQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^2.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/version-guard": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.3.tgz", - "integrity": "sha512-JwPr6erhX53EWH/HCSzfy1tTFrtPXUe927wdM1jqBBeYp1OM+qPHjWbsvv6pIBduqdgxxS+ScfG7S28pzyr2DQ==", - "dev": true, - "license": "0BSD", - "engines": { - "node": ">=0.10.48" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-runtime": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.2.1.tgz", - "integrity": "sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==", - "license": "Apache-2.0" - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/xache": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", - "integrity": "sha512-igRS6jPreJ54ABdzhh4mCDXcz+XMaWO2q1ABRV2yWYuk29jlp8VT7UBdCqNkX7rpYBbXsebVVKkwIuYZjyZNqA==", - "dev": true, - "license": "MIT" - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/z32": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/z32/-/z32-1.1.0.tgz", - "integrity": "sha512-1WUHy+VS6d0HPNspDxvLssBbeQjXMjSnpv0vH82vRAUfg847NmX3OXozp/hRP5jPhxBbrVzrgvAt+UsGNzRFQQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.5.3" - } - } - } -} diff --git a/pkgs/by-name/hy/hypercore/package.nix b/pkgs/by-name/hy/hypercore/package.nix deleted file mode 100644 index c2a7bac4121d7..0000000000000 --- a/pkgs/by-name/hy/hypercore/package.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - lib, - buildNpmPackage, - fetchFromGitHub, - nix-update-script, -}: - -buildNpmPackage (finalAttrs: { - pname = "hypercore"; - version = "11.13.0"; - - src = fetchFromGitHub { - owner = "holepunchto"; - repo = "hypercore"; - tag = "v${finalAttrs.version}"; - hash = "sha256-YaSmKjJKWkA4UUK/1LF9wqS4PvdFHrrc+yzvz+QmL0A="; - }; - - npmDepsHash = "sha256-ZJxVmQWKgHyKkuYfGIlANXFcROjI7fibg6mxIhDZowM="; - - dontNpmBuild = true; - - postPatch = '' - cp ${./package-lock.json} ./package-lock.json - ''; - - passthru.updateScript = nix-update-script { - extraArgs = [ - "--generate-lockfile" - ]; - }; - - meta = { - description = "Secure, distributed append-only log"; - homepage = "https://github.com/holepunchto/hypercore"; - license = lib.licenses.mit; - teams = with lib.teams; [ ngi ]; - maintainers = [ lib.maintainers.goodylove ]; - platforms = lib.platforms.all; - }; - -}) diff --git a/pkgs/by-name/hy/hypershell/package.nix b/pkgs/by-name/hy/hypershell/package.nix index 32a394eb77802..fad289f15744f 100644 --- a/pkgs/by-name/hy/hypershell/package.nix +++ b/pkgs/by-name/hy/hypershell/package.nix @@ -3,6 +3,7 @@ lib, fetchurl, fetchFromGitHub, + patchelfUnstable, }: buildNpmPackage rec { @@ -28,8 +29,25 @@ buildNpmPackage rec { }) ]; + nativeBuildInputs = [ + patchelfUnstable # --clear-execstack is only available on 0.18 + ]; + doInstallCheck = true; + postInstall = '' + # glibc 2.41+ refuses to make the stack executable if it isn't executable, + # but a library loaded via `dlopen()` mandates it. + # According to https://github.com/holepunchto/sodium-native/issues/214 + # this isn't necessary in this case. + while IFS= read -r -d ''' file; do + # Skip PEs with the same name + if patchelf --print-rpath "$file" &>/dev/null; then + patchelf "$file" --clear-execstack + fi + done < <(find $out/lib/node_modules -name 'sodium-native.node' -print0) + ''; + installCheckPhase = '' $out/bin/hypershell --help ''; diff --git a/pkgs/by-name/hy/hyperssh/package.nix b/pkgs/by-name/hy/hyperssh/package.nix index 55217d2e19aaa..7a37467517e27 100644 --- a/pkgs/by-name/hy/hyperssh/package.nix +++ b/pkgs/by-name/hy/hyperssh/package.nix @@ -3,6 +3,7 @@ fetchFromGitHub, fetchurl, lib, + patchelfUnstable, }: buildNpmPackage { @@ -30,6 +31,23 @@ buildNpmPackage { }) ]; + nativeBuildInputs = [ + patchelfUnstable # --clear-execstack is only available on 0.18 + ]; + + postInstall = '' + # glibc 2.41+ refuses to make the stack executable if it isn't executable, + # but a library loaded via `dlopen()` mandates it. + # According to https://github.com/holepunchto/sodium-native/issues/214 + # this isn't necessary in this case. + while IFS= read -r -d ''' file; do + # Skip PEs with the same name + if patchelf --print-rpath "$file" &>/dev/null; then + patchelf "$file" --clear-execstack + fi + done < <(find $out/lib/node_modules -name 'sodium-native.node' -print0) + ''; + meta = { description = "Run SSH over hyperswarm"; homepage = "https://github.com/mafintosh/hyperssh"; diff --git a/pkgs/by-name/hy/hyperswarm/package-lock.json b/pkgs/by-name/hy/hyperswarm/package-lock.json deleted file mode 100644 index 30e80346e71e6..0000000000000 --- a/pkgs/by-name/hy/hyperswarm/package-lock.json +++ /dev/null @@ -1,4969 +0,0 @@ -{ - "name": "hyperswarm", - "version": "4.11.5", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "hyperswarm", - "version": "4.11.5", - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1", - "bare-events": "^2.2.0", - "hyperdht": "^6.11.0", - "safety-catch": "^1.0.2", - "shuffled-priority-queue": "^2.1.0", - "unslab": "^1.3.0" - }, - "devDependencies": { - "brittle": "^3.0.2", - "hypercore-crypto": "^3.4.0", - "standard": "^17.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", - "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hyperswarm/secret-stream": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.8.1.tgz", - "integrity": "sha512-F3fr8CKB6za9Ac7ifjgAe07qnnesl5kS0MtLsyKxA1Og8E+FZykdwLpgoLjnEa7G6E1L56lASLr42E4kd20sog==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^4.0.0", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^5.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assert": { - "name": "bare-assert", - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bare-addon-resolve": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.9.4.tgz", - "integrity": "sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg==", - "license": "Apache-2.0", - "dependencies": { - "bare-module-resolve": "^1.10.0", - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-ansi-escapes": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/bare-ansi-escapes/-/bare-ansi-escapes-2.2.3.tgz", - "integrity": "sha512-02ES4/E2RbrtZSnHJ9LntBhYkLA6lPpSEeP8iqS3MccBIVhVBlEmruF1I7HZqx5Q8aiTeYfQVeqmrU9YO2yYoQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.5" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-assert/-/bare-assert-1.0.2.tgz", - "integrity": "sha512-7AGTrUCz7OOWnMOp4hWnksAkFeZlvW7WMwvKQBANVJIOtjWa6RLSPyUN+zs3QBufRZwIYhYB3UpkAlDbBPp2/Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-cov": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bare-cov/-/bare-cov-1.1.0.tgz", - "integrity": "sha512-y5ik6JY3Gd1Eb0+9GDWOSHPQ+/Mgyj40du1fTlCiEklyMTPhgOJUMRwzAka1V+8KkvgQ8OEbkK/xL4XEfPYGQA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-inspector": "^4.0.1", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-url": "^2.1.5", - "bare-v8-to-istanbul": "v1.0.0", - "picomatch": "^4.0.2", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-crypto": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/bare-crypto/-/bare-crypto-1.4.3.tgz", - "integrity": "sha512-XlIhSB+2ht2+Yli2Ic+HhOvdP0vd+TWWISxzYp50EwfsOwCI4TaeONj5hIr6aDWKhYn0FMsFec7U30QOIXMD4Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.3" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-debug-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-debug-log/-/bare-debug-log-1.0.0.tgz", - "integrity": "sha512-tN02RFk6yiS2s7DerJVLvE4W/xrRkNMiCilvS/3fQbu72tj1rteXcQMiztICX5Z3yYsTNJrBokUnAUPjfDU45A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^2.3.0" - } - }, - "node_modules/bare-debug-log/node_modules/bare-os": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", - "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-dns": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/bare-dns/-/bare-dns-2.0.5.tgz", - "integrity": "sha512-C8JF4f/nXXtzyyqyKaSs74HgYZCW3VcG836D0nmANQWGgZlKpw6VMHfpAZM7O4ljcyaNYxdq9pOKE+WXh3AOgA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-env": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-env/-/bare-env-3.0.0.tgz", - "integrity": "sha512-0u964P5ZLAxTi+lW4Kjp7YRJQ5gZr9ycYOtjLxsSrupgMz3sn5Z9n4SH/JIifHwvadsf1brA2JAjP+9IOWwTiw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "license": "Apache-2.0" - }, - "node_modules/bare-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-format/-/bare-format-1.0.1.tgz", - "integrity": "sha512-1oS+LZrWK6tnYnvNSHDGljc2MPunRxwhpFriuCgzNF+oklrnwmBKD91tS0yt+jpl2j3UgcSDzBIMiVTvLs9A8w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-fs": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.4.tgz", - "integrity": "sha512-r8+26Voz8dGX3AYpJdFb1ZPaUSM8XOLCZvy+YGpRTmwPHIxA7Z3Jov/oMPtV7hfRQbOnH8qGlLTzQAbgtdNN0Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-hrtime": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/bare-hrtime/-/bare-hrtime-2.0.11.tgz", - "integrity": "sha512-Mnb2rnGRSHzNHQwFrK8VVqD8Oob/CiSsBlgZGKQ1xTj25GPI19sXHjUPzrkHOU1DaoVj1ig1VO7rZGaYOfXPaw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bare-http1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bare-http1/-/bare-http1-4.0.2.tgz", - "integrity": "sha512-6Jns5oBG9LFz/U2PuFk2LHQbQ1ZuUgPyuahfbNikPL/HcjpSGdSl0xMiN3Qt852Xm1sLBsTGxl0OoM2cVCYzNQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.3.0", - "bare-tcp": "^2.0.0" - } - }, - "node_modules/bare-https": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bare-https/-/bare-https-2.0.0.tgz", - "integrity": "sha512-qmjNZmYQ4nn+k3CLlxVyOqWYamdBPqE7psR5/lFWG39fskAR4C2h29d1Ka5BeWOGDAWhXImFIwZUxwCE/7xeLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-http1": "^4.0.0", - "bare-tcp": "^2.0.0", - "bare-tls": "^2.0.0" - } - }, - "node_modules/bare-inspect": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/bare-inspect/-/bare-inspect-3.0.8.tgz", - "integrity": "sha512-Z3McUtoM/saxTBtr7l4M9ADR1m5foXwtxJrO1OPaBLN25M4lNHVm7uwL9e0qlS8kuLXTI41TLEN4S9veJ3EJJA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-ansi-escapes": "^2.1.0", - "bare-type": "^1.0.0" - } - }, - "node_modules/bare-inspector": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bare-inspector/-/bare-inspector-4.0.1.tgz", - "integrity": "sha512-MZGIci2OFzwDNWlY/JUmEVtK/0xa+mbdggOB0jSI0WYkQpyxaiD4q/8xZ42k4kOoZNLKpYMI31wmllm6jS5w9g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.1.0", - "bare-http1": "^4.0.0", - "bare-stream": "^2.0.0", - "bare-url": "^2.0.0", - "bare-ws": "^2.0.0" - }, - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-module-resolve": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.10.2.tgz", - "integrity": "sha512-C9COe/GhWfVXKytW3DElTkiBU+Gb2OXeaVkdGdRB/lp26TVLESHkTGS876iceAGdvtPgohfp9nX8vXHGvN3++Q==", - "license": "Apache-2.0", - "dependencies": { - "bare-semver": "^1.0.0" - }, - "peerDependencies": { - "bare-url": "*" - }, - "peerDependenciesMeta": { - "bare-url": { - "optional": true - } - } - }, - "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", - "license": "Apache-2.0", - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-pipe": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bare-pipe/-/bare-pipe-4.0.6.tgz", - "integrity": "sha512-S9kpDJq74gkceynfRqXCaED119k2jF2us4U9xZnTLX0GEduWQY29MNTpAMAf/ucEailW9SPLjGLzbfPCONz3Lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-process": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/bare-semver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.1.tgz", - "integrity": "sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg==", - "license": "Apache-2.0" - }, - "node_modules/bare-signals": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bare-signals/-/bare-signals-4.0.2.tgz", - "integrity": "sha512-+V7ngZRbkQDN6OJj1/Evm725HeXvZ3onHI52jBi/LJAe2bSPn2sNZI1Y9xu0MlebhROdRTqa7lpN/OQVDMRt3g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.3", - "bare-os": "^3.3.1" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/bare-subprocess": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/bare-subprocess/-/bare-subprocess-5.0.3.tgz", - "integrity": "sha512-iCx8kfvqClPAQGsbL2RfMubB6EYoZ67ZhaEIpn6wIqIa60p4zLAlGJyEQQtXPo/5dclbpgzWre5hvJ7HzXC/aA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.5.4", - "bare-os": "^3.0.1", - "bare-pipe": "^4.0.0" - }, - "engines": { - "bare": ">=1.7.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-tcp": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/bare-tcp/-/bare-tcp-2.0.4.tgz", - "integrity": "sha512-Xv0DgOwG0zZwmckY43aRs2iOGewkgXlsBu0oWv3h7Y7sGl8a2tyNe4frxYWRRN3N09SwUJZtid1RSW315MDXmg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-dns": "^2.0.4", - "bare-events": "^2.5.4", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-tls": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/bare-tls/-/bare-tls-2.0.4.tgz", - "integrity": "sha512-mJK7CHoXhBEd+z7KIFf0e5GIJgkIp9b9kt7axTmFyUEyQlyzlAzTrQHCkw++PEwF0soNXgOYQtmb+KUqhpgK+g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.7.0" - } - }, - "node_modules/bare-tty": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/bare-tty/-/bare-tty-5.0.2.tgz", - "integrity": "sha512-xOHwI7zZl2Opm7Rul5O+okE32j7O14feJhgovJX2EghtQ2IWVfiC1oH0DmFruMvKthvhZY/Lpg8n5SVBaZhV1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.2.0", - "bare-signals": "^4.0.0", - "bare-stream": "^2.0.0" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/bare-type": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bare-type/-/bare-type-1.0.6.tgz", - "integrity": "sha512-6QFeIIp1d06xU9BjDPkl8+QeHil3TKSDpIKUid6bQzwYvxFOnMVhAifRS3J0fvWirEMlWmqxDDKjHW8RPe6C3Q==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.2.0" - } - }, - "node_modules/bare-url": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/bare-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.2.0.tgz", - "integrity": "sha512-Y9G5DbMUgcx078Etc7h9CD31aI9vYFZ/xl6JLnyvBX9+4lrlXw+5/6toNJGaNSylo4jJf8Cu3yBIDxMLviRFFw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^1.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/bare-v8-to-istanbul": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-v8-to-istanbul/-/bare-v8-to-istanbul-1.0.0.tgz", - "integrity": "sha512-5xm9ykzWrk7ntC0Ps2tnNwlFlEAMb3Rk0w/WlwJ/A1xboTQKa9f+NO/31PXB5LspMaz9Qv2pnIwiiHWEnk+kXQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "assert": "npm:bare-assert", - "bare-assert": "^1.0.2", - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.0", - "bare-url": "^2.1.5", - "bare-utils": "^1.2.0", - "fs": "npm:bare-fs", - "path": "npm:bare-path", - "process": "npm:bare-process", - "url": "npm:bare-url", - "util": "npm:bare-utils", - "v8-to-istanbul": "^9.3.0", - "which-runtime": "^1.2.1" - } - }, - "node_modules/bare-ws": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bare-ws/-/bare-ws-2.0.1.tgz", - "integrity": "sha512-ugewb5bmg3k4ICBe1Rkd6Z80/E082xDjyrVDMfk/4HJoTeqIiDZ+hJKJMEXsyfo482Gk6QpNq0ixRjIIumpubA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-crypto": "^1.2.0", - "bare-events": "^2.3.1", - "bare-http1": "^4.0.0", - "bare-https": "^2.0.0", - "bare-stream": "^2.1.2" - } - }, - "node_modules/bits-to-bytes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bits-to-bytes/-/bits-to-bytes-1.3.0.tgz", - "integrity": "sha512-OJoHTpFXS9bXHBCekGTByf3MqM8CGblBDIduKQeeVVeiU9dDWywSSirXIBYGgg3d1zbVuvnMa1vD4r6PA0kOKg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.5.0" - } - }, - "node_modules/blind-relay": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/blind-relay/-/blind-relay-1.4.0.tgz", - "integrity": "sha512-6xt7fDfCs6eGmNNym6I9N42jmjcMQn2qwwOVnkP9ZnrkXFk6c4/tdO1xqRmDEzKzV8gigd+DVdCUG/RUYnen7Q==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4", - "bare-events": "^2.2.0", - "bits-to-bytes": "^1.3.0", - "compact-encoding": "^2.12.0", - "compact-encoding-bitfield": "^1.0.0", - "protomux": "^3.5.1", - "sodium-universal": "^5.0.0", - "streamx": "^2.15.1" - } - }, - "node_modules/bogon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bogon/-/bogon-1.1.0.tgz", - "integrity": "sha512-a6SnToksXHuUlgeMvI/txWmTcKz7c7iBa8f0HbXL4toN1Uza/CTQ4F7n9jSDX49TCpxv3KUP100q4sZfwLyLiw==", - "license": "MIT", - "dependencies": { - "compact-encoding": "^2.11.0", - "compact-encoding-net": "^1.2.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brittle": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/brittle/-/brittle-3.16.1.tgz", - "integrity": "sha512-1OONeI0lLvN6Atu4oMgvqilyXAE/a/aWqFuPdYaZOkkAXQMGb8fEowVcHJbZloZwdGaTDyNZzrdeGjC73M+rXQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.0", - "bare-cov": "^1.1.0", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "bare-subprocess": "^5.0.0", - "error-stack-parser": "^2.1.4", - "globbie": "^1.0.2", - "paparam": "^1.6.2", - "same-object": "^1.0.2", - "test-tmp": "^1.4.0", - "tmatch": "^5.0.0" - }, - "bin": { - "brittle": "bin/node.js", - "brittle-bare": "bin/bare.js", - "brittle-node": "bin/node.js", - "brittle-pear": "bin/pear.js" - } - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/builtins/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/compact-encoding": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/compact-encoding/-/compact-encoding-2.16.1.tgz", - "integrity": "sha512-vP39X4nwtesmZucaAxDg4wnudOoaJTSR+fikzi8VLVxbwLmcWXf3t0LxY0n2H1AMpdoQZ08lmUf4GY3XiDPnMQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.3.0" - } - }, - "node_modules/compact-encoding-bitfield": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/compact-encoding-bitfield/-/compact-encoding-bitfield-1.0.0.tgz", - "integrity": "sha512-3nMVKUg+PF72UHfainmCL8uKvyWfxsjqOtUY+HiMPGLPCTjnwzoKfFAMo1Ad7nwTPdjBqtGK5b3BOFTFW4EBTg==", - "license": "ISC", - "dependencies": { - "compact-encoding": "^2.4.1" - } - }, - "node_modules/compact-encoding-net": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/compact-encoding-net/-/compact-encoding-net-1.2.0.tgz", - "integrity": "sha512-LVXpNpF7PGQeHRVVLGgYWzuVoYAaDZvKUsUxRioGfkotzvOh4AzoQF1HBH3zMNaSnx7gJXuUr3hkjnijaH/Eng==", - "license": "ISC", - "dependencies": { - "compact-encoding": "^2.4.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dht-rpc": { - "version": "6.18.1", - "resolved": "https://registry.npmjs.org/dht-rpc/-/dht-rpc-6.18.1.tgz", - "integrity": "sha512-uTcHj8dERVjmoUsSxqAulQ+qo11Qy4pMK419tyF2cFpyf56Y09u1v9g8yWlay0KjUY5bvdybBQ/V8YWN/wyK5Q==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.1", - "bare-events": "^2.2.0", - "compact-encoding": "^2.11.0", - "compact-encoding-net": "^1.2.0", - "fast-fifo": "^1.1.0", - "kademlia-routing-table": "^1.0.1", - "nat-sampler": "^1.0.1", - "sodium-universal": "^5.0.0", - "streamx": "^2.13.2", - "time-ordered-set": "^2.0.0", - "udx-native": "^1.5.3" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", - "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peerDependencies": { - "eslint": "^8.8.0", - "eslint-plugin-react": "^7.28.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fs": { - "name": "bare-fs", - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.4.tgz", - "integrity": "sha512-r8+26Voz8dGX3AYpJdFb1ZPaUSM8XOLCZvy+YGpRTmwPHIxA7Z3Jov/oMPtV7hfRQbOnH8qGlLTzQAbgtdNN0Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globbie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/globbie/-/globbie-1.0.2.tgz", - "integrity": "sha512-815R4zBxKIOnMuj9Qf0zlx3VeyDqqX9Oi2KIjRFtofyyUcZCmL8tGAamXG+VTGukLva8MFQDkmTDG8wvVTYF7Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-fs": "^4.1.2", - "bare-path": "^3.0.0", - "bare-process": "^4.2.1", - "brittle": "^3.6.0", - "picomatch": "^4.0.2" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hypercore-crypto": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/hypercore-crypto/-/hypercore-crypto-3.6.0.tgz", - "integrity": "sha512-0slkW1wzq4B95SD8Z5nt1Yf/3KrIcGsBWTJTsCjHzMXie+sZ5I2IkWcxX1mo4+c0xVESnKAKphKSpGf2kf2BGA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.6", - "compact-encoding": "^2.15.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/hypercore-id-encoding": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hypercore-id-encoding/-/hypercore-id-encoding-1.3.0.tgz", - "integrity": "sha512-W6sHdGo5h7LXEsoWfKf/KfuROZmZRQDlGqJF2EPHW+noCK66Vvr0+zE6cL0vqQi18s0kQPeN7Sq3QyR0Ytc2VQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.5.3", - "z32": "^1.0.0" - } - }, - "node_modules/hyperdht": { - "version": "6.20.5", - "resolved": "https://registry.npmjs.org/hyperdht/-/hyperdht-6.20.5.tgz", - "integrity": "sha512-eDAwTmAtE9rjMivgqYtqHalTdBVhhCMBVHlCWRVhEcWtchpDonsd2dmX26lJ0raoF+l9djkXvPcN1/kb9/kykw==", - "license": "MIT", - "dependencies": { - "@hyperswarm/secret-stream": "^6.6.2", - "b4a": "^1.3.1", - "bare-events": "^2.2.0", - "blind-relay": "^1.3.0", - "bogon": "^1.0.0", - "compact-encoding": "^2.4.1", - "compact-encoding-net": "^1.0.1", - "dht-rpc": "^6.15.1", - "hypercore-crypto": "^3.3.0", - "hypercore-id-encoding": "^1.2.0", - "noise-curve-ed": "^2.0.0", - "noise-handshake": "^4.0.0", - "record-cache": "^1.1.1", - "safety-catch": "^1.0.1", - "signal-promise": "^1.0.3", - "sodium-universal": "^5.0.1", - "streamx": "^2.16.1", - "unslab": "^1.3.0", - "xache": "^1.1.0" - }, - "bin": { - "hyperdht": "bin.js" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/kademlia-routing-table": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/kademlia-routing-table/-/kademlia-routing-table-1.0.6.tgz", - "integrity": "sha512-Ve6jwIlUCYvUzBnXnzVRHDZCFgXURW9gmF3r7n05kZs/2rNbLHXwGdcq0qIaSwdmJCvtosgR4JensnVU65hzNQ==", - "license": "MIT", - "dependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoassert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", - "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==", - "license": "ISC" - }, - "node_modules/nat-sampler": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nat-sampler/-/nat-sampler-1.0.1.tgz", - "integrity": "sha512-yQvyNN7xbqR8crTKk3U8gRgpcV1Az+vfCEijiHu9oHHsnIl8n3x+yXNHl42M6L3czGynAVoOT9TqBfS87gDdcw==", - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/noise-curve-ed": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/noise-curve-ed/-/noise-curve-ed-2.1.0.tgz", - "integrity": "sha512-zAzJx+VwZM3w6EA1hTmDhJfvAnCeBQn/1FAeZ0LtGxCcCtlAK/uJXQVF/eDVUOaAZ286lHlx77WJ+qj9SmsRRg==", - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/noise-handshake": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.1.0.tgz", - "integrity": "sha512-ZHt2+mOXTvjtaWS2h/JPvQjmknfKrEld2xdSsRYWXnYiJmK/N+dtxrDVSt1cr9wGAlhH7Ek43lIZNsL5bVeX9A==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/paparam": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/paparam/-/paparam-1.8.3.tgz", - "integrity": "sha512-OLLDV8E+QoDGpHKW+7Fv7yLKJp7iMncaowH2s0oEuix6UXxHHxW8Tg0m0+IePR017UgyEg3CVlYSb1ON5BscVQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path": { - "name": "bare-path", - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process": { - "name": "bare-process", - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.2.1.tgz", - "integrity": "sha512-wcmyQWTHxd2xRgeKUSY46ofmuEAJ9CLo/6swJTHOZFPYpBShMWNPVI2Ba8o0n/X/YE4as99M28x37saWZ1L1vQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-env": "^3.0.0", - "bare-events": "^2.3.1", - "bare-hrtime": "^2.0.0", - "bare-os": "^3.5.0", - "bare-pipe": "^4.0.0", - "bare-signals": "^4.0.0", - "bare-tty": "^5.0.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protomux": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/protomux/-/protomux-3.10.1.tgz", - "integrity": "sha512-jgBqx8ZyaBWea/DFG4eOu1scOaeBwcnagiRC1XFVrjeGt7oAb0Pk5udPpBUpJ4DJBRjra50jD6YcZiQQTRqaaA==", - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1", - "compact-encoding": "^2.5.1", - "queue-tick": "^1.0.0", - "safety-catch": "^1.0.1", - "unslab": "^1.3.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "license": "MIT" - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/record-cache": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.2.0.tgz", - "integrity": "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw==", - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-addon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.1.0.tgz", - "integrity": "sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg==", - "license": "Apache-2.0", - "dependencies": { - "bare-addon-resolve": "^1.3.0", - "bare-url": "^2.1.0" - }, - "engines": { - "bare": ">=1.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safety-catch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/safety-catch/-/safety-catch-1.0.2.tgz", - "integrity": "sha512-C1UYVZ4dtbBxEtvOcpjBaaD27nP8MlvyAQEp2fOTOEe6pfUpk1cDUxij6BR1jZup6rSyUTaBBplK7LanskrULA==", - "license": "MIT" - }, - "node_modules/same-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/same-object/-/same-object-1.0.2.tgz", - "integrity": "sha512-csHWhvUsLbIOHDM/nP+KHWM+BLPsIzWkFa8HbzaI0G7BqKXgx+7FJpKTGgLXyz5amfdY2OVBcmXTqYOMEk04og==", - "dev": true, - "license": "MIT" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shuffled-priority-queue": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/shuffled-priority-queue/-/shuffled-priority-queue-2.1.0.tgz", - "integrity": "sha512-xhdh7fHyMsr0m/w2kDfRJuBFRS96b9l8ZPNWGaQ+PMvnUnZ/Eh+gJJ9NsHBd7P9k0399WYlCLzsy18EaMfyadA==", - "license": "MIT", - "dependencies": { - "unordered-set": "^2.0.1" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-promise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/signal-promise/-/signal-promise-1.0.3.tgz", - "integrity": "sha512-WBgv0UnIq2C+Aeh0/n+IRpP6967eIx9WpynTUoiW3isPpfe1zu2LJzyfXdo9Tgef8yR/sGjcMvoUXD7EYdiz+g==", - "license": "MIT" - }, - "node_modules/sodium-native": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.1.tgz", - "integrity": "sha512-Q305aUXc0OzK7VVRvWkeEQJQIHs6slhFwWpyqLB5iJqhpyt2lYIVu96Y6PQ7TABIlWXVF3YiWDU3xS2Snkus+g==", - "license": "MIT", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/sodium-secretstream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sodium-secretstream/-/sodium-secretstream-1.2.0.tgz", - "integrity": "sha512-q/DbraNFXm1KfCiiZvapmz5UC3OlpirYFIvBK2MhGaOFSb3gRyk8OXTi17UI9SGfshQNCpsVvlopogbzZNyW6Q==", - "license": "MIT", - "dependencies": { - "b4a": "^1.1.1", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT" - }, - "node_modules/standard": { - "version": "17.1.2", - "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.2.tgz", - "integrity": "sha512-WLm12WoXveKkvnPnPnaFUUHuOB2cUdAsJ4AiGHL2G0UNMrcRAWY2WriQaV8IQ3oRmYr0AWUbLNr94ekYFAHOrA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "eslint": "^8.41.0", - "eslint-config-standard": "17.1.0", - "eslint-config-standard-jsx": "^11.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.36.1", - "standard-engine": "^15.1.0", - "version-guard": "^1.1.1" - }, - "bin": { - "standard": "bin/cmd.cjs" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", - "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.6", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-tmp": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/test-tmp/-/test-tmp-1.4.0.tgz", - "integrity": "sha512-GVggxGg+jXqP2Wbju50JVLo+9E+nIOPPyWqgr63EbOnNItIKu1cEbJpTWAJeflnyGqXOtcMI7ijHRp88GUkfDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bare-fs": "^4.0.1", - "bare-os": "^3.3.0", - "bare-path": "^3.0.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/time-ordered-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/time-ordered-set/-/time-ordered-set-2.0.1.tgz", - "integrity": "sha512-VJEKmgSN2UiOLB8BpN8Sh2b9LGMHTP5OPrQRpnKjvOheOyzk0mufbjzjKTIG2gO4A+Y+vDJ+0TcLbpUmMLsg8A==", - "license": "MIT" - }, - "node_modules/timeout-refresh": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-2.0.1.tgz", - "integrity": "sha512-SVqEcMZBsZF9mA78rjzCrYrUs37LMJk3ShZ851ygZYW1cMeIjs9mL57KO6Iv5mmjSQnOe/29/VAfGXo+oRCiVw==", - "license": "MIT" - }, - "node_modules/tmatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-5.0.0.tgz", - "integrity": "sha512-Ib9OtBkpHn07tXP04SlN1SYRxFgTk6wSM2EBmjjxug4u5RXPRVLkdFJSS1PmrQidaSB8Lru9nRtViQBsbxzE5Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/udx-native": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/udx-native/-/udx-native-1.17.8.tgz", - "integrity": "sha512-nB5SxTF9WzTNrxJnVSyEOtapoPjxAU1KboN/z1JWMtAVXArwtQ9Mxn+jJvlx4skINQHH6xUqQsQdSCL1Ja2h1Q==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.5.0", - "bare-events": "^2.2.0", - "require-addon": "^1.1.0", - "streamx": "^2.14.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unordered-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz", - "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==", - "license": "MIT" - }, - "node_modules/unslab": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/unslab/-/unslab-1.3.0.tgz", - "integrity": "sha512-YATkfKAFj47kTzmiQrWXMyRvaVrHsW6MEALa4bm+FhiA2YG4oira+Z3DXN6LrYOYn2Y8eO94Lwl9DOHjs1FpoQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.6" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "name": "bare-url", - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", - "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/util": { - "name": "bare-utils", - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bare-utils/-/bare-utils-1.2.0.tgz", - "integrity": "sha512-Y9G5DbMUgcx078Etc7h9CD31aI9vYFZ/xl6JLnyvBX9+4lrlXw+5/6toNJGaNSylo4jJf8Cu3yBIDxMLviRFFw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-debug-log": "^1.0.0", - "bare-format": "^1.0.0", - "bare-inspect": "^3.0.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/version-guard": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.3.tgz", - "integrity": "sha512-JwPr6erhX53EWH/HCSzfy1tTFrtPXUe927wdM1jqBBeYp1OM+qPHjWbsvv6pIBduqdgxxS+ScfG7S28pzyr2DQ==", - "dev": true, - "license": "0BSD", - "engines": { - "node": ">=0.10.48" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-runtime": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.2.1.tgz", - "integrity": "sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==", - "license": "Apache-2.0" - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/xache": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", - "integrity": "sha512-igRS6jPreJ54ABdzhh4mCDXcz+XMaWO2q1ABRV2yWYuk29jlp8VT7UBdCqNkX7rpYBbXsebVVKkwIuYZjyZNqA==", - "license": "MIT" - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/z32": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/z32/-/z32-1.1.0.tgz", - "integrity": "sha512-1WUHy+VS6d0HPNspDxvLssBbeQjXMjSnpv0vH82vRAUfg847NmX3OXozp/hRP5jPhxBbrVzrgvAt+UsGNzRFQQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.5.3" - } - } - } -} diff --git a/pkgs/by-name/hy/hyperswarm/package.nix b/pkgs/by-name/hy/hyperswarm/package.nix deleted file mode 100644 index a516c5ae40b97..0000000000000 --- a/pkgs/by-name/hy/hyperswarm/package.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - lib, - buildNpmPackage, - fetchFromGitHub, - nix-update-script, -}: - -buildNpmPackage (finalAttrs: { - pname = "hyperswarm"; - version = "4.12.1"; - - src = fetchFromGitHub { - owner = "holepunchto"; - repo = "hyperswarm"; - tag = "v${finalAttrs.version}"; - hash = "sha256-BQ1/kNJAFoxPJ2I3dyV7EHafKfbbDqCQw039VT4YLT8="; - }; - - npmDepsHash = "sha256-4ysUYFIFlzr57J7MdZit1yX3Dgpb2eY0rdYnwyppwK0="; - - dontNpmBuild = true; - - postPatch = '' - cp ${./package-lock.json} ./package-lock.json - ''; - - passthru.updateScript = nix-update-script { - extraArgs = [ - "--generate-lockfile" - ]; - }; - - meta = { - description = "Distributed Networking Stack for Connecting Peers"; - homepage = "https://github.com/holepunchto/hyperswarm"; - license = lib.licenses.mit; - platforms = lib.platforms.unix; - teams = with lib.teams; [ ngi ]; - maintainers = [ ]; - }; -}) diff --git a/pkgs/by-name/if/iftop/package.nix b/pkgs/by-name/if/iftop/package.nix index c795c91f6ca43..c6ffaabd4ac0d 100644 --- a/pkgs/by-name/if/iftop/package.nix +++ b/pkgs/by-name/if/iftop/package.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { # Explicitly link against libgcc_s, to work around the infamous # "libgcc_s.so.1 must be installed for pthread_cancel to work". - LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux "-lgcc_s"; + env.LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux "-lgcc_s"; buildInputs = [ ncurses diff --git a/pkgs/by-name/iw/iwd/package.nix b/pkgs/by-name/iw/iwd/package.nix index 0fab76af19c47..f99579a1d5da3 100644 --- a/pkgs/by-name/iw/iwd/package.nix +++ b/pkgs/by-name/iw/iwd/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchgit, - fetchpatch, autoreconfHook, pkg-config, ell, @@ -14,24 +13,6 @@ gitUpdater, }: -let - # fix segfault in iwctl with readline-8.3 - # https://lists.gnu.org/archive/html/bug-readline/2025-07/msg00007.htmlP - readline-patch = fetchpatch { - url = "https://lists.gnu.org/archive/html/bug-readline/2025-07/txtmA7rksnmmi.txt"; - hash = "sha256-QSS1GUJ2i/bF2ksvUtw27oqFHuTHALi+7QwxMFt9ZaM="; - stripLen = 2; - }; - - myreadline = ( - readline.overrideAttrs ( - _final: prev: { - patches = (prev.patches or [ ]) ++ [ readline-patch ]; - } - ) - ); -in - stdenv.mkDerivation (finalAttrs: { pname = "iwd"; version = "3.10"; @@ -66,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ ell python3Packages.python - myreadline + readline ]; nativeCheckInputs = [ openssl ]; diff --git a/pkgs/by-name/lc/lcms2/package.nix b/pkgs/by-name/lc/lcms2/package.nix index 89b0d2434e4c4..bdb1ba358a733 100644 --- a/pkgs/by-name/lc/lcms2/package.nix +++ b/pkgs/by-name/lc/lcms2/package.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { ]; # See https://trac.macports.org/ticket/60656 - LDFLAGS = if stdenv.hostPlatform.isDarwin then "-Wl,-w" else null; + env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { LDFLAGS = "-Wl,-w"; }; meta = { description = "Color management engine"; diff --git a/pkgs/by-name/le/less/package.nix b/pkgs/by-name/le/less/package.nix index 7a726d57f1b39..711f3be6711c6 100644 --- a/pkgs/by-name/le/less/package.nix +++ b/pkgs/by-name/le/less/package.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "less"; - version = "679"; + version = "685"; # `less` is provided by the following sources: # - meta.homepage @@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: { # homepage, and only those not marked as beta. src = fetchurl { url = "https://www.greenwoodsoftware.com/less/less-${finalAttrs.version}.tar.gz"; - hash = "sha256-m2iCDDT6igr2sOAbdPApi83UCgSJxhZJtHBYkIoVPXg="; + hash = "sha256-JwEEHnZ+aX7kIM4IJWQc7cjyC1FXar6Z2SwWZtMy6dw="; }; buildInputs = [ @@ -54,6 +54,7 @@ stdenv.mkDerivation (finalAttrs: { mainProgram = "less"; maintainers = with lib.maintainers; [ mdaniels5757 + yiyu ]; platforms = lib.platforms.unix; }; diff --git a/pkgs/by-name/li/libadwaita/package.nix b/pkgs/by-name/li/libadwaita/package.nix index 27e4948d74e7d..15eb730ff1fdf 100644 --- a/pkgs/by-name/li/libadwaita/package.nix +++ b/pkgs/by-name/li/libadwaita/package.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "libadwaita"; - version = "1.8.2"; + version = "1.8.3"; outputs = [ "out" @@ -37,7 +37,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "GNOME"; repo = "libadwaita"; tag = finalAttrs.version; - hash = "sha256-bymC3B5mY4r7oteA6WRViWIyazt0YE6T+P+RHrYifyY="; + hash = "sha256-IrniaMcsM1ZADNNgAmT3ELbkcwPTpYIBf8lOY4TaLd0="; }; depsBuildBuild = [ diff --git a/pkgs/by-name/li/libapparmor/package.nix b/pkgs/by-name/li/libapparmor/package.nix index d549f7a83074a..b7f0df5cbed09 100644 --- a/pkgs/by-name/li/libapparmor/package.nix +++ b/pkgs/by-name/li/libapparmor/package.nix @@ -32,13 +32,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "libapparmor"; - version = "4.1.2"; + version = "4.1.3"; src = fetchFromGitLab { owner = "apparmor"; repo = "apparmor"; tag = "v${finalAttrs.version}"; - hash = "sha256-CwWNfH2Ykv4e+8ONytdM7J+aItAMVrq0yYrYzRXAe1w="; + hash = "sha256-8L4skun873OMZISpGm25Ana4RzTzCmKhhK5tfyEmbd8="; }; sourceRoot = "${finalAttrs.src.name}/libraries/libapparmor"; diff --git a/pkgs/by-name/li/libarchive/package.nix b/pkgs/by-name/li/libarchive/package.nix index 1cfcfd29c4b78..b622460ec1b8c 100644 --- a/pkgs/by-name/li/libarchive/package.nix +++ b/pkgs/by-name/li/libarchive/package.nix @@ -23,6 +23,7 @@ cmake, nix, samba, + testers, # for passthru.lore binlore, @@ -102,14 +103,15 @@ stdenv.mkDerivation (finalAttrs: { acl ]; - hardeningDisable = [ "strictflexarrays3" ]; + hardeningDisable = [ + "strictflexarrays3" + ] + # some tests won't compile because this makes memcpy a macro: + # libarchive/test/test_write_format_mtree_preset_digests.c:2020:29: error: macro "memcpy" passed 66 arguments, but takes just 3 + ++ lib.optional stdenv.hostPlatform.isCygwin "fortify"; configureFlags = lib.optional (!xarSupport) "--without-xml2"; - preBuild = lib.optionalString stdenv.hostPlatform.isCygwin '' - echo "#include " >> config.h - ''; - # https://github.com/libarchive/libarchive/issues/1475 doCheck = !stdenv.hostPlatform.isMusl; @@ -140,10 +142,14 @@ stdenv.mkDerivation (finalAttrs: { maintainers = with lib.maintainers; [ jcumming ]; platforms = lib.platforms.all; inherit (acl.meta) badPlatforms; + pkgConfigModules = [ "libarchive" ]; }; passthru.tests = { inherit cmake nix samba; + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + }; }; # bsdtar is detected as "cannot" because its exec is internal to diff --git a/pkgs/by-name/li/libax25/package.nix b/pkgs/by-name/li/libax25/package.nix index 0248e8f70d79e..c15baf5404969 100644 --- a/pkgs/by-name/li/libax25/package.nix +++ b/pkgs/by-name/li/libax25/package.nix @@ -29,10 +29,12 @@ stdenv.mkDerivation (finalAttrs: { configureFlags = [ "--sysconfdir=/etc" ]; - LDFLAGS = lib.optionals stdenv.hostPlatform.isStatic [ - "-static-libgcc" - "-static" - ]; + env = lib.optionalAttrs stdenv.hostPlatform.isStatic { + LDFLAGS = toString [ + "-static-libgcc" + "-static" + ]; + }; meta = { description = "AX.25 library for hamradio applications"; diff --git a/pkgs/by-name/li/libbluray/package.nix b/pkgs/by-name/li/libbluray/package.nix index fe6f8feb611f0..7139008ec7619 100644 --- a/pkgs/by-name/li/libbluray/package.nix +++ b/pkgs/by-name/li/libbluray/package.nix @@ -8,7 +8,7 @@ meson, ninja, withJava ? false, - jdk21_headless, # Newer JDK's depend on a release with a fix for https://code.videolan.org/videolan/libbluray/-/issues/46 + jdk21, # Newer JDK's depend on a release with a fix for https://code.videolan.org/videolan/libbluray/-/issues/46 ant, stripJavaArchivesHook, withAACS ? false, @@ -34,13 +34,21 @@ stdenv.mkDerivation rec { hash = "sha256-d5N7rwfq3aSysxHPOvTFAmnS6jFlBB9YQ9lkdsTJJ3c="; }; + postPatch = + lib.optionalString withAACS '' + substituteInPlace src/libbluray/disc/aacs.c --replace-fail 'getenv("LIBAACS_PATH")' '"${libaacs}/lib/libaacs"' + '' + + lib.optionalString withBDplus '' + substituteInPlace src/libbluray/disc/bdplus.c --replace-fail 'getenv("LIBBDPLUS_PATH")' '"${libbdplus}/lib/libbdplus"' + ''; + nativeBuildInputs = [ meson ninja pkg-config ] ++ lib.optionals withJava [ - jdk21_headless + jdk21 ant stripJavaArchivesHook ]; @@ -53,13 +61,13 @@ stdenv.mkDerivation rec { propagatedBuildInputs = lib.optional withAACS libaacs; - env.JAVA_HOME = lib.optionalString withJava jdk21_headless.home; # Fails at runtime without this env.NIX_LDFLAGS = lib.optionalString withAACS "-L${libaacs}/lib -laacs" + lib.optionalString withBDplus " -L${libbdplus}/lib -lbdplus"; mesonFlags = lib.optional (!withJava) "-Dbdj_jar=disabled" + ++ lib.optional withJava "-Djdk_home=${jdk21.home}" ++ lib.optional (!withMetadata) "-dlibxml2=disabled" ++ lib.optional (!withFonts) "-Dfreetype=disabled"; @@ -67,7 +75,7 @@ stdenv.mkDerivation rec { homepage = "http://www.videolan.org/developers/libbluray.html"; description = "Library to access Blu-Ray disks for video playback"; license = lib.licenses.lgpl21; - maintainers = [ ]; + maintainers = [ lib.maintainers.amarshall ]; platforms = lib.platforms.unix; }; diff --git a/pkgs/by-name/li/libcap/package.nix b/pkgs/by-name/li/libcap/package.nix index 8e3efdd4d5206..b7f5900d30c36 100644 --- a/pkgs/by-name/li/libcap/package.nix +++ b/pkgs/by-name/li/libcap/package.nix @@ -23,6 +23,8 @@ squid, tor, uwsgi, + testers, + libcap, }: assert usePam -> pam != null; @@ -127,6 +129,9 @@ stdenv.mkDerivation rec { tor uwsgi ; + pkg-config = testers.hasPkgConfigModules { + package = libcap; + }; }; meta = { @@ -134,5 +139,9 @@ stdenv.mkDerivation rec { homepage = "https://sites.google.com/site/fullycapable"; platforms = lib.platforms.linux; license = lib.licenses.bsd3; + pkgConfigModules = [ + "libcap" + "libpsx" + ]; }; } diff --git a/pkgs/by-name/li/libcdio/package.nix b/pkgs/by-name/li/libcdio/package.nix index 483868b4ea99c..216b6c889f15c 100644 --- a/pkgs/by-name/li/libcdio/package.nix +++ b/pkgs/by-name/li/libcdio/package.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "libcdio"; - version = "2.2.0"; + version = "2.3.0"; src = fetchFromGitHub { owner = "libcdio"; repo = "libcdio"; tag = finalAttrs.version; - hash = "sha256-izjZk2kz9PkLm9+INUdl1e7jMz3nUsQKdplKI9Io+CM="; + hash = "sha256-NZj6sMIhBORh2ZBs/WGI4BYri1REog4ovUug1t5p8Y8="; }; env = lib.optionalAttrs stdenv.hostPlatform.is32bit { diff --git a/pkgs/by-name/li/libdecor/package.nix b/pkgs/by-name/li/libdecor/package.nix index cbb9d9fada260..2954748ce73fb 100644 --- a/pkgs/by-name/li/libdecor/package.nix +++ b/pkgs/by-name/li/libdecor/package.nix @@ -16,14 +16,14 @@ stdenv.mkDerivation rec { pname = "libdecor"; - version = "0.2.4"; + version = "0.2.5"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "libdecor"; repo = "libdecor"; rev = version; - hash = "sha256-l0MmNpC+449BaluynbzG5d0/v57F5rltOIBzBagkYbc="; + hash = "sha256-sUktv/k+4IdJ55uH3F6z8XqaAOTic6miuyZ9U+NhtQQ="; }; outputs = [ diff --git a/pkgs/by-name/li/libdrm/package.nix b/pkgs/by-name/li/libdrm/package.nix index a56344d168b25..8edb48ef2fe87 100644 --- a/pkgs/by-name/li/libdrm/package.nix +++ b/pkgs/by-name/li/libdrm/package.nix @@ -16,11 +16,11 @@ stdenv.mkDerivation rec { pname = "libdrm"; - version = "2.4.129"; + version = "2.4.131"; src = fetchurl { url = "https://dri.freedesktop.org/${pname}/${pname}-${version}.tar.xz"; - hash = "sha256-WXgYP5eNaX4mpQugZhdJZO+wq5fKoeyqG4Yfvl3fd9w="; + hash = "sha256-RbqZg7UciWQGo9ZU3oHTE7lTt25jkeJ5cHPVQ8X2F9U="; }; outputs = [ diff --git a/pkgs/by-name/li/libfabric/package.nix b/pkgs/by-name/li/libfabric/package.nix index 5cdf5fbf924d3..125cc98968f71 100644 --- a/pkgs/by-name/li/libfabric/package.nix +++ b/pkgs/by-name/li/libfabric/package.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { pname = "libfabric"; - version = "2.3.1"; + version = "2.4.0"; enableParallelBuilding = true; @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { owner = "ofiwg"; repo = "libfabric"; rev = "v${version}"; - sha256 = "sha256-Zaf7iGr2/HWiMcH7zERz5Y9YzJ0QpHCCs+bU+qmoQTI="; + sha256 = "sha256-C8k1caArVPBTtSggvAM7S660HpP99y9vac7oyf+HW2c="; }; outputs = [ diff --git a/pkgs/by-name/li/libmpeg2/getopt-getenv-signatures.patch b/pkgs/by-name/li/libmpeg2/getopt-getenv-signatures.patch new file mode 100644 index 0000000000000..881f11882371a --- /dev/null +++ b/pkgs/by-name/li/libmpeg2/getopt-getenv-signatures.patch @@ -0,0 +1,26 @@ +diff --git a/src/getopt.c b/src/getopt.c +index 4744e43..19776f3 100644 +--- a/src/getopt.c ++++ b/src/getopt.c +@@ -208,7 +208,7 @@ static char *posixly_correct; + whose names are inconsistent. */ + + #ifndef getenv +-extern char *getenv (); ++extern char *getenv (const char *); + #endif + + static char * +diff --git a/src/getopt.h b/src/getopt.h +index b0147e9..6f1e784 100644 +--- a/src/getopt.h ++++ b/src/getopt.h +@@ -133,7 +133,7 @@ struct option + errors, only prototype getopt for the GNU C library. */ + extern int getopt (int __argc, char *const *__argv, const char *__shortopts); + # else /* not __GNU_LIBRARY__ */ +-extern int getopt (); ++extern int getopt (int, char *const*, const char *); + # endif /* __GNU_LIBRARY__ */ + + # ifndef __need_getopt diff --git a/pkgs/by-name/li/libmpeg2/package.nix b/pkgs/by-name/li/libmpeg2/package.nix index 7860056707cad..4242f5c2edd58 100644 --- a/pkgs/by-name/li/libmpeg2/package.nix +++ b/pkgs/by-name/li/libmpeg2/package.nix @@ -13,6 +13,11 @@ stdenv.mkDerivation rec { sha256 = "1m3i322n2fwgrvbs1yck7g5md1dbg22bhq5xdqmjpz5m7j4jxqny"; }; + patches = [ + # Fixes mismatching definitions with C23 / GCC15 on non-glibc platforms + ./getopt-getenv-signatures.patch + ]; + # Otherwise clang fails with 'duplicate symbol ___sputc' buildFlags = lib.optional stdenv.hostPlatform.isDarwin "CFLAGS=-std=gnu89"; diff --git a/pkgs/by-name/li/libnl/package.nix b/pkgs/by-name/li/libnl/package.nix index a17cfc8a8841b..21e441960d15b 100644 --- a/pkgs/by-name/li/libnl/package.nix +++ b/pkgs/by-name/li/libnl/package.nix @@ -19,13 +19,13 @@ stdenv.mkDerivation rec { pname = "libnl"; - version = "3.11.0"; + version = "3.12.0"; src = fetchFromGitHub { repo = "libnl"; owner = "thom311"; rev = "libnl${lib.replaceStrings [ "." ] [ "_" ] version}"; - hash = "sha256-GuYV2bUOhLedB/o9Rz6Py/G5HBK2iNefwrlkZJXgbnI="; + hash = "sha256-K77WamOf+/3PNXe/hI+OYg0EBgBqvDfNDamXYXcK7P8="; }; outputs = [ diff --git a/pkgs/by-name/li/libopenmpt/package.nix b/pkgs/by-name/li/libopenmpt/package.nix index 23a5ea99f42ec..59c06637b4831 100644 --- a/pkgs/by-name/li/libopenmpt/package.nix +++ b/pkgs/by-name/li/libopenmpt/package.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { pname = "libopenmpt"; - version = "0.8.3"; + version = "0.8.4"; outputs = [ "out" @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz"; - hash = "sha256-JdSGpNqXKIGSdO0JWf15ocY1iVRxDVTBQEfGRXyMqKw="; + hash = "sha256-Yn+b8RqsrmFaHyyYLH6IyyHxGy1vAmeUb3yCxerklDs="; }; enableParallelBuilding = true; diff --git a/pkgs/by-name/li/libpcap/package.nix b/pkgs/by-name/li/libpcap/package.nix index 57304a6e3951b..55573a77c7e2c 100644 --- a/pkgs/by-name/li/libpcap/package.nix +++ b/pkgs/by-name/li/libpcap/package.nix @@ -26,13 +26,13 @@ stdenv.mkDerivation rec { pname = "libpcap"; - version = "1.10.5"; + version = "1.10.6"; __structuredAttrs = true; src = fetchurl { url = "https://www.tcpdump.org/release/${pname}-${version}.tar.gz"; - hash = "sha256-N87ZChmjAqfzLkWCJKAMNlwReQXCzTWsVEtogKgUiPA="; + hash = "sha256-hy3REzf+GrAq2dT+4EfJ2iRNaVxt3zTi67cz79Ttiqk="; }; outputs = [ diff --git a/pkgs/by-name/li/libpisp/package.nix b/pkgs/by-name/li/libpisp/package.nix index b0d44498a5c1f..6ee36b13ea8aa 100644 --- a/pkgs/by-name/li/libpisp/package.nix +++ b/pkgs/by-name/li/libpisp/package.nix @@ -7,6 +7,7 @@ ninja, boost, nlohmann_json, + fetchpatch, }: stdenv.mkDerivation (finalAttrs: { @@ -20,6 +21,14 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-YshU7G5Rov67CVwFbf5ENp2j5ptAvkVrlMu85KmnEpk="; }; + patches = [ + # fix build with glibc 2.42 & -Werror + (fetchpatch { + url = "https://github.com/raspberrypi/libpisp/commit/f2bbf7e000d3f11cac235b8ea1291722080a016c.patch"; + hash = "sha256-vrdmVadyjlAnZtmBahOs/hlKPrkh/BF3LvrTPM9D15Q="; + }) + ]; + nativeBuildInputs = [ pkg-config meson diff --git a/pkgs/by-name/li/libraw/package.nix b/pkgs/by-name/li/libraw/package.nix index 1570965635290..90a9d11816749 100644 --- a/pkgs/by-name/li/libraw/package.nix +++ b/pkgs/by-name/li/libraw/package.nix @@ -14,13 +14,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "libraw"; - version = "0.21.4"; + version = "0.21.5b"; src = fetchFromGitHub { owner = "LibRaw"; repo = "LibRaw"; tag = finalAttrs.version; - hash = "sha256-JAGIM7A9RbK22F8KczRcb+29t4fDDXzoCA3a4s/z6Q8="; + hash = "sha256-CE7XB61bnjRhy0Ww2Q3pvvSJMobHHta5jn4F/i/oOEE="; }; outputs = [ diff --git a/pkgs/by-name/li/libsodium/package.nix b/pkgs/by-name/li/libsodium/package.nix index 734c84088d338..383ee5a05a084 100644 --- a/pkgs/by-name/li/libsodium/package.nix +++ b/pkgs/by-name/li/libsodium/package.nix @@ -1,18 +1,21 @@ { lib, stdenv, - fetchurl, autoreconfHook, + fetchFromGitHub, testers, + unstableGitUpdater, }: stdenv.mkDerivation (finalAttrs: { pname = "libsodium"; - version = "1.0.20"; + version = "1.0.20-unstable-2025-12-31"; - src = fetchurl { - url = "https://download.libsodium.org/libsodium/releases/libsodium-${finalAttrs.version}.tar.gz"; - hash = "sha256-67Ze9spDkzPCu0GgwZkFhyiNoH9sf9B8s6GMwY0wzhk="; + src = fetchFromGitHub { + owner = "jedisct1"; + repo = "libsodium"; + rev = "d44593f1a5b7d31b5122689605b489577356f7e8"; + hash = "sha256-6DC9JJLUwAoZHrYdCIiqOtAlWOEczec2r2FmaBbsa/Q="; }; outputs = [ @@ -37,13 +40,22 @@ stdenv.mkDerivation (finalAttrs: { doCheck = true; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + passthru = { + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + updateScript = unstableGitUpdater { + branch = "stable"; + tagConverter = "cut -d - -f 1"; + }; + }; meta = { description = "Modern and easy-to-use crypto library"; homepage = "https://doc.libsodium.org/"; license = lib.licenses.isc; - maintainers = with lib.maintainers; [ raskin ]; + maintainers = with lib.maintainers; [ + mdaniels5757 + raskin + ]; pkgConfigModules = [ "libsodium" ]; platforms = lib.platforms.all; }; diff --git a/pkgs/by-name/li/libtasn1/package.nix b/pkgs/by-name/li/libtasn1/package.nix index c8e506d2bd532..7de5f9bc2b742 100644 --- a/pkgs/by-name/li/libtasn1/package.nix +++ b/pkgs/by-name/li/libtasn1/package.nix @@ -11,13 +11,13 @@ qemu, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "libtasn1"; - version = "4.20.0"; + version = "4.21.0"; src = fetchurl { - url = "mirror://gnu/libtasn1/libtasn1-${version}.tar.gz"; - sha256 = "sha256-kuDjvUwC1K7udgNrLd2D8McyukzaXLcdWDJysjWHp2w="; + url = "mirror://gnu/libtasn1/libtasn1-${finalAttrs.version}.tar.gz"; + hash = "sha256-HYpESiI8xUZCQHdzRuEl3lHY5qvwuLrHQqyEYJFn3Ic="; }; outputs = [ @@ -50,6 +50,6 @@ stdenv.mkDerivation rec { ''; license = lib.licenses.lgpl2Plus; platforms = lib.platforms.all; - changelog = "https://gitlab.com/gnutls/libtasn1/-/blob/v${version}/NEWS"; + changelog = "https://gitlab.com/gnutls/libtasn1/-/blob/v${finalAttrs.version}/NEWS.md"; }; -} +}) diff --git a/pkgs/by-name/li/libthai/package.nix b/pkgs/by-name/li/libthai/package.nix index 70a780a4bc2d8..a58384bce9ec1 100644 --- a/pkgs/by-name/li/libthai/package.nix +++ b/pkgs/by-name/li/libthai/package.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { pname = "libthai"; - version = "0.1.29"; + version = "0.1.30"; outputs = [ "out" @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://github.com/tlwg/libthai/releases/download/v${version}/libthai-${version}.tar.xz"; - sha256 = "sha256-/IDMfctQ4RMCtBfOvSTy0wqLmHKS534AMme5EA0PS80="; + sha256 = "sha256-3bqLU9/lhMMlN2YDAhioiCVIilGn3u8EHQlucVr2S90="; }; strictDeps = true; diff --git a/pkgs/by-name/li/libtpms/package.nix b/pkgs/by-name/li/libtpms/package.nix index f8169a99f66f6..b717baca892dc 100644 --- a/pkgs/by-name/li/libtpms/package.nix +++ b/pkgs/by-name/li/libtpms/package.nix @@ -10,13 +10,13 @@ stdenv.mkDerivation rec { pname = "libtpms"; - version = "0.10.1"; + version = "0.10.2"; src = fetchFromGitHub { owner = "stefanberger"; repo = "libtpms"; rev = "v${version}"; - sha256 = "sha256-uj06cAhepTOFxSeiBY/UVP/rtBQHLvrODe4ljU6ALOE="; + sha256 = "sha256-UhEpq5f/FT5DmtzQBe/Si414mOq+D4glikgRNK60GKQ="; }; hardeningDisable = [ "strictflexarrays3" ]; diff --git a/pkgs/by-name/li/liburing/package.nix b/pkgs/by-name/li/liburing/package.nix index 9fdfe41e9b7a9..d47a689a4cdf9 100644 --- a/pkgs/by-name/li/liburing/package.nix +++ b/pkgs/by-name/li/liburing/package.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation rec { pname = "liburing"; - version = "2.12"; + version = "2.13"; src = fetchFromGitHub { owner = "axboe"; repo = "liburing"; tag = "liburing-${version}"; - hash = "sha256-sEMzkyjrCc49ogfUnzdgNtEXmW0Tz/PUKo99C965428="; + hash = "sha256-ZWM+SKeRw5iivyj0mHSxC6yw492N7CThx/pp4FJhkCo="; }; separateDebugInfo = true; diff --git a/pkgs/by-name/li/lilv/package.nix b/pkgs/by-name/li/lilv/package.nix index 1f5de05882c46..5707a1407b3c5 100644 --- a/pkgs/by-name/li/lilv/package.nix +++ b/pkgs/by-name/li/lilv/package.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { pname = "lilv"; - version = "0.24.26"; + version = "0.26.0"; outputs = [ "out" @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://download.drobilla.net/${pname}-${version}.tar.xz"; - hash = "sha256-Iv7tMLwPlSOEolwvb0sE5tQ4NkCHmO1lqKk0wFXV2Kw="; + hash = "sha256-kS+dAlprXZYkTY3FHnXb/GeT45h2tTwZbboWYjCNt/A="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ll/llhttp/package.nix b/pkgs/by-name/ll/llhttp/package.nix index aea923e4c1b02..58cdee506f166 100644 --- a/pkgs/by-name/ll/llhttp/package.nix +++ b/pkgs/by-name/ll/llhttp/package.nix @@ -6,6 +6,7 @@ nix-update-script, testers, python3, + validatePkgConfig, }: stdenv.mkDerivation (finalAttrs: { @@ -26,6 +27,7 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake + validatePkgConfig ]; cmakeFlags = [ @@ -41,7 +43,6 @@ stdenv.mkDerivation (finalAttrs: { pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; - moduleNames = [ "libllhttp" ]; }; }; @@ -52,5 +53,6 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.mit; maintainers = with lib.maintainers; [ aduh95 ]; platforms = lib.platforms.all; + pkgConfigModules = [ "libllhttp" ]; }; }) diff --git a/pkgs/by-name/me/memcached/package.nix b/pkgs/by-name/me/memcached/package.nix index d25370d20c838..78cee0e3bdae9 100644 --- a/pkgs/by-name/me/memcached/package.nix +++ b/pkgs/by-name/me/memcached/package.nix @@ -8,12 +8,12 @@ }: stdenv.mkDerivation rec { - version = "1.6.39"; + version = "1.6.40"; pname = "memcached"; src = fetchurl { url = "https://memcached.org/files/${pname}-${version}.tar.gz"; - sha256 = "sha256-I+VQfpM7FUYxYdTF05IbDF80C1Qtbt1/bF4Xw08Ro2M="; + sha256 = "sha256-o9Ng6doiIaSb+ark5ogPLUTaayovrjmxkRucp2SI+/0="; }; configureFlags = [ diff --git a/pkgs/by-name/mo/moltenvk/package.nix b/pkgs/by-name/mo/moltenvk/package.nix index 635d6ceab8489..d39bb52b35e90 100644 --- a/pkgs/by-name/mo/moltenvk/package.nix +++ b/pkgs/by-name/mo/moltenvk/package.nix @@ -3,7 +3,7 @@ stdenv, fetchFromGitHub, gitUpdater, - apple-sdk_15, + apple-sdk_26, cereal, glslang, spirv-cross, @@ -21,12 +21,12 @@ stdenv.mkDerivation (finalAttrs: { pname = "MoltenVK"; - version = "1.4.0"; + version = "1.4.1"; strictDeps = true; buildInputs = [ - apple-sdk_15 + apple-sdk_26 cereal glslang spirv-cross @@ -47,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "KhronosGroup"; repo = "MoltenVK"; rev = "v${finalAttrs.version}"; - hash = "sha256-ydXyah6/J6/1Lzuv+7JnMurkqnvQPs+6Vec0uUrxGq0="; + hash = "sha256-7S10p/XrQ/oMXuCnOU6gqnWMGMfP5vhimec1ThxmuIE="; }; postPatch = '' @@ -55,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: { while IFS= read -d "" proj; do echo "Updating deployment target to ${stdenv.hostPlatform.darwinMinVersion}: $proj" substituteInPlace "$proj" \ - --replace-fail 'MACOSX_DEPLOYMENT_TARGET = 10.15' "MACOSX_DEPLOYMENT_TARGET = $MACOSX_DEPLOYMENT_TARGET" + --replace-fail 'MACOSX_DEPLOYMENT_TARGET = 11.0' "MACOSX_DEPLOYMENT_TARGET = $MACOSX_DEPLOYMENT_TARGET" done < <(grep -Z -rl --include=project.pbxproj MACOSX_DEPLOYMENT_TARGET) # Move `mvkGitRevDerived.h` to a stable location diff --git a/pkgs/by-name/mr/mrpeach/package.nix b/pkgs/by-name/mr/mrpeach/package.nix deleted file mode 100644 index ef9194be5adce..0000000000000 --- a/pkgs/by-name/mr/mrpeach/package.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - puredata, -}: - -stdenv.mkDerivation { - pname = "mrpeach"; - version = "1.1"; - - # this was to only usable url I could find: - # - The main url changes hash: http://pure-data.cvs.sourceforge.net/viewvc/pure-data/externals/mrpeach/?view=tar - # - There are lot's of places where this SW is available as part of a big pkg: pd-extended, pd-l2ork - # - It's just 211K - - src = fetchurl { - url = "http://slackonly.com/pub/korgie/sources/pd_mrpeach-2011.10.21.tar.gz"; - sha256 = "12jqba3jsdrk20ib9wc2wiivki88ypcd4mkzgsri9siywbbz9w8x"; - }; - - buildInputs = [ puredata ]; - - hardeningDisable = [ "format" ]; - - postPatch = '' - for D in net osc - do - sed -i "s@prefix = /usr/local@prefix = $out@g" $D/Makefile - for i in ${puredata}/include/pd/*; do - ln -s $i $D/ - done - done - ''; - - buildPhase = '' - runHook preBuild - for D in net osc - do - cd $D - make - cd .. - done - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - for D in net osc - do - cd $D - make install - cd .. - done - runHook postInstall - ''; - - preFixup = '' - mv $out/lib/pd-externals/net $out - mv $out/lib/pd-externals/osc $out - rm -rf $out/lib - ''; - - meta = { - description = "Collection of Pd objectclasses for OSC-messages"; - homepage = "http://puredata.info/downloads/osc"; - license = lib.licenses.gpl2; - maintainers = [ lib.maintainers.magnetophon ]; - platforms = lib.platforms.linux; - }; -} diff --git a/pkgs/by-name/na/nasm/package.nix b/pkgs/by-name/na/nasm/package.nix index dcda488d7e176..6ed5f105267c4 100644 --- a/pkgs/by-name/na/nasm/package.nix +++ b/pkgs/by-name/na/nasm/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchurl, + fetchpatch, perl, gitUpdater, }: @@ -15,6 +16,19 @@ stdenv.mkDerivation rec { hash = "sha256-tzJMvobnZ7ZfJvRn7YsSrYDhJOPMuJB2hVyY5Dqe3dQ="; }; + patches = [ + # Backport patches fixing nasm with gcc 15 and musl (and other?) platforms + # https://github.com/netwide-assembler/nasm/issues/169 + (fetchpatch { + url = "https://github.com/netwide-assembler/nasm/commit/44e89ba9b650b5e1533bca43682e167f51a3511f.patch"; + hash = "sha256-zVeMFhoSY/HGYr4meIWBgt5Unq1fA8lM6h1Cl5fpbxo="; + }) + (fetchpatch { + url = "https://github.com/netwide-assembler/nasm/commit/746e7c9efa37cec9a44d84a1e96b8c38f385cc1f.patch"; + hash = "sha256-aXVS70O/wUkW8xtkwF7uwrQfTgGcNvxHrtGC0sjIPto="; + }) + ]; + nativeBuildInputs = [ perl ]; enableParallelBuilding = true; diff --git a/pkgs/by-name/ne/neovim-unwrapped/package.nix b/pkgs/by-name/ne/neovim-unwrapped/package.nix index 43546f509ff6f..5f64508fae609 100644 --- a/pkgs/by-name/ne/neovim-unwrapped/package.nix +++ b/pkgs/by-name/ne/neovim-unwrapped/package.nix @@ -106,6 +106,8 @@ stdenv.mkDerivation ( hash = "sha256-OsvLB9kynCbQ8PDQ2VQ+L56iy7pZ0ZP69J2cEG8Ad8A="; }; + strictDeps = true; + patches = [ # introduce a system-wide rplugin.vim in addition to the user one # necessary so that nix can handle `UpdateRemotePlugins` for the plugins @@ -143,6 +145,10 @@ stdenv.mkDerivation ( ++ lib.optionals finalAttrs.finalPackage.doCheck [ glibcLocales procps + ] + ++ lib.optionals (stdenv.hostPlatform.libc != "glibc") [ + # Provide libintl for non-glibc platforms + gettext ]; doCheck = false; diff --git a/pkgs/by-name/ne/netpbm/package.nix b/pkgs/by-name/ne/netpbm/package.nix index 45c7fb599a658..e21694473f554 100644 --- a/pkgs/by-name/ne/netpbm/package.nix +++ b/pkgs/by-name/ne/netpbm/package.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { # Determine version and revision from: # https://sourceforge.net/p/netpbm/code/HEAD/log/?path=/advanced pname = "netpbm"; - version = "11.12.0"; + version = "11.13.0"; outputs = [ "bin" @@ -31,8 +31,8 @@ stdenv.mkDerivation rec { src = fetchsvn { url = "https://svn.code.sf.net/p/netpbm/code/advanced"; - rev = "5121"; - sha256 = "sha256-u5/chGsu+imk6GtptDz/EIyCe3CmoWiQ6CAcLASqpqU="; + rev = "5141"; + sha256 = "sha256-WfmUfP/uc2k8qPki5Gh7WrTH6nIeyhACcn+F5GaFJCE="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/on/onnxruntime/musl-cstdint.patch b/pkgs/by-name/on/onnxruntime/musl-cstdint.patch new file mode 100644 index 0000000000000..cf98d69fd88fa --- /dev/null +++ b/pkgs/by-name/on/onnxruntime/musl-cstdint.patch @@ -0,0 +1,24 @@ +diff --git a/include/onnxruntime/core/framework/tensor_shape.h b/include/onnxruntime/core/framework/tensor_shape.h +index d4ee4a0e5e..c33bea9cf7 100644 +--- a/include/onnxruntime/core/framework/tensor_shape.h ++++ b/include/onnxruntime/core/framework/tensor_shape.h +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + + #include + #include "core/common/inlined_containers_fwd.h" +diff --git a/onnxruntime/test/perftest/strings_helper.h b/onnxruntime/test/perftest/strings_helper.h +index d6c6f6112a..8580c86db6 100644 +--- a/onnxruntime/test/perftest/strings_helper.h ++++ b/onnxruntime/test/perftest/strings_helper.h +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + + namespace onnxruntime { + namespace perftest { diff --git a/pkgs/by-name/on/onnxruntime/musl-execinfo.patch b/pkgs/by-name/on/onnxruntime/musl-execinfo.patch new file mode 100644 index 0000000000000..3d6b4c014e4d0 --- /dev/null +++ b/pkgs/by-name/on/onnxruntime/musl-execinfo.patch @@ -0,0 +1,33 @@ +From 7bc56c886c8b9fa27842a14bbb964ffe8e576a9e Mon Sep 17 00:00:00 2001 +From: Jaeyoon Jung +Date: Tue, 12 Aug 2025 10:55:52 +0900 +Subject: [PATCH] Fix build with musl + +Added __GLIBC__ macro for 'execinfo.h' and related functions as they are +GLIBC specific and not available in other libc implementation like musl. +--- + onnxruntime/core/platform/posix/stacktrace.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/onnxruntime/core/platform/posix/stacktrace.cc b/onnxruntime/core/platform/posix/stacktrace.cc +index a34f6fd82ddd1..ab00f5fbb233e 100644 +--- a/onnxruntime/core/platform/posix/stacktrace.cc ++++ b/onnxruntime/core/platform/posix/stacktrace.cc +@@ -3,7 +3,7 @@ + + #include "core/common/common.h" + +-#if !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) && !defined(_AIX) ++#if !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) && !defined(_AIX) && defined(__GLIBC__) + #include + #endif + #include +@@ -13,7 +13,7 @@ namespace onnxruntime { + std::vector GetStackTrace() { + std::vector stack; + +-#if !defined(NDEBUG) && !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) ++#if !defined(NDEBUG) && !defined(__ANDROID__) && !defined(__wasm__) && !defined(_OPSCHEMA_LIB_) && defined(__GLIBC__) + constexpr int kCallstackLimit = 64; // Maximum depth of callstack + + void* array[kCallstackLimit]; diff --git a/pkgs/by-name/on/onnxruntime/package.nix b/pkgs/by-name/on/onnxruntime/package.nix index f531ea4587840..8ea0c6837ee7a 100644 --- a/pkgs/by-name/on/onnxruntime/package.nix +++ b/pkgs/by-name/on/onnxruntime/package.nix @@ -5,6 +5,7 @@ fetchFromGitHub, applyPatches, fetchpatch, + fetchurl, abseil-cpp_202407, cmake, cpuinfo, @@ -151,6 +152,20 @@ effectiveStdenv.mkDerivation (finalAttrs: { url = "https://github.com/microsoft/onnxruntime/commit/8ebd0bf1cf02414584d15d7244b07fa97d65ba02.patch"; hash = "sha256-vX+kaFiNdmqWI91JELcLpoaVIHBb5EPbI7rCAMYAx04="; }) + + # Skip execinfo include on musl + # https://github.com/microsoft/onnxruntime/pull/25726 + ./musl-execinfo.patch + # Add missing include which is only needed on musl (is implied in other includes on glibc) + # https://github.com/microsoft/onnxruntime/pull/26969 + ./musl-cstdint.patch + + # Fix build of unit tests with musl libc + # https://github.com/microsoft/onnxruntime/issues/9155 + (fetchurl { + url = "https://gitlab.alpinelinux.org/alpine/aports/-/raw/462dfe0eb4b66948fe48de44545cc22bb64fdf9f/community/onnxruntime/0001-Remove-MATH_NO_EXCEPT-macro.patch"; + hash = "sha256-BdeGYevZExWWCuJ1lSw0Roy3h+9EbJgFF8qMwVxSn1A="; + }) ]; nativeBuildInputs = [ @@ -253,6 +268,8 @@ effectiveStdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals pythonSupport [ "dist" ]; + separateDebugInfo = true; + enableParallelBuilding = true; cmakeDir = "../cmake"; @@ -300,7 +317,10 @@ effectiveStdenv.mkDerivation (finalAttrs: { (lib.cmakeBool "onnxruntime_USE_COMPOSABLE_KERNEL_CK_TILE" false) ]; - env = lib.optionalAttrs rocmSupport { + env = { + NIX_LDFLAGS = "-z,noexecstack"; + } + // lib.optionalAttrs rocmSupport { MIOPEN_PATH = rocmPackages.miopen; # HIP steps fail to find ROCm libs when not in HIPFLAGS, causing # fatal error: 'rocrand/rocrand.h' file not found @@ -314,6 +334,10 @@ effectiveStdenv.mkDerivation (finalAttrs: { rocmPackages.rocrand rocmPackages.rocthrust ]; + } + // lib.optionalAttrs effectiveStdenv.hostPlatform.isMusl { + NIX_CFLAGS_COMPILE = "-DFLATBUFFERS_LOCALE_INDEPENDENT=0"; + GTEST_FILTER = "*:-ContribOpTest.StringNormalizer*"; }; doCheck = @@ -334,6 +358,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { hardeningEnable = lib.optionals (effectiveStdenv.hostPlatform.system == "loongarch64-linux") [ "nostrictaliasing" ]; + hardeningDisable = lib.optional effectiveStdenv.hostPlatform.isMusl "fortify"; postPatch = '' substituteInPlace cmake/libonnxruntime.pc.cmake.in \ @@ -372,6 +397,8 @@ effectiveStdenv.mkDerivation (finalAttrs: { ''; disallowedRequisites = lib.optionals cudaSupport [ (lib.getBin cuda_nvcc) ]; + __structuredAttrs = true; + passthru = { inherit cudaSupport cudaPackages ncclSupport; # for the python module protobuf = protobuf'; diff --git a/pkgs/by-name/op/openldap/package.nix b/pkgs/by-name/op/openldap/package.nix index 18f22935befaa..692538d897b64 100644 --- a/pkgs/by-name/op/openldap/package.nix +++ b/pkgs/by-name/op/openldap/package.nix @@ -108,14 +108,14 @@ stdenv.mkDerivation rec { ]; postBuild = '' - for module in $extraContribModules; do - make $makeFlags CC=$CC -C contrib/slapd-modules/$module + for module in ''${extraContribModules[@]}; do + make ''${makeFlags[@]} CC=$CC -C contrib/slapd-modules/$module done ''; preCheck = '' substituteInPlace tests/scripts/all \ - --replace "/bin/rm" "rm" + --replace-fail "/bin/rm" "rm" # skip flaky tests # https://bugs.openldap.org/show_bug.cgi?id=8623 @@ -144,8 +144,8 @@ stdenv.mkDerivation rec { ]; postInstall = lib.optionalString withModules '' - for module in $extraContribModules; do - make $installFlags install -C contrib/slapd-modules/$module + for module in ''${extraContribModules[@]}; do + make ''${installFlags[@]} install -C contrib/slapd-modules/$module done chmod +x "$out"/lib/*.{so,dylib} ''; diff --git a/pkgs/by-name/op/opensp/package.nix b/pkgs/by-name/op/opensp/package.nix index 45f5c89e702f6..d376fbe329ddc 100644 --- a/pkgs/by-name/op/opensp/package.nix +++ b/pkgs/by-name/op/opensp/package.nix @@ -31,6 +31,11 @@ stdenv.mkDerivation rec { url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/app-text/opensp/files/opensp-1.5.2-c11-using.patch?id=688d9675782dfc162d4e6cff04c668f7516118d0"; sha256 = "04q14s8qsad0bkjmj067dn831i0r6v7742rafdlnbfm5y249m2q6"; }) + (fetchpatch { + name = "opensp-1.5.2-gcc15-musl.patch"; + url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/app-text/opensp/files/opensp-1.5.2-gcc15-musl.patch?id=7143f4a01836f8991d6c90b61fa919e88bf9a0fd"; + hash = "sha256-6pNsVh3BErAN4lyykhFJqCydplh4cVvxgwc5MuWFd+A="; + }) # Clang 16 defaults to C++17, which does not allow `register` as a storage class specifier. ./fix-register-storage-class.patch ]; diff --git a/pkgs/by-name/op/openvi/package.nix b/pkgs/by-name/op/openvi/package.nix index cad4277a47770..f2689ab608245 100644 --- a/pkgs/by-name/op/openvi/package.nix +++ b/pkgs/by-name/op/openvi/package.nix @@ -5,6 +5,7 @@ pkg-config, ncurses, perl, + fetchpatch, }: stdenv.mkDerivation (finalAttrs: { @@ -18,6 +19,15 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-kLULaKEefMpNLANnVdWAZeH+2KY5gEWGce6vJ/R7HAI="; }; + patches = [ + # fix build w/ glibc 2.42 (https://github.com/johnsonjh/OpenVi/pull/46) + (fetchpatch { + url = "https://github.com/johnsonjh/OpenVi/commit/67c76961f512bfe95616fe25b32928db0aab9326.patch"; + hash = "sha256-GOair/unxROEPvtTekGuKacKwOctPyoRdvilqdVLjrY="; + excludes = [ "ChangeLog" ]; + }) + ]; + nativeBuildInputs = [ pkg-config ]; buildInputs = [ diff --git a/pkgs/by-name/os/ostree/package.nix b/pkgs/by-name/os/ostree/package.nix index a676e445b7510..df78665df501f 100644 --- a/pkgs/by-name/os/ostree/package.nix +++ b/pkgs/by-name/os/ostree/package.nix @@ -43,6 +43,7 @@ replaceVars, openssl, ostree-full, + testers, }: let @@ -170,6 +171,9 @@ stdenv.mkDerivation (finalAttrs: { musl = pkgsCross.musl64.ostree; installedTests = nixosTests.installed-tests.ostree; inherit ostree-full; + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + }; }; }; @@ -179,5 +183,6 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.lgpl2Plus; platforms = lib.platforms.linux; maintainers = [ ]; + pkgConfigModules = [ "ostree-1" ]; }; }) diff --git a/pkgs/by-name/po/polkit/package.nix b/pkgs/by-name/po/polkit/package.nix index f804931304d80..31231f32d7363 100644 --- a/pkgs/by-name/po/polkit/package.nix +++ b/pkgs/by-name/po/polkit/package.nix @@ -42,7 +42,7 @@ let in stdenv.mkDerivation rec { pname = "polkit"; - version = "126"; + version = "127"; outputs = [ "bin" @@ -55,19 +55,13 @@ stdenv.mkDerivation rec { owner = "polkit-org"; repo = "polkit"; rev = version; - hash = "sha256-ZSqgW//q5DFIsmY17U93mJcK/CHSCHphKTHsTxp40q8="; + hash = "sha256-YTugETy0rqu/bv53jV1UeGqSK79bRXR52EJNcTblvzo="; }; patches = [ # Allow changing base for paths in pkg-config file as before. # https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/100 ./0001-build-Use-datarootdir-in-Meson-generated-pkg-config-.patch - - (fetchpatch { - name = "elogind.patch"; - url = "https://github.com/polkit-org/polkit/commit/55ee1b70456eca8281dda9612c485c619122f202.patch"; - hash = "sha256-XOsDyYFBDWxs0PGAgqm3OSUycKR8fYa2ySZqBl8EX7E="; - }) ]; depsBuildBuild = [ diff --git a/pkgs/by-name/po/powwow/package.nix b/pkgs/by-name/po/powwow/package.nix deleted file mode 100644 index 91e51b624028b..0000000000000 --- a/pkgs/by-name/po/powwow/package.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - ncurses, -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "powwow"; - version = "1.2.23"; - - src = fetchurl { - url = "https://www.hoopajoo.net/static/projects/powwow-${finalAttrs.version}.tar.gz"; - hash = "sha256-pnJu7zoEHcswJJo756pOBL9mF9jaQij0VYDcG5I0dPI="; - }; - - buildInputs = [ - ncurses - ]; - - meta = { - description = "Multi-user Dungeon Client"; - homepage = "https://www.hoopajoo.net/projects/powwow.html"; - license = lib.licenses.gpl2Plus; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ ethancedwards8 ]; - mainProgram = "powwow"; - }; -}) diff --git a/pkgs/by-name/pu/publicsuffix-list/package.nix b/pkgs/by-name/pu/publicsuffix-list/package.nix index a54b70e96ead6..4d53a001b9972 100644 --- a/pkgs/by-name/pu/publicsuffix-list/package.nix +++ b/pkgs/by-name/pu/publicsuffix-list/package.nix @@ -7,13 +7,13 @@ stdenvNoCC.mkDerivation { pname = "publicsuffix-list"; - version = "0-unstable-2025-11-14"; + version = "0-unstable-2025-12-28"; src = fetchFromGitHub { owner = "publicsuffix"; repo = "list"; - rev = "64ba165cf391818a086139239c8fa223264eebcc"; - hash = "sha256-Ugou4SzYx9EtzcBtocCqhCZZaU1Sngvk1IEVAIJZ4KY="; + rev = "1ef6d3bc102c85d12e92be54ec0dad8ee990dd5f"; + hash = "sha256-rQdum6XLgfXwzpKTneakFmC80tOmlPFrZ8C7dfEnlSo="; }; dontBuild = true; diff --git a/pkgs/by-name/rd/rdma-core/package.nix b/pkgs/by-name/rd/rdma-core/package.nix index 6eeab6eed2ac0..d7ea22a796216 100644 --- a/pkgs/by-name/rd/rdma-core/package.nix +++ b/pkgs/by-name/rd/rdma-core/package.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rdma-core"; - version = "60.0"; + version = "61.0"; src = fetchFromGitHub { owner = "linux-rdma"; repo = "rdma-core"; rev = "v${finalAttrs.version}"; - hash = "sha256-2V8I/kcOr+/5JxyIAln/r7NnL6bET3vUPgg7PGNe1vc="; + hash = "sha256-5CmQvS1M3zJryJu4hAf8JrCOPTkmxJijmLEnrWzH+d4="; }; strictDeps = true; diff --git a/pkgs/by-name/re/re2c/package.nix b/pkgs/by-name/re/re2c/package.nix index f3cd39eb7c811..e5c119b9572fb 100644 --- a/pkgs/by-name/re/re2c/package.nix +++ b/pkgs/by-name/re/re2c/package.nix @@ -14,13 +14,13 @@ stdenv.mkDerivation rec { pname = "re2c"; - version = "4.3.1"; + version = "4.4"; src = fetchFromGitHub { owner = "skvadrik"; repo = "re2c"; rev = version; - hash = "sha256-ihtAB6HLgYhX+FKPFy01RByy/M468YrHv2v5wB9bJws="; + hash = "sha256-/uQOcbK63le1FsGM7RF8NDRGMk4fs2g+u3hBGX2rBv4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/re/reiserfsprogs/package.nix b/pkgs/by-name/re/reiserfsprogs/package.nix deleted file mode 100644 index 68aaafcf0318b..0000000000000 --- a/pkgs/by-name/re/reiserfsprogs/package.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - libuuid, - autoreconfHook, - e2fsprogs, - acl, -}: - -stdenv.mkDerivation rec { - pname = "reiserfsprogs"; - version = "3.6.27"; - - src = fetchurl { - url = "https://www.kernel.org/pub/linux/kernel/people/jeffm/reiserfsprogs/v${version}/${pname}-${version}.tar.xz"; - hash = "sha256-DpW2f6d0ajwtWRRem5wv60pr5ShT6DtJexgurlCOYuM="; - }; - - nativeBuildInputs = [ autoreconfHook ]; - buildInputs = [ - libuuid - e2fsprogs - acl - ]; - - env.NIX_CFLAGS_COMPILE = toString [ - "-std=gnu90" - "-D_GNU_SOURCE" - ]; - - meta = { - inherit version; - homepage = "http://www.namesys.com/"; - description = "ReiserFS utilities"; - license = lib.licenses.gpl2Only; - platforms = lib.platforms.linux; - }; -} diff --git a/pkgs/by-name/rs/rshim-user-space/package.nix b/pkgs/by-name/rs/rshim-user-space/package.nix index bf6aa8541f39d..07e6450858f5e 100644 --- a/pkgs/by-name/rs/rshim-user-space/package.nix +++ b/pkgs/by-name/rs/rshim-user-space/package.nix @@ -107,5 +107,8 @@ stdenv.mkDerivation rec { maintainers = with lib.maintainers; [ thillux ]; + # Requires https://github.com/Mellanox/rshim-user-space/pull/276 for glibc-2.42, + # patch appears broken though. + broken = true; }; } diff --git a/pkgs/by-name/rt/rt-tests/package.nix b/pkgs/by-name/rt/rt-tests/package.nix index c9f78c1fe6bdf..6d0b3036e0944 100644 --- a/pkgs/by-name/rt/rt-tests/package.nix +++ b/pkgs/by-name/rt/rt-tests/package.nix @@ -9,13 +9,15 @@ stdenv.mkDerivation rec { pname = "rt-tests"; - version = "2.8"; + version = "2.9"; src = fetchurl { url = "https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/snapshot/${pname}-${version}.tar.gz"; - sha256 = "sha256-iBpd7K9VpvUH5wXBKypyQl8NAHN3Om5/PcoJ8RH37mI="; + sha256 = "sha256-Zmb0RqGvS4bHy+6Krs3of1WUWOqJMOH0FHAXIqlteys="; }; + env.NIX_CFLAGS_COMPILE = "-Wno-error=format-overflow"; + nativeBuildInputs = [ makeWrapper ]; buildInputs = [ numactl diff --git a/pkgs/by-name/ru/rust-cbindgen/package.nix b/pkgs/by-name/ru/rust-cbindgen/package.nix index 0190edf76fea5..0dd8cb8d72ef3 100644 --- a/pkgs/by-name/ru/rust-cbindgen/package.nix +++ b/pkgs/by-name/ru/rust-cbindgen/package.nix @@ -33,16 +33,16 @@ rustPlatform.buildRustPackage rec { checkFlags = [ # Disable tests that require rust unstable features # https://github.com/eqrion/cbindgen/issues/338 - "--skip test_expand" - "--skip test_bitfield" - "--skip lib_default_uses_debug_build" - "--skip lib_explicit_debug_build" - "--skip lib_explicit_release_build" + "--skip=test_expand" + "--skip=test_bitfield" + "--skip=lib_default_uses_debug_build" + "--skip=lib_explicit_debug_build" + "--skip=lib_explicit_release_build" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # WORKAROUND: test_body fails when using clang # https://github.com/eqrion/cbindgen/issues/628 - "--skip test_body" + "--skip=test_body" ]; passthru.tests = { diff --git a/pkgs/by-name/sd/sdl2-compat/package.nix b/pkgs/by-name/sd/sdl2-compat/package.nix index fde780a230426..c0af86c9088dd 100644 --- a/pkgs/by-name/sd/sdl2-compat/package.nix +++ b/pkgs/by-name/sd/sdl2-compat/package.nix @@ -30,13 +30,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "sdl2-compat"; - version = "2.32.60"; + version = "2.32.62"; src = fetchFromGitHub { owner = "libsdl-org"; repo = "sdl2-compat"; tag = "release-${finalAttrs.version}"; - hash = "sha256-8nhSyifEeYEZj9tqid1x67jhxqmrR61NwQ/g0Z8vbw8="; + hash = "sha256-JYHkc3DyCsKtq8zbwLGsptCrIRDDbHUjlC9rVaEbEzc="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/sd/sdl3/package.nix b/pkgs/by-name/sd/sdl3/package.nix index dae3517ae9be0..607380908ffdc 100644 --- a/pkgs/by-name/sd/sdl3/package.nix +++ b/pkgs/by-name/sd/sdl3/package.nix @@ -4,7 +4,6 @@ config, alsa-lib, cmake, - darwinMinVersionHook, dbus, fetchFromGitHub, ibusMinimal, @@ -18,6 +17,15 @@ libusb1, libxkbcommon, libgbm, + libX11, + libxcb, + libXScrnSaver, + libXcursor, + libXext, + libXfixes, + libXi, + libXrandr, + libxtst, ninja, nix-update-script, nixosTests, @@ -30,7 +38,6 @@ vulkan-loader, wayland, wayland-scanner, - xorg, zenity, # for passthru.tests SDL_compat, @@ -61,7 +68,7 @@ assert lib.assertMsg (ibusSupport -> dbusSupport) "SDL3 requires dbus support to stdenv.mkDerivation (finalAttrs: { pname = "sdl3"; - version = "3.2.28"; + version = "3.4.0"; outputs = [ "lib" @@ -74,7 +81,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "libsdl-org"; repo = "SDL"; tag = "release-${finalAttrs.version}"; - hash = "sha256-nfnvzog1bON2IaBOeWociV82lmRY+qXgdeXBe6GYlww="; + hash = "sha256-/A1y/NaZVebzI58F4TlwtDwuzlcA33Y1YuZqd5lz/Sk="; }; postPatch = @@ -84,10 +91,24 @@ stdenv.mkDerivation (finalAttrs: { --replace-fail 'set(noninteractive_timeout 10)' 'set(noninteractive_timeout 30)' '' + lib.optionalString waylandSupport '' - substituteInPlace src/video/wayland/SDL_waylandmessagebox.c \ + substituteInPlace src/dialog/unix/SDL_zenitymessagebox.c \ --replace-fail '"zenity"' '"${lib.getExe zenity}"' substituteInPlace src/dialog/unix/SDL_zenitydialog.c \ --replace-fail '"zenity"' '"${lib.getExe zenity}"' + '' + # https://github.com/libsdl-org/SDL/issues/14805 + + '' + substituteInPlace src/video/x11/SDL_x11vulkan.c \ + src/video/wayland/SDL_waylandvulkan.c \ + src/video/offscreen/SDL_offscreenvulkan.c \ + src/video/kmsdrm/SDL_kmsdrmvulkan.c \ + src/video/vivante/SDL_vivantevulkan.c \ + src/video/android/SDL_androidvulkan.c \ + --replace-fail 'libvulkan.so' '${lib.getLib vulkan-loader}/lib/libvulkan.so' + '' + + lib.optionalString x11Support '' + substituteInPlace src/video/x11/SDL_x11vulkan.c \ + --replace-fail 'libX11-xcb.so' '${lib.getLib libX11}/lib/libX11-xcb.so' ''; strictDeps = true; @@ -124,21 +145,20 @@ stdenv.mkDerivation (finalAttrs: { wayland ] ++ lib.optionals x11Support [ - xorg.libX11 - xorg.libxcb - xorg.libXScrnSaver - xorg.libXcursor - xorg.libXext - xorg.libXfixes - xorg.libXi - xorg.libXrandr + libX11 + libxcb + libXScrnSaver + libXcursor + libXext + libXfixes + libXi + libXrandr + libxtst ] ++ [ vulkan-headers vulkan-loader ] - ++ lib.optional (openglSupport && !stdenv.hostPlatform.isDarwin) libGL - ++ lib.optional x11Support xorg.libX11 ++ lib.optionals ibusSupport [ # sdl3 only uses some constants of the ibus headers # it never actually loads the library @@ -170,17 +190,13 @@ stdenv.mkDerivation (finalAttrs: { # Only ppc64le baseline guarantees AltiVec (lib.cmakeBool "SDL_ALTIVEC" (stdenv.hostPlatform.isPower64 && stdenv.hostPlatform.isLittleEndian)) - ] - ++ - lib.optionals - ( - stdenv.hostPlatform.isUnix - && !(stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isAndroid) - && !(x11Support || waylandSupport) - ) - [ - (lib.cmakeBool "SDL_UNIX_CONSOLE_BUILD" true) - ]; + + (lib.cmakeBool "SDL_UNIX_CONSOLE_BUILD" ( + stdenv.hostPlatform.isUnix + && !(stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isAndroid) + && !(x11Support || waylandSupport) + )) + ]; doCheck = true; @@ -227,7 +243,10 @@ stdenv.mkDerivation (finalAttrs: { sdl3-image sdl3-ttf ; - pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; }; + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + versionCheck = true; + }; inherit (finalAttrs.passthru) debug-text-example; } // lib.optionalAttrs stdenv.hostPlatform.isLinux { diff --git a/pkgs/by-name/se/serd/package.nix b/pkgs/by-name/se/serd/package.nix index f7deb8c01c13b..8f55f417ee4ba 100644 --- a/pkgs/by-name/se/serd/package.nix +++ b/pkgs/by-name/se/serd/package.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "serd"; - version = "0.32.4"; + version = "0.32.6"; outputs = [ "out" @@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "https://download.drobilla.net/serd-${finalAttrs.version}.tar.xz"; - hash = "sha256-y++1aejbaGvoxpyzhmqVOMfLBV6PJCF91qRHHv+n00k="; + hash = "sha256-D74JSVL+F2uk2k8vdn3ftfYOZ+ZNF2G0ODoLhyz9Bxo="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/sh/shaderc/package.nix b/pkgs/by-name/sh/shaderc/package.nix new file mode 100644 index 0000000000000..b9e2e157f7d36 --- /dev/null +++ b/pkgs/by-name/sh/shaderc/package.nix @@ -0,0 +1,80 @@ +{ + lib, + stdenv, + fetchFromGitHub, + replaceVars, + versionCheckHook, + cmake, + python3, + darwin, + cctools, + glslang, + spirv-tools, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "shaderc"; + version = "2025.5"; + + outputs = [ + "out" + "lib" + "bin" + "dev" + "static" + ]; + + src = fetchFromGitHub { + owner = "google"; + repo = "shaderc"; + rev = "v${finalAttrs.version}"; + hash = "sha256-PmGRZDXblrBhZe16QfpHfRdsRhXnGsN7o+qh14nlOUQ="; + }; + + patches = [ + (replaceVars ./unvendor-glslang.patch { + shaderc-version = finalAttrs.version; + spirv-tools-version = spirv-tools.version; + glslang-version = glslang.version; + }) + ]; + + postPatch = '' + patchShebangs --build utils/ + + substituteInPlace cmake/*.pc.in \ + --replace-fail $'{prefix}/@CMAKE_INSTALL_' '@CMAKE_INSTALL_FULL_' + ''; + + nativeBuildInputs = [ + cmake + python3 + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ cctools ] + ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [ + darwin.autoSignDarwinBinariesHook + ]; + + propagatedBuildInputs = [ + glslang + ]; + + postInstall = '' + moveToOutput "lib/*.a" $static + ''; + + cmakeFlags = [ "-DSHADERC_SKIP_TESTS=ON" ]; + + nativeInstallCheckInputs = [ + versionCheckHook + ]; + versionCheckProgramArg = "--version"; + doInstallCheck = true; + + meta = { + description = "Collection of tools, libraries and tests for shader compilation"; + inherit (finalAttrs.src.meta) homepage; + license = lib.licenses.asl20; + platforms = lib.platforms.all; + mainProgram = "glslc"; + }; +}) diff --git a/pkgs/by-name/sh/shaderc/unvendor-glslang.patch b/pkgs/by-name/sh/shaderc/unvendor-glslang.patch new file mode 100644 index 0000000000000..5e8ee0ff570f6 --- /dev/null +++ b/pkgs/by-name/sh/shaderc/unvendor-glslang.patch @@ -0,0 +1,49 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 06f5395..a23a573 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -130,7 +130,9 @@ endif(MSVC) + + # Configure subdirectories. + # We depend on these for later projects, so they should come first. +-add_subdirectory(third_party) ++find_package(glslang REQUIRED CONFIG) ++get_target_property(glslang_includes glslang::glslang INTERFACE_INCLUDE_DIRECTORIES) ++set(glslang_SOURCE_DIR "${glslang_includes}/glslang") + + add_subdirectory(libshaderc_util) + add_subdirectory(libshaderc) +@@ -142,7 +144,7 @@ endif() + add_custom_target(build-version + ${Python_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/utils/update_build_version.py +- ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc ++ dummy dummy dummy ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc + COMMENT "Update build-version.inc in the Shaderc build directory (if necessary).") + + function(define_pkg_config_file NAME LIBS) +diff --git a/utils/update_build_version.py b/utils/update_build_version.py +index b7ce5b8..fcb0432 100755 +--- a/utils/update_build_version.py ++++ b/utils/update_build_version.py +@@ -120,11 +120,15 @@ def get_version_string(project, directory): + """Returns a detailed version string for a given project with its + directory, which consists of software version string and git description + string.""" +- detailed_version_string_lst = [project] +- if project != 'glslang': +- detailed_version_string_lst.append(deduce_software_version(directory)) +- detailed_version_string_lst.append(describe(directory).replace('"', '\\"')) +- return ' '.join(detailed_version_string_lst) ++ match project: ++ case "shaderc": ++ return "shaderc v@shaderc-version@" ++ case "spirv-tools": ++ return "spirv-tools v@spirv-tools-version@" ++ case "glslang": ++ return "glslang v@glslang-version@" ++ case _: ++ sys.exit(1) + + + def main(): diff --git a/pkgs/by-name/sp/speechd/package.nix b/pkgs/by-name/sp/speechd/package.nix index 361304524ec1d..cb10fc36fa1fb 100644 --- a/pkgs/by-name/sp/speechd/package.nix +++ b/pkgs/by-name/sp/speechd/package.nix @@ -4,6 +4,7 @@ replaceVars, pkg-config, fetchurl, + fetchpatch, python3Packages, gettext, itstool, @@ -53,6 +54,11 @@ stdenv.mkDerivation (finalAttrs: { # patch context bindir = null; }) + (fetchpatch { + name = "use-binsh.patch"; + url = "https://github.com/brailcom/speechd/commit/66d5fe65cffd4c0ce9cfb4c6d292866ed8726999.diff?full_index=1"; + hash = "sha256-7R5BH6QmxovvtXoH/T76qu6YMfm1HE+CA0eB0mzwmfY="; + }) ] ++ lib.optionals (withEspeak && espeak.mbrolaSupport) [ # Replace FHS paths. @@ -129,7 +135,6 @@ stdenv.mkDerivation (finalAttrs: { postPatch = lib.optionalString withPico '' substituteInPlace src/modules/pico.c --replace "/usr/share/pico/lang" "${svox}/share/pico/lang" - substituteInPlace src/modules/generic.c --replace-fail "/bin/bash" "${runtimeShell}" ''; installFlags = [ diff --git a/pkgs/by-name/sp/spral/package.nix b/pkgs/by-name/sp/spral/package.nix index e8f7a940e61cc..bbe93f52aec55 100644 --- a/pkgs/by-name/sp/spral/package.nix +++ b/pkgs/by-name/sp/spral/package.nix @@ -67,7 +67,9 @@ stdenv.mkDerivation (finalAttrs: { mesonFlags = [ (lib.mesonBool "tests" true) ]; - LDFLAGS = lib.optionals stdenv.hostPlatform.isDarwin [ "-lomp" ]; + env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { + LDFLAGS = "-lomp"; + }; doCheck = true; diff --git a/pkgs/by-name/sy/systemtap-unwrapped/package.nix b/pkgs/by-name/sy/systemtap-unwrapped/package.nix index 22109e888eff6..afad124fb8526 100644 --- a/pkgs/by-name/sy/systemtap-unwrapped/package.nix +++ b/pkgs/by-name/sy/systemtap-unwrapped/package.nix @@ -4,6 +4,7 @@ fetchgit, pkg-config, gettext, + boost, cpio, elfutils, python3, @@ -11,14 +12,21 @@ stdenv.mkDerivation (finalAttrs: { pname = "systemtap"; - version = "5.2"; + version = "5.4"; src = fetchgit { url = "git://sourceware.org/git/systemtap.git"; rev = "release-${finalAttrs.version}"; - hash = "sha256-SUPNarZW8vdK9hQaI2kU+rfKWIPiXB4BvJvRNC1T9tU="; + hash = "sha256-11ecQFiBaWOZcbS5Qqf/41heiJM1wSttx0eMoVQImZc="; }; + patches = lib.optionals stdenv.hostPlatform.is32bit [ + # Fix 32bit build + # https://sourceware.org/git/?p=systemtap.git;a=commit;h=94efb7c4eb02de0e3565cb165b53963602d3dcb6 + # does not apply with fetchpatch because of gitweb encoding issues + ./systemtap-elaborate-fix-32bit-build.patch + ]; + nativeBuildInputs = [ pkg-config cpio @@ -26,6 +34,7 @@ stdenv.mkDerivation (finalAttrs: { python3.pkgs.setuptools ]; buildInputs = [ + boost elfutils gettext python3 diff --git a/pkgs/by-name/sy/systemtap-unwrapped/systemtap-elaborate-fix-32bit-build.patch b/pkgs/by-name/sy/systemtap-unwrapped/systemtap-elaborate-fix-32bit-build.patch new file mode 100644 index 0000000000000..34a23577dbdb3 --- /dev/null +++ b/pkgs/by-name/sy/systemtap-unwrapped/systemtap-elaborate-fix-32bit-build.patch @@ -0,0 +1,102 @@ +From 94efb7c4eb02de0e3565cb165b53963602d3dcb6 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich +Date: Sun, 30 Nov 2025 20:58:01 +0000 +Subject: [PATCH] elaborate.cxx: fix 32-bit build + +Without the change the build fails on i686-linux as: + + elaborate.cxx:5119:33: error: + format '%ld' expects argument of type 'long int', + but argument 2 has type 'int64_t' {aka 'long long int'} [-Werror=format=] + 5119 | session.print_warning (_F("Collapsing unresolved @define to %ld [stapprobes]", value), e->tok); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--- + elaborate.cxx | 2 +- + po/cs.po | 2 +- + po/en.po | 2 +- + po/fr.po | 2 +- + po/pl.po | 2 +- + po/systemtap.pot | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/elaborate.cxx b/elaborate.cxx +index 93ecffa1a..3ad3614e7 100644 +--- a/elaborate.cxx ++++ b/elaborate.cxx +@@ -5116,7 +5116,7 @@ const_folder::visit_defined_op (defined_op* e) + // Don't be greedy... we'll only collapse one at a time so type + // resolution can have another go at it. + relaxed_p = false; +- session.print_warning (_F("Collapsing unresolved @define to %ld [stapprobes]", value), e->tok); ++ session.print_warning (_F("Collapsing unresolved @define to %lld [stapprobes]", (long long)value), e->tok); + literal_number* n = new literal_number (value); + n->tok = e->tok; + n->visit (this); +diff --git a/po/cs.po b/po/cs.po +index df6412772..92fdef7ad 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -2039,7 +2039,7 @@ msgstr "Zahazuji kontrolu '@defined' bez vedlejších účinků " + + #: elaborate.cxx:5119 + #, fuzzy, c-format +-msgid "Collapsing unresolved @define to %ld [stapprobes]" ++msgid "Collapsing unresolved @define to %lld [stapprobes]" + msgstr "Zahazuji kontrolu '@defined' bez vedlejších účinků " + + #: elaborate.cxx:5127 +diff --git a/po/en.po b/po/en.po +index 8847639e8..1db2292bd 100644 +--- a/po/en.po ++++ b/po/en.po +@@ -2050,7 +2050,7 @@ msgstr "" + + #: elaborate.cxx:5119 + #, c-format +-msgid "Collapsing unresolved @define to %ld [stapprobes]" ++msgid "Collapsing unresolved @define to %lld [stapprobes]" + msgstr "" + + #: elaborate.cxx:5127 +diff --git a/po/fr.po b/po/fr.po +index b8677707b..55e409919 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -2090,7 +2090,7 @@ msgstr "" + + #: elaborate.cxx:5119 + #, c-format +-msgid "Collapsing unresolved @define to %ld [stapprobes]" ++msgid "Collapsing unresolved @define to %lld [stapprobes]" + msgstr "" + + #: elaborate.cxx:5127 +diff --git a/po/pl.po b/po/pl.po +index e3b6700ee..0b35880c1 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -1977,7 +1977,7 @@ msgstr "" + + #: elaborate.cxx:5119 + #, c-format +-msgid "Collapsing unresolved @define to %ld [stapprobes]" ++msgid "Collapsing unresolved @define to %lld [stapprobes]" + msgstr "" + + #: elaborate.cxx:5127 +diff --git a/po/systemtap.pot b/po/systemtap.pot +index 32ddb2290..4ec0d9a8c 100644 +--- a/po/systemtap.pot ++++ b/po/systemtap.pot +@@ -1973,7 +1973,7 @@ msgstr "" + + #: elaborate.cxx:5119 + #, c-format +-msgid "Collapsing unresolved @define to %ld [stapprobes]" ++msgid "Collapsing unresolved @define to %lld [stapprobes]" + msgstr "" + + #: elaborate.cxx:5127 +-- +2.52.0 + diff --git a/pkgs/by-name/tz/tzdata/package.nix b/pkgs/by-name/tz/tzdata/package.nix index 773419da35cbb..146b46dc230d2 100644 --- a/pkgs/by-name/tz/tzdata/package.nix +++ b/pkgs/by-name/tz/tzdata/package.nix @@ -8,16 +8,16 @@ stdenv.mkDerivation (finalAttrs: { pname = "tzdata"; - version = "2025b"; + version = "2025c"; srcs = [ (fetchurl { url = "https://data.iana.org/time-zones/releases/tzdata${finalAttrs.version}.tar.gz"; - hash = "sha256-EYEEEzRfx4BQF+J+qfpIhf10zWGykRcRrQOPXSjXFHQ="; + hash = "sha256-SqeeTv/uU/xAKf/l9uvpeTcoLrzfOG1dLakc6EFC+Vc="; }) (fetchurl { url = "https://data.iana.org/time-zones/releases/tzcode${finalAttrs.version}.tar.gz"; - hash = "sha256-Bfj+2zUl7nDUnIfT+ueKig265P6HqlZcZc2plIrhNew="; + hash = "sha256-aX6+ZiVESu9QgPWOSdA0JLu1Lgi/SD0921rPEMvRV0A="; }) ]; diff --git a/pkgs/by-name/ut/utf8proc/package.nix b/pkgs/by-name/ut/utf8proc/package.nix index ec2586bb7d674..d9910efaaf722 100644 --- a/pkgs/by-name/ut/utf8proc/package.nix +++ b/pkgs/by-name/ut/utf8proc/package.nix @@ -12,13 +12,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "utf8proc"; - version = "2.11.2"; + version = "2.11.3"; src = fetchFromGitHub { owner = "JuliaStrings"; repo = "utf8proc"; tag = "v${finalAttrs.version}"; - hash = "sha256-/+/IrsLQ9ykuVOaItd2ZbX60pPlP2omvS1qJz51AnWA="; + hash = "sha256-DF2//R8Oc/+IEJuiG9+rTxQ7nltPcPqdCkzR4T7pUes="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/by-name/ut/util-linux/package.nix b/pkgs/by-name/ut/util-linux/package.nix index 2127517fe8e04..0cb22af94bd61 100644 --- a/pkgs/by-name/ut/util-linux/package.nix +++ b/pkgs/by-name/ut/util-linux/package.nix @@ -40,11 +40,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "util-linux" + lib.optionalString isMinimal "-minimal"; - version = "2.41.2"; + version = "2.41.3"; src = fetchurl { url = "mirror://kernel/linux/utils/util-linux/v${lib.versions.majorMinor finalAttrs.version}/util-linux-${finalAttrs.version}.tar.xz"; - hash = "sha256-YGKh2JtXGmGTLm/AIR82BgxBg1aLge6GbPNjvOn2WD4="; + hash = "sha256-MzDYc/D861VguJp9wU5PMoi72IDpaQPtm1DsK1eZ5Ys="; }; patches = [ diff --git a/pkgs/by-name/ve/versionCheckHook/hook.sh b/pkgs/by-name/ve/versionCheckHook/hook.sh index 080aca4bd551f..69c6ddb7f341b 100644 --- a/pkgs/by-name/ve/versionCheckHook/hook.sh +++ b/pkgs/by-name/ve/versionCheckHook/hook.sh @@ -10,7 +10,7 @@ _handleCmdOutput(){ done fi - versionOutput="$(env \ + versionOutput="$(@envCommand@ \ --chdir=/ \ --argv0="$(basename "${command[0]}")" \ "${envArgs[@]}" \ diff --git a/pkgs/by-name/ve/versionCheckHook/package.nix b/pkgs/by-name/ve/versionCheckHook/package.nix index d5039db3f219a..0cf103133e04b 100644 --- a/pkgs/by-name/ve/versionCheckHook/package.nix +++ b/pkgs/by-name/ve/versionCheckHook/package.nix @@ -1,12 +1,14 @@ { lib, makeSetupHook, + coreutils, }: makeSetupHook { name = "version-check-hook"; substitutions = { storeDir = builtins.storeDir; + envCommand = lib.getExe' coreutils "env"; # Cannot call it env, because it isn't an attrset of environment variables! }; meta = { description = "Lookup for $version in the output of --help and --version"; diff --git a/pkgs/by-name/wh/which/gcc15.patch b/pkgs/by-name/wh/which/gcc15.patch new file mode 100644 index 0000000000000..13708c5b36463 --- /dev/null +++ b/pkgs/by-name/wh/which/gcc15.patch @@ -0,0 +1,44 @@ +From 16a1647fc26953fab659de5f55d4c0defdfb894f Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 22 Mar 2025 17:56:19 -0700 +Subject: [PATCH] getopt: Fix signature of getenv function + +This happens on musl systems using GCC 15 + +../which-2.21/getopt.h:106:12: error: conflicting types for 'getopt'; have +'int(void)' + 106 | extern int getopt (); + | ^~~~~~ +--- +Link: https://lists.gnu.org/archive/html/which-bugs/2025-03/msg00000.html + getopt.c | 2 +- + getopt.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/getopt.c b/getopt.c +index 9ac2ed6..7e14270 100644 +--- a/getopt.c ++++ b/getopt.c +@@ -205,7 +205,7 @@ static char *posixly_correct; + /* Avoid depending on library functions or files + whose names are inconsistent. */ + +-char *getenv(); ++char *getenv(const char*); + + static char *my_index(str, chr) const char *str; + int chr; +diff --git a/getopt.h b/getopt.h +index f080053..635fc46 100644 +--- a/getopt.h ++++ b/getopt.h +@@ -102,7 +102,7 @@ struct option { + errors, only prototype getopt for the GNU C library. */ + extern int getopt(int argc, char *const *argv, const char *shortopts); + #else /* not __GNU_LIBRARY__ */ +-extern int getopt(); ++extern int getopt(int, char * const [], const char *); + #endif /* __GNU_LIBRARY__ */ + extern int getopt_long(int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); + extern int getopt_long_only(int argc, char *const *argv, const char *shortopts, const struct option *longopts, + diff --git a/pkgs/by-name/wh/which/package.nix b/pkgs/by-name/wh/which/package.nix index c03d7a711da9b..dc4442577ce83 100644 --- a/pkgs/by-name/wh/which/package.nix +++ b/pkgs/by-name/wh/which/package.nix @@ -13,6 +13,9 @@ stdenv.mkDerivation (finalAttrs: { url = "mirror://gnu/which/which-${finalAttrs.version}.tar.gz"; hash = "sha256-osVYIm/E2eTOMxvS/Tw/F/lVEV0sAORHYYpO+ZeKKnM="; }; + patches = [ + ./gcc15.patch + ]; strictDeps = true; enableParallelBuilding = true; diff --git a/pkgs/by-name/x2/x265/package.nix b/pkgs/by-name/x2/x265/package.nix index c3610a6348573..08cd86aaac547 100644 --- a/pkgs/by-name/x2/x265/package.nix +++ b/pkgs/by-name/x2/x265/package.nix @@ -33,12 +33,10 @@ }: let - mkFlag = optSet: flag: if optSet then "-D${flag}=ON" else "-D${flag}=OFF"; - isCross = stdenv.buildPlatform != stdenv.hostPlatform; in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "x265"; version = "4.1"; @@ -50,7 +48,7 @@ stdenv.mkDerivation rec { # Check that x265Version.txt contains the expected version number # whether we fetch a source tarball or a tag from the git repo src = fetchurl { - url = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_${version}.tar.gz"; + url = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_${finalAttrs.version}.tar.gz"; hash = "sha256-oxaZxqiYBrdLAVHl5qffZd5LSQUEgv5ev4pDedevjyk="; }; @@ -89,18 +87,18 @@ stdenv.mkDerivation rec { }) ]; - sourceRoot = "x265_${version}/source"; + sourceRoot = "x265_${finalAttrs.version}/source"; postPatch = '' substituteInPlace cmake/Version.cmake \ - --replace-fail "unknown" "${version}" \ - --replace-fail "0.0" "${version}" + --replace-fail "unknown" "${finalAttrs.version}" \ + --replace-fail "0.0" "${finalAttrs.version}" '' # There is broken and complicated logic when setting X265_LATEST_TAG for # mingwW64 builds. This bypasses the logic by setting it at the end of the # file + lib.optionalString stdenv.hostPlatform.isMinGW '' - echo 'set(X265_LATEST_TAG "${version}")' >> ./cmake/Version.cmake + echo 'set(X265_LATEST_TAG "${finalAttrs.version}")' >> ./cmake/Version.cmake ''; nativeBuildInputs = [ @@ -110,15 +108,15 @@ stdenv.mkDerivation rec { ++ lib.optionals numaSupport [ numactl ]; cmakeFlags = [ - "-DENABLE_ALPHA=ON" - "-DENABLE_MULTIVIEW=ON" - "-DENABLE_SCC_EXT=ON" + (lib.cmakeBool "ENABLE_ALPHA" true) + (lib.cmakeBool "ENABLE_MULTIVIEW" true) + (lib.cmakeBool "ENABLE_SCC_EXT" true) "-Wno-dev" - (mkFlag custatsSupport "DETAILED_CU_STATS") - (mkFlag debugSupport "CHECKED_BUILD") - (mkFlag ppaSupport "ENABLE_PPA") - (mkFlag vtuneSupport "ENABLE_VTUNE") - (mkFlag werrorSupport "WARNINGS_AS_ERRORS") + (lib.cmakeBool "DETAILED_CU_STATS" custatsSupport) + (lib.cmakeBool "CHECKED_BUILD" debugSupport) + (lib.cmakeBool "ENABLE_PPA" ppaSupport) + (lib.cmakeBool "ENABLE_VTUNE" vtuneSupport) + (lib.cmakeBool "WARNINGS_AS_ERRORS" werrorSupport) ] ++ lib.optionals stdenv.hostPlatform.isPower [ # baseline for everything but ppc64le doesn't have AltiVec @@ -128,46 +126,49 @@ stdenv.mkDerivation rec { (lib.cmakeBool "CPU_POWER8" (stdenv.hostPlatform.isPower64 && stdenv.hostPlatform.isLittleEndian)) ] # Clang does not support the endfunc directive so use GCC. - ++ lib.optional ( - stdenv.cc.isClang && !stdenv.targetPlatform.isDarwin && !stdenv.targetPlatform.isFreeBSD - ) "-DCMAKE_ASM_COMPILER=${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}gcc" + ++ + lib.optionals + (stdenv.cc.isClang && !stdenv.targetPlatform.isDarwin && !stdenv.targetPlatform.isFreeBSD) + [ + (lib.cmakeFeature "CMAKE_ASM_COMPILER" "${gccStdenv.cc}/bin/${gccStdenv.cc.targetPrefix}gcc") + ] # Neon support ++ lib.optionals (neonSupport && stdenv.hostPlatform.isAarch32) [ - "-DENABLE_NEON=ON" - "-DCPU_HAS_NEON=ON" - "-DENABLE_ASSEMBLY=ON" + (lib.cmakeBool "ENABLE_NEON" true) + (lib.cmakeBool "CPU_HAS_NEON" true) + (lib.cmakeBool "ENABLE_ASSEMBLY" true) ]; cmakeStaticLibFlags = [ - "-DHIGH_BIT_DEPTH=ON" - "-DENABLE_CLI=OFF" - "-DENABLE_SHARED=OFF" - "-DEXPORT_C_API=OFF" + (lib.cmakeBool "HIGH_BIT_DEPTH" true) + (lib.cmakeBool "ENABLE_CLI" false) + (lib.cmakeBool "ENABLE_SHARED" false) + (lib.cmakeBool "EXPORT_C_API" false) ] ++ lib.optionals isCross [ - (mkFlag stdenv.hostPlatform.isAarch32 "CROSS_COMPILE_ARM") - (mkFlag stdenv.hostPlatform.isAarch64 "CROSS_COMPILE_ARM64") + (lib.cmakeBool "CROSS_COMPILE_ARM" stdenv.hostPlatform.isAarch32) + (lib.cmakeBool "CROSS_COMPILE_ARM64" stdenv.hostPlatform.isAarch64) ]; preConfigure = lib.optionalString multibitdepthSupport '' - cmake -B build-10bits $cmakeFlags "''${cmakeFlagsArray[@]}" $cmakeStaticLibFlags - cmake -B build-12bits $cmakeFlags "''${cmakeFlagsArray[@]}" $cmakeStaticLibFlags -DMAIN12=ON + cmake -B build-10bits "''${cmakeFlags[@]}" "''${cmakeFlagsArray[@]}" "''${cmakeStaticLibFlags[@]}" + cmake -B build-12bits "''${cmakeFlags[@]}" "''${cmakeFlagsArray[@]}" "''${cmakeStaticLibFlags[@]}" ${lib.cmakeBool "MAIN12" true} cmakeFlagsArray+=( - -DEXTRA_LIB="x265-10.a;x265-12.a" - -DEXTRA_LINK_FLAGS=-L. - -DLINKED_10BIT=ON - -DLINKED_12BIT=ON + ${lib.cmakeFeature "EXTRA_LIB" "\"x265-10.a;x265-12.a\""} + ${lib.cmakeFeature "EXTRA_LINK_FLAGS" "-L."} + ${lib.cmakeBool "LINKED_10BIT" true} + ${lib.cmakeBool "LINKED_12BIT" true} ) '' + '' cmakeFlagsArray+=( - -DGIT_ARCHETYPE=1 # https://bugs.gentoo.org/814116 - ${mkFlag (!stdenv.hostPlatform.isStatic) "ENABLE_SHARED"} - -DHIGH_BIT_DEPTH=OFF - -DENABLE_HDR10_PLUS=ON - ${mkFlag cliSupport "ENABLE_CLI"} - ${mkFlag unittestsSupport "ENABLE_TESTS"} + ${lib.cmakeBool "GIT_ARCHETYPE" true} # https://bugs.gentoo.org/814116 + ${lib.cmakeBool "ENABLE_SHARED" (!stdenv.hostPlatform.isStatic)} + ${lib.cmakeBool "HIGH_BIT_DEPTH" false} + ${lib.cmakeBool "ENABLE_HDR10_PLUS" true} + ${lib.cmakeBool "ENABLE_CLI" cliSupport} + ${lib.cmakeBool "ENABLE_TESTS" unittestsSupport} ) ''; @@ -198,15 +199,17 @@ stdenv.mkDerivation rec { ln -s $out/bin/*.dll $out/lib ''; + __structuredAttrs = true; + meta = { description = "Library for encoding H.265/HEVC video streams"; mainProgram = "x265"; homepage = "https://www.x265.org"; changelog = "https://x265.readthedocs.io/en/master/releasenotes.html#version-${ - lib.strings.replaceStrings [ "." ] [ "-" ] version + lib.strings.replaceStrings [ "." ] [ "-" ] finalAttrs.version }"; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ codyopel ]; platforms = lib.platforms.all; }; -} +}) diff --git a/pkgs/by-name/xa/xauth/package.nix b/pkgs/by-name/xa/xauth/package.nix index c44e008f8b622..b28bd41cddd8d 100644 --- a/pkgs/by-name/xa/xauth/package.nix +++ b/pkgs/by-name/xa/xauth/package.nix @@ -12,11 +12,11 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "xauth"; - version = "1.1.4"; + version = "1.1.5"; src = fetchurl { url = "mirror://xorg/individual/app/xauth-${finalAttrs.version}.tar.xz"; - hash = "sha256-6TGBQUZK17TcD4VkpYDw0g+XfIWjiMxA1admIGFRxpA="; + hash = "sha256-pAAOL0QfrOv1aQJr7ezCO6JizGknvlIHCr4AAmJc++A="; }; strictDeps = true; diff --git a/pkgs/by-name/xd/xdg-user-dirs-gtk/package.nix b/pkgs/by-name/xd/xdg-user-dirs-gtk/package.nix index 383b36d71b905..b13967cb78883 100644 --- a/pkgs/by-name/xd/xdg-user-dirs-gtk/package.nix +++ b/pkgs/by-name/xd/xdg-user-dirs-gtk/package.nix @@ -13,11 +13,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "xdg-user-dirs-gtk"; - version = "0.14"; + version = "0.16"; src = fetchurl { url = "mirror://gnome/sources/xdg-user-dirs-gtk/${lib.versions.majorMinor finalAttrs.version}/xdg-user-dirs-gtk-${finalAttrs.version}.tar.xz"; - hash = "sha256-U3++FCskc27XiU5KAfaf11jLbHpnejgoeVKdIX9KKHM="; + hash = "sha256-voJd5/iRddterQzTdE0nYRCccJQyUahwkiWRYwJVIKk="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/xd/xdg-user-dirs/gettext-0.25.patch b/pkgs/by-name/xd/xdg-user-dirs/gettext-0.25.patch deleted file mode 100644 index f292da934d593..0000000000000 --- a/pkgs/by-name/xd/xdg-user-dirs/gettext-0.25.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index dc389db..45a35df 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2,6 +2,7 @@ AC_INIT(xdg-user-dirs-update.c) - - AM_INIT_AUTOMAKE(xdg-user-dirs, 0.18) - AM_CONFIG_HEADER(config.h) -+AC_CONFIG_MACRO_DIRS([m4]) - - AM_SANITY_CHECK - AM_MAINTAINER_MODE -@@ -20,6 +21,7 @@ GETTEXT_PACKAGE=xdg-user-dirs - AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [The gettext domain name]) - AC_SUBST(GETTEXT_PACKAGE) - -+AM_GNU_GETTEXT_REQUIRE_VERSION([0.14.4]) - AM_GNU_GETTEXT([external]) - - dnl ========================================================================== diff --git a/pkgs/by-name/xd/xdg-user-dirs/package.nix b/pkgs/by-name/xd/xdg-user-dirs/package.nix index 1a77506ccf0a4..c0423a044442b 100644 --- a/pkgs/by-name/xd/xdg-user-dirs/package.nix +++ b/pkgs/by-name/xd/xdg-user-dirs/package.nix @@ -1,42 +1,41 @@ { lib, stdenv, - autoreconfHook, + meson, + ninja, fetchurl, libxslt, docbook_xsl, docbook_xml_dtd_43, gettext, - makeWrapper, + makeBinaryWrapper, + libiconv, + libintl, }: stdenv.mkDerivation (finalAttrs: { pname = "xdg-user-dirs"; - version = "0.18"; + version = "0.19"; src = fetchurl { - url = "https://user-dirs.freedesktop.org/releases/xdg-user-dirs-${finalAttrs.version}.tar.gz"; - hash = "sha256-7G8G10lc26N6cyA5+bXhV4vLKWV2/eDaQO2y9SIg3zw="; + url = "https://user-dirs.freedesktop.org/releases/xdg-user-dirs-${finalAttrs.version}.tar.xz"; + hash = "sha256-6S3rkpwQ1LKTKTl6+KJYUQEkf35hd6xvHSjoITDtjBk="; }; - patches = [ - # https://gitlab.freedesktop.org/xdg/xdg-user-dirs/-/merge_requests/16 - ./gettext-0.25.patch - ]; - - postPatch = '' - substituteInPlace Makefile.am \ - --replace-fail 'libraries = $(LIBINTL)' 'libraries = $(LIBICONV) $(LIBINTL)' - ''; - nativeBuildInputs = [ - autoreconfHook - makeWrapper + meson + ninja + makeBinaryWrapper libxslt docbook_xsl docbook_xml_dtd_43 - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ gettext ]; + gettext + ]; + + buildInputs = [ + libiconv + libintl + ]; NIX_LDFLAGS = if stdenv.isDarwin then "-liconv" else null; @@ -44,6 +43,9 @@ stdenv.mkDerivation (finalAttrs: { # fallback values need to be last wrapProgram "$out/bin/xdg-user-dirs-update" \ --suffix XDG_CONFIG_DIRS : "$out/etc/xdg" + + substituteInPlace "$out/lib/systemd/user/xdg-user-dirs.service" \ + --replace-fail "/usr/bin/xdg-user-dirs-update" "$out/bin/xdg-user-dirs-update" ''; meta = { diff --git a/pkgs/by-name/xf/xf86-input-evdev/package.nix b/pkgs/by-name/xf/xf86-input-evdev/package.nix new file mode 100644 index 0000000000000..df15fa63733c7 --- /dev/null +++ b/pkgs/by-name/xf/xf86-input-evdev/package.nix @@ -0,0 +1,71 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorgproto, + libevdev, + udev, + mtdev, + xorg-server, + nix-update-script, + testers, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-input-evdev"; + version = "2.11.0"; + + # to get rid of xorgserver.dev; man is tiny + outputs = [ + "out" + "dev" + ]; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-input-evdev"; + tag = "xf86-input-evdev-${finalAttrs.version}"; + hash = "sha256-tXB50laCJcLoBbwM/hE+qEiHzmN7Q+r8uu6NPlRmpTM="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + ]; + + buildInputs = [ + xorgproto + libevdev + udev + mtdev + xorg-server + ]; + + configureFlags = [ + "--with-sdkdir=${placeholder "dev"}/include/xorg" + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-input-evdev-(.*)" ]; }; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + }; + + meta = { + description = "Generic Linux input driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-input-evdev"; + license = with lib.licenses; [ + hpndSellVariant + mit + ]; + maintainers = [ ]; + pkgConfigModules = [ "xorg-evdev" ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xf/xf86-input-joystick/package.nix b/pkgs/by-name/xf/xf86-input-joystick/package.nix new file mode 100644 index 0000000000000..d0cb2023196d9 --- /dev/null +++ b/pkgs/by-name/xf/xf86-input-joystick/package.nix @@ -0,0 +1,57 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorgproto, + xorg-server, + nix-update-script, + testers, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-input-joystick"; + version = "1.6.4"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-input-joystick"; + tag = "xf86-input-joystick-${finalAttrs.version}"; + hash = "sha256-JxSnhWx5V3/pdlu3mwRNrgicdfaUK5nIwBK3reqchQs="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # xorg-server defines autoconf macros that we need + ]; + + buildInputs = [ + util-macros # unused dependency but the build fails if pkg-config can't find it + xorgproto + xorg-server + ]; + + configureFlags = [ "--with-sdkdir=${placeholder "out"}/include/xorg" ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-input-joystick-(.*)" ]; }; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + }; + + meta = { + description = "Joystick input driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-input-joystick"; + license = lib.licenses.hpndSellVariant; + maintainers = [ ]; + pkgConfigModules = [ "xorg-joystick" ]; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isDarwin; # never worked: https://hydra.nixos.org/job/nixpkgs/trunk/xorg.xf86inputjoystick.x86_64-darwin + }; +}) diff --git a/pkgs/by-name/xf/xf86-input-keyboard/package.nix b/pkgs/by-name/xf/xf86-input-keyboard/package.nix new file mode 100644 index 0000000000000..d3802e40a8657 --- /dev/null +++ b/pkgs/by-name/xf/xf86-input-keyboard/package.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorgproto, + xorg-server, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-input-keyboard"; + version = "2.1.0"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-input-keyboard"; + tag = "xf86-input-keyboard-${finalAttrs.version}"; + hash = "sha256-M0D6oTAhnADI7pgWKt4ueHGbdMVDTVOXy3w07DGcCSg="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + ]; + + buildInputs = [ + xorgproto + xorg-server + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-input-keyboard-(.*)" ]; }; + }; + + meta = { + description = "Keyboard input driver for non-Linux platforms for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-input-keyboard"; + license = [ + lib.licenses.x11 + lib.licenses.hpndSellVariant + ] + # only solaris part is MIT + ++ lib.optional stdenv.hostPlatform.isSunOS lib.licenses.mit; + maintainers = [ ]; + # platforms according to the readme: + # BSD, GNU Hurd, illumos & Solaris + platforms = with lib.platforms; freebsd ++ netbsd ++ openbsd ++ illumos; + }; +}) diff --git a/pkgs/by-name/xf/xf86-input-libinput/package.nix b/pkgs/by-name/xf/xf86-input-libinput/package.nix new file mode 100644 index 0000000000000..f3852ab9ad9a6 --- /dev/null +++ b/pkgs/by-name/xf/xf86-input-libinput/package.nix @@ -0,0 +1,67 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorgproto, + libinput, + xorg-server, + nix-update-script, + testers, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-input-libinput"; + version = "1.5.0"; + + outputs = [ + "out" + "dev" + ]; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-input-libinput"; + tag = "xf86-input-libinput-${finalAttrs.version}"; + hash = "sha256-yZi5h3k6cwunucLhmH/wNchA0M11U3KBwrRuY/oATh8="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + ]; + + buildInputs = [ + xorgproto + libinput + xorg-server + ]; + + configureFlags = [ + "--with-sdkdir=${placeholder "dev"}/include/xorg" + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-input-libinput-(.*)" ]; }; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + }; + + meta = { + description = "libinput-based input driver for the Xorg X server"; + longDescription = '' + This is an X driver based on libinput. It is a thin wrapper around libinput, so while it does + provide all features that libinput supports it does little beyond. + ''; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput"; + license = lib.licenses.mit; + maintainers = [ ]; + pkgConfigModules = [ "xorg-libinput" ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-amdgpu/package.nix b/pkgs/by-name/xf/xf86-video-amdgpu/package.nix new file mode 100644 index 0000000000000..a2eef5f5729ba --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-amdgpu/package.nix @@ -0,0 +1,61 @@ +{ + lib, + stdenv, + fetchFromGitLab, + meson, + ninja, + pkg-config, + libdrm, + libgbm, + libGL, + udev, + xorgproto, + xorg-server, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-amdgpu"; + version = "25.0.0"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-amdgpu"; + tag = "xf86-video-amdgpu-${finalAttrs.version}"; + hash = "sha256-7dLoKxBbE98FjADTYjjwj6OafJdecAkOCMRcYUYuYV4="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + + buildInputs = [ + libdrm + libgbm + libGL + udev + xorgproto + xorg-server + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-video-amdgpu-(.*)" ]; }; + }; + + meta = { + description = "Xorg driver for AMD Radeon GPUs using the amdgpu kernel driver"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu"; + license = with lib.licenses; [ + hpndSellVariant + mit + x11 + ]; + maintainers = [ ]; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-dummy/package.nix b/pkgs/by-name/xf/xf86-video-dummy/package.nix new file mode 100644 index 0000000000000..6bf910666a12b --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-dummy/package.nix @@ -0,0 +1,52 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorgproto, + xorg-server, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-dummy"; + version = "0.4.1"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-dummy"; + tag = "xf86-video-dummy-${finalAttrs.version}"; + hash = "sha256-lEqA716pg1mjTLEkHLITXJMZY9Vj8VByEs49ONNxpHs="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorgproto + xorg-server + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-video-dummy-(.*)" ]; }; + }; + + meta = { + description = "Virtual/offscreen frame buffer driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-dummy"; + # dummy driver was imported from XFree86 which was under the x11 license + license = lib.licenses.x11; + maintainers = [ ]; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isDarwin; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-fbdev/package.nix b/pkgs/by-name/xf/xf86-video-fbdev/package.nix new file mode 100644 index 0000000000000..b060c14cabb9e --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-fbdev/package.nix @@ -0,0 +1,52 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorg-server, + xorgproto, + libpciaccess, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-fbdev"; + version = "0.5.1"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-fbdev"; + tag = "xf86-video-fbdev-${finalAttrs.version}"; + hash = "sha256-JlSTosvQCiNeWbveYdj4+Ulgd/guc37xYUMaAhyS7K8="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libpciaccess + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-video-fbdev-(.*)" ]; }; + }; + + meta = { + description = "Framebuffer device video driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev"; + license = lib.licenses.x11; + maintainers = [ ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-intel/package.nix b/pkgs/by-name/xf/xf86-video-intel/package.nix new file mode 100644 index 0000000000000..27064ca6ea713 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-intel/package.nix @@ -0,0 +1,111 @@ +{ + lib, + stdenv, + fetchFromGitLab, + meson, + ninja, + pkg-config, + dri-pkgconfig-stub, + libdrm, + libpciaccess, + libpng, + libx11, + libxcb, + libxcb-util, + libxcursor, + libxdamage, + libxfixes, + libxinerama, + libxrandr, + libxrender, + libxscrnsaver, + libxshmfence, + libxtst, + libxv, + libxvmc, + libxxf86vm, + pixman, + valgrind, + xorgproto, + xorg-server, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-intel"; + version = "unstable-2025-03-21"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-intel"; + rev = "4a64400ec6a7d8c0aba0e6a39b16a5e86d0af843"; + hash = "sha256-bwyNVHSTnbyxU6059nITk4TNBEly39xPB67gGOPkmYU="; + }; + + patches = [ + # Comment from 037167ae17fefe6b5dc86dc05f0dd168031c3c68: + # + # The i965 driver was removed in Mesa 22, but the xf86videointel driver + # hasn't been updated to reflect this. This leads to the following error + # when used with the affected hardware: + # + # (EE) AIGLX error: dlopen of /run/opengl-driver/lib/dri/i965_dri.so failed + # (/run/opengl-driver/lib/dri/i965_dri.so: cannot open + # shared object file: No such file or directory) + # (EE) AIGLX error: unable to load driver i965 + ./use_crocus_and_iris.patch + ]; + + strictDeps = true; + + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + + buildInputs = [ + dri-pkgconfig-stub + libdrm + libpciaccess + libpng + libx11 + libxcb + libxcb-util + libxcursor + libxdamage + libxfixes + libxinerama + libxrandr + libxrender + libxscrnsaver + libxshmfence + libxtst + libxv + libxvmc + libxxf86vm + pixman + valgrind + xorgproto + xorg-server + ]; + + configureFlags = [ + "--with-default-dri=3" + "--enable-tools" + ]; + + meta = { + description = "Open-source Xorg graphics driver for Intel graphics"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel"; + license = with lib.licenses; [ + mit + hpndSellVariant + ]; + maintainers = [ ]; + platforms = [ + "i686-linux" + "x86_64-linux" + ]; + }; +}) diff --git a/pkgs/servers/x11/xorg/use_crocus_and_iris.patch b/pkgs/by-name/xf/xf86-video-intel/use_crocus_and_iris.patch similarity index 100% rename from pkgs/servers/x11/xorg/use_crocus_and_iris.patch rename to pkgs/by-name/xf/xf86-video-intel/use_crocus_and_iris.patch diff --git a/pkgs/by-name/xf/xf86-video-nv/package.nix b/pkgs/by-name/xf/xf86-video-nv/package.nix new file mode 100644 index 0000000000000..f06b600aab252 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-nv/package.nix @@ -0,0 +1,55 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorgproto, + xorg-server, + libpciaccess, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-nv"; + version = "2.1.23"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-nv"; + tag = "xf86-video-nv-${finalAttrs.version}"; + hash = "sha256-8I7PnxOPXrUv0Ezj1H2qgUQdRDE99znSqUaieP6Pu8s="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libpciaccess + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-video-nv-(.*)" ]; }; + }; + + meta = { + description = "Minimal NVIDIA video driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-nv"; + license = with lib.licenses; [ + mit + hpndSellVariant + ]; + maintainers = [ ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-omap/package.nix b/pkgs/by-name/xf/xf86-video-omap/package.nix new file mode 100644 index 0000000000000..5c501140d302e --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-omap/package.nix @@ -0,0 +1,55 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorg-server, + xorgproto, + libdrm, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-omap"; + version = "0.4.5"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-omap"; + tag = "xf86-video-omap-${finalAttrs.version}"; + hash = "sha256-5IffoBuSqSs0bQVCJHva/465KK0njrJyvG51dZX/rnM="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libdrm + ]; + + env.NIX_CFLAGS_COMPILE = toString [ "-Wno-error=format-overflow" ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-video-omap-(.*)" ]; }; + }; + + meta = { + description = "Open-source X.org graphics driver for TI OMAP graphics"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-omap"; + license = lib.licenses.mit; + maintainers = [ ]; + # libdrm_omap is only available on linux + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-openchrome/package.nix b/pkgs/by-name/xf/xf86-video-openchrome/package.nix new file mode 100644 index 0000000000000..9e227ff23d349 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-openchrome/package.nix @@ -0,0 +1,64 @@ +{ + lib, + stdenv, + fetchgit, + autoreconfHook, + pkg-config, + util-macros, + libdrm, + libpciaccess, + libx11, + libxext, + libxv, + libxvmc, + udev, + xorgproto, + xorg-server, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-openchrome"; + version = "0.6.225"; + + src = fetchgit { + url = "https://anongit.freedesktop.org/git/openchrome/xf86-video-openchrome.git"; + # release is unfortunately not tagged so also no automatic updates + rev = "ab03de703b91c7e0fd3e4d1ca06ad5add7f077a1"; + hash = "sha256-Aa0Mhb6miSakAEZKCZ5/+n9oyCp4y4srq9ljRNqP7F4="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + ]; + + buildInputs = [ + libdrm + libpciaccess + libx11 + libxext + libxv + libxvmc + xorgproto + xorg-server + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + udev + ]; + + meta = { + description = "VIA Technologies UniChrome and Chrome9 IGP video driver for the Xorg X server"; + longDescription = '' + OpenChrome DDX is an open source implementation of X.Org Server DDX (Device Dependent X) + graphics device driver for VIA Technologies UniChrome and Chrome9 IGPs. (Integrated Graphics + Processor) OpenChrome DDX handles only 2D and video acceleration. + ''; + homepage = "http://www.freedesktop.org/wiki/Openchrome"; + license = lib.licenses.mit; + maintainers = [ ]; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isAarch64; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-savage/package.nix b/pkgs/by-name/xf/xf86-video-savage/package.nix new file mode 100644 index 0000000000000..de223b0f77af5 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-savage/package.nix @@ -0,0 +1,57 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorg-server, + xorgproto, + libpciaccess, + libdrm, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-savage"; + version = "2.4.1"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-savage"; + tag = "xf86-video-savage-${finalAttrs.version}"; + hash = "sha256-MimTtOPSVQ0uEREYNJDqwDOF2RaNxv/pWmhxcqVfSqA="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libdrm + libpciaccess + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xf86-video-savage-(.*)" ]; }; + }; + + meta = { + description = "S3 Savage video driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-savage"; + license = with lib.licenses; [ + x11 + mit + ]; + maintainers = [ ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-siliconmotion/package.nix b/pkgs/by-name/xf/xf86-video-siliconmotion/package.nix new file mode 100644 index 0000000000000..ad3a3ac6d1696 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-siliconmotion/package.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorg-server, + xorgproto, + libpciaccess, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-siliconmotion"; + version = "1.7.10"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-siliconmotion"; + tag = "xf86-video-siliconmotion-${finalAttrs.version}"; + hash = "sha256-CRuzdxlES6TFMDGIKk5sBAXF2Pa781jmTzlVT+A2Muk="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libpciaccess + ]; + + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=xf86-video-siliconmotion-(.*)" ]; + }; + + meta = { + description = "Silicon Motion video driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-siliconmotion"; + license = with lib.licenses; [ + x11 + mit + ]; + maintainers = [ ]; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isAarch64; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-trident/package.nix b/pkgs/by-name/xf/xf86-video-trident/package.nix new file mode 100644 index 0000000000000..6b1c6ea283175 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-trident/package.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorg-server, + xorgproto, + libpciaccess, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-trident"; + version = "1.4.0"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-trident"; + tag = "xf86-video-trident-${finalAttrs.version}"; + hash = "sha256-xTBktn813s8Dy3gPScEHVlWMzSRx7oIymbFUpkvYAhE="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libpciaccess + ]; + + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=xf86-video-trident-(.*)" ]; + }; + + meta = { + description = "Trident video driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-trident"; + license = with lib.licenses; [ + hpndSellVariant + mit + ]; + maintainers = [ ]; + platforms = lib.platforms.unix; + badPlatforms = lib.platforms.aarch64; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-vmware/package.nix b/pkgs/by-name/xf/xf86-video-vmware/package.nix new file mode 100644 index 0000000000000..1cb6008d1eb39 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-vmware/package.nix @@ -0,0 +1,65 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorg-server, + xorgproto, + libdrm, + libpciaccess, + libx11, + libxext, + udev, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-vmware"; + version = "13.4.0"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-vmware"; + tag = "xf86-video-vmware-${finalAttrs.version}"; + hash = "sha256-aC/LsAvrVtG+2SrMaB7ROJTUIleZTcLydmt5cQf0dHc="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libdrm + libpciaccess + libx11 + libxext + udev + ]; + + env.NIX_CFLAGS_COMPILE = "-Wno-error=address"; # gcc12 + + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=xf86-video-vmware-(.*)" ]; + }; + + meta = { + description = "VMware guest video driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-vmware"; + license = with lib.licenses; [ + x11 + mit + ]; + maintainers = [ ]; + platforms = lib.intersectLists lib.platforms.linux lib.platforms.x86; + }; +}) diff --git a/pkgs/by-name/xf/xf86-video-voodoo/package.nix b/pkgs/by-name/xf/xf86-video-voodoo/package.nix new file mode 100644 index 0000000000000..3b067f3ec2276 --- /dev/null +++ b/pkgs/by-name/xf/xf86-video-voodoo/package.nix @@ -0,0 +1,57 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorg-server, + xorgproto, + libpciaccess, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xf86-video-voodoo"; + version = "1.2.6"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "driver"; + repo = "xf86-video-voodoo"; + tag = "xf86-video-voodoo-${finalAttrs.version}"; + hash = "sha256-OuKGgrdGIIUF6CHD1BwO7ZQgvcbhGHQETExv+Ra0X2E="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + xorg-server # for some autoconf macros + ]; + + buildInputs = [ + xorg-server + xorgproto + libpciaccess + ]; + + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=xf86-video-voodoo-(.*)" ]; + }; + + meta = { + description = "Voodoo video driver for the Xorg X server"; + homepage = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo"; + license = with lib.licenses; [ + # "Relicensed from GPL to the X license by consent of the author" + x11 + hpndSellVariantSafetyClause + mit + ]; + maintainers = [ ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xi/xinit/package.nix b/pkgs/by-name/xi/xinit/package.nix new file mode 100644 index 0000000000000..cd1b7eb260091 --- /dev/null +++ b/pkgs/by-name/xi/xinit/package.nix @@ -0,0 +1,85 @@ +{ + lib, + stdenv, + fetchFromGitLab, + buildPackages, + autoreconfHook, + pkg-config, + util-macros, + darwin, + libx11, + xorgproto, + xauth, + xorg-server, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xinit"; + version = "1.4.4"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "app"; + repo = "xinit"; + tag = "xinit-${finalAttrs.version}"; + hash = "sha256-1GL0xJ/l9BnhoUyD5m1Ch86hjcRdBnys366qM4Lj84U="; + }; + + strictDeps = true; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + darwin.bootstrap_cmds + ]; + + buildInputs = [ + libx11 + xorgproto + ]; + + propagatedBuildInputs = [ + xauth + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + libx11 + xorgproto + ]; + + configureFlags = [ + "--with-xserver=${xorg-server.out}/bin/X" + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + "--with-bundle-id-prefix=org.nixos.xquartz" + "--with-launchdaemons-dir=${placeholder "out"}/LaunchDaemons" + "--with-launchagents-dir=${placeholder "out"}/LaunchAgents" + ]; + + postFixup = '' + substituteInPlace $out/bin/startx \ + --replace-fail '"''${prefix}/etc/X11/xinit/xinitrc"' '/etc/X11/xinit/xinitrc' \ + --replace-fail '"$xinitdir/xserverrc"' '/etc/X11/xinit/xserverrc' + ''; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xinit-(.*)" ]; }; + }; + + meta = { + description = "X server & client startup utilities (includes startx)"; + homepage = "https://gitlab.freedesktop.org/xorg/app/xinit"; + license = with lib.licenses; [ + mitOpenGroup + x11 + ]; + mainProgram = "xinit"; + maintainers = [ ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xi/xinput/package.nix b/pkgs/by-name/xi/xinput/package.nix new file mode 100644 index 0000000000000..e382442bdd42c --- /dev/null +++ b/pkgs/by-name/xi/xinput/package.nix @@ -0,0 +1,61 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + xorgproto, + libx11, + libxext, + libxi, + libxinerama, + libxrandr, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xinput"; + version = "1.6.4"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "app"; + repo = "xinput"; + tag = "xinput-${finalAttrs.version}"; + hash = "sha256-EsSytLzwAHMwseW4pD/c+/J1MaCWPsE7RPoMIwT96yk="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + ]; + + buildInputs = [ + xorgproto + libx11 + libxext + libxi + libxinerama + libxrandr + ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xinput-(.*)" ]; }; + }; + + meta = { + description = "Utility to configure and test XInput devices"; + homepage = "https://gitlab.freedesktop.org/xorg/app/xinput"; + license = with lib.licenses; [ + hpndSellVariant + mit + ]; + mainProgram = "xinput"; + maintainers = [ ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xk/xkbcomp/package.nix b/pkgs/by-name/xk/xkbcomp/package.nix new file mode 100644 index 0000000000000..24cf1311e7b11 --- /dev/null +++ b/pkgs/by-name/xk/xkbcomp/package.nix @@ -0,0 +1,65 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + bison, + libx11, + libxkbfile, + xorgproto, + xkeyboard-config, + nix-update-script, + testers, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xkbcomp"; + version = "1.5.0"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "app"; + repo = "xkbcomp"; + tag = "xkbcomp-${finalAttrs.version}"; + hash = "sha256-nkyBjIOX9Qr0K+R0JcvJ7egI0a8Zh/tyhZvG7E+VlZU="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + bison + ]; + + buildInputs = [ + util-macros # unused dependency but the build fails if pkg-config can't find it + libx11 + libxkbfile + xorgproto + ]; + + configureFlags = [ "--with-xkb-config-root=${xkeyboard-config}/share/X11/xkb" ]; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version-regex=xkbcomp-(.*)" ]; }; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + }; + + meta = { + description = "XKB keyboard description compiler"; + homepage = "https://gitlab.freedesktop.org/xorg/app/xkbcomp"; + license = with lib.licenses; [ + hpnd + mitOpenGroup + hpndDec + ]; + mainProgram = "xkbcomp"; + maintainers = [ ]; + pkgConfigModules = [ "xkbcomp" ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xk/xkeyboard-config/custom.nix b/pkgs/by-name/xk/xkeyboard-config/custom.nix new file mode 100644 index 0000000000000..374112f51b084 --- /dev/null +++ b/pkgs/by-name/xk/xkeyboard-config/custom.nix @@ -0,0 +1,64 @@ +# xkeyboardconfig variant extensible with custom layouts. +# See nixos/modules/services/x11/extra-layouts.nix +{ + lib, + xkeyboard-config, + automake, + ed, +}: +{ + layouts ? { }, +}: +let + patchIn = name: layout: '' + # install layout files + ${lib.optionalString (layout.compatFile != null) "cp '${layout.compatFile}' 'compat/${name}'"} + ${lib.optionalString (layout.geometryFile != null) "cp '${layout.geometryFile}' 'geometry/${name}'"} + ${lib.optionalString (layout.keycodesFile != null) "cp '${layout.keycodesFile}' 'keycodes/${name}'"} + ${lib.optionalString (layout.symbolsFile != null) "cp '${layout.symbolsFile}' 'symbols/${name}'"} + ${lib.optionalString (layout.typesFile != null) "cp '${layout.typesFile}' 'types/${name}'"} + + # add model description + ${ed}/bin/ed -v rules/base.xml < + - + a + + + ${name} + ${layout.description} + ${layout.description} + + + . + w + EOF + + # add layout description + ed -v rules/base.xml < + - + a + + + ${name} + ${name} + ${layout.description} + + ${lib.concatMapStrings (lang: "${lang}\n") layout.languages} + + + + + . + w + EOF + ''; +in +xkeyboard-config.overrideAttrs (old: { + nativeBuildInputs = old.nativeBuildInputs ++ [ + automake + ed + ]; + postPatch = lib.concatStrings (lib.mapAttrsToList patchIn layouts); +}) diff --git a/pkgs/by-name/xo/xorg-server/package.nix b/pkgs/by-name/xo/xorg-server/package.nix index cc8ac9b2e5489..03119738d6fb6 100644 --- a/pkgs/by-name/xo/xorg-server/package.nix +++ b/pkgs/by-name/xo/xorg-server/package.nix @@ -57,7 +57,7 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "xorg-server"; - version = "21.1.20"; + version = "21.1.21"; outputs = [ "out" @@ -66,7 +66,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://xorg/individual/xserver/xorg-server-${finalAttrs.version}.tar.xz"; - hash = "sha256-dpW8YYJLOoG2utL3iwVADKAVAD3kAtGzIhFxBbcC6Tc="; + hash = "sha256-wMvlVFs/ZFuuYCS4MNHRFUqVY1BoOk5Ssv/1sPoatRk="; }; patches = lib.optionals stdenv.hostPlatform.isDarwin [ diff --git a/pkgs/by-name/xo/xorgproto/package.nix b/pkgs/by-name/xo/xorgproto/package.nix index a0766a9979a43..f75e6d51e44c6 100644 --- a/pkgs/by-name/xo/xorgproto/package.nix +++ b/pkgs/by-name/xo/xorgproto/package.nix @@ -12,11 +12,11 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "xorgproto"; - version = "2024.1"; + version = "2025.1"; src = fetchurl { url = "mirror://xorg/individual/proto/xorgproto-${finalAttrs.version}.tar.xz"; - hash = "sha256-NyIl/UCBW4QjVH9diQxd68cuiLkQiPv7ExWMIElcy1k="; + hash = "sha256-VomMcWwFeN+KLYKMnD5cUoJ3cFwEhDgagZYP4aZ2aOg="; }; patches = [ diff --git a/pkgs/by-name/xs/xsm/package.nix b/pkgs/by-name/xs/xsm/package.nix index a8bc165c4991c..e79b84e9b6f04 100644 --- a/pkgs/by-name/xs/xsm/package.nix +++ b/pkgs/by-name/xs/xsm/package.nix @@ -15,7 +15,7 @@ # run time dependencies iceauth, smproxy, - twm, + tab-window-manager, xterm, }: stdenv.mkDerivation (finalAttrs: { @@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: { lib.makeBinPath [ iceauth smproxy - twm + tab-window-manager xterm ] } diff --git a/pkgs/by-name/xt/xterm/package.nix b/pkgs/by-name/xt/xterm/package.nix index 1503f24327887..bce051e71103d 100644 --- a/pkgs/by-name/xt/xterm/package.nix +++ b/pkgs/by-name/xt/xterm/package.nix @@ -16,14 +16,14 @@ stdenv.mkDerivation rec { pname = "xterm"; - version = "404"; + version = "406"; src = fetchurl { urls = [ "https://invisible-island.net/archives/xterm/${pname}-${version}.tgz" "https://invisible-mirror.net/archives/xterm/${pname}-${version}.tgz" ]; - hash = "sha256-YzMvkhwie6WeWJ+gff2tFZnBCshZ6ibHKsHdSkG1ZaQ="; + hash = "sha256-Bm6y1mQwiX/h2t0nFVTM2uM9d8USEmp1j8TeN7EUh5k="; }; patches = [ ./sixel-256.support.patch ]; diff --git a/pkgs/by-name/xw/xwd/package.nix b/pkgs/by-name/xw/xwd/package.nix new file mode 100644 index 0000000000000..0dc9ed5425adf --- /dev/null +++ b/pkgs/by-name/xw/xwd/package.nix @@ -0,0 +1,53 @@ +{ + lib, + stdenv, + fetchFromGitLab, + autoreconfHook, + pkg-config, + util-macros, + libxkbfile, + libx11, + xorgproto, + nix-update-script, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "xwd"; + version = "1.0.9"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + group = "xorg"; + owner = "app"; + repo = "xwd"; + tag = "xwd-${finalAttrs.version}"; + hash = "sha256-cEKm0c50qwWzGSkH1sdovNfN3dW1hmnaEDwuJKwxGdo="; + }; + + strictDeps = true; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + util-macros + ]; + + buildInputs = [ + libxkbfile + libx11 + xorgproto + ]; + + passthru.updateScript = nix-update-script { extraArgs = [ "--version-regex=xwd-(.*)" ]; }; + + meta = { + description = "Utility to dump an image of an X window in XWD format"; + homepage = "https://gitlab.freedesktop.org/xorg/app/xwd"; + license = with lib.licenses; [ + mitOpenGroup + hpndSellVariant + ]; + mainProgram = "xwd"; + maintainers = [ ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/xx/xxgdb/package.nix b/pkgs/by-name/xx/xxgdb/package.nix deleted file mode 100644 index eac86bab9a540..0000000000000 --- a/pkgs/by-name/xx/xxgdb/package.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - imake, - gccmakedep, - libX11, - libXaw, - libXext, - libXmu, - libXt, -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "xxgdb"; - version = "1.12"; - - src = fetchurl { - url = "http://deb.debian.org/debian/pool/main/x/xxgdb/xxgdb_${finalAttrs.version}.orig.tar.gz"; - sha256 = "0jwazg99wk2l7r390ggw0yr8xipl07bp0qynni141xss530i6d1a"; - }; - - patches = [ - # http://zhu-qy.blogspot.com.es/2012/11/slackware-14-i-still-got-xxgdb-all-ptys.html - ./xxgdb-pty.patch - ]; - - env.NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration -Wno-error=implicit-int"; - - nativeBuildInputs = [ - imake - gccmakedep - ]; - buildInputs = [ - libX11 - libXaw - libXext - libXmu - libXt - ]; - - preConfigure = '' - mkdir build - xmkmf - ''; - - makeFlags = [ - "DESTDIR=build" - ]; - - postInstall = '' - # Fix up install paths - shopt -s globstar - mv build/**/bin $out/bin - - install -D xxgdb.1 $out/share/man/man1/xxgdb.1 - ''; - - meta = { - broken = stdenv.hostPlatform.isDarwin; - description = "Simple but powerful graphical interface to gdb"; - mainProgram = "xxgdb"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ emilytrau ]; - platforms = lib.platforms.all; - }; -}) diff --git a/pkgs/by-name/xx/xxgdb/xxgdb-pty.patch b/pkgs/by-name/xx/xxgdb/xxgdb-pty.patch deleted file mode 100644 index 735bb1b0b5fc8..0000000000000 --- a/pkgs/by-name/xx/xxgdb/xxgdb-pty.patch +++ /dev/null @@ -1,84 +0,0 @@ ---- xxgdb-1.12-org/calldbx.c 2012-10-26 17:17:49.810750909 -0700 -+++ xxgdb-1.12/calldbx.c 2012-10-26 17:53:59.209918816 -0700 -@@ -69,6 +69,12 @@ - * create_io_window(): create an io window for gdb to use - */ - -+#ifdef linux -+#ifndef _GNU_SOURCE -+#define _GNU_SOURCE -+#endif -+#endif -+ - #include - #include - #include -@@ -126,6 +132,13 @@ - { - int master; - -+#ifdef _POSIX_SOURCE -+ if ((master = posix_openpt (O_RDWR|O_NOCTTY)) < 0) { -+ perror("posix_openpt failed:"); -+ } else { -+ return master; -+ } -+#else - #ifdef SVR4 /* (MJH) Use STREAMS */ - - if((master = open(MASTER_CLONE, O_RDWR)) < 0) -@@ -152,6 +165,7 @@ - } - #endif - #endif /* SVR4 */ -+#endif /* _POSIX_SOURCE */ - - #ifdef GDB - fprintf(stderr, "xxgdb: all ptys in use\n"); -@@ -167,7 +181,28 @@ - { - int slave; - --#ifdef SVR4 /* (MJH) */ -+#ifdef _POSIX_SOURCE -+ char *slave_name = ptsname (master); -+ if (slave_name == NULL) { -+ perror ("Pseudo-tty slave"); -+ exit (2); -+ } // end if -+ if (grantpt (master) < 0) { -+ perror ("grantpt error"); -+ exit (3); -+ } -+ if (unlockpt (master) < 0) { -+ perror ("unlockpt error"); -+ exit (4); -+ } -+ if ((slave = open (slave_name, O_RDWR)) < 0) { -+ perror (slave_name); -+ exit (5); -+ } // end if -+ return slave; -+#else -+#ifdef SVR4 -+ /* (MJH) */ - char *slave_name = "unknown"; - extern char *ptsname(int master); - void (*handler)(); -@@ -194,6 +229,7 @@ - } - return slave; - #endif /* SVR4 */ -+#endif /* _POSIX_SOURCE */ - } - - #ifdef CREATE_IO_WINDOW -@@ -230,7 +266,7 @@ - { - /* child */ - /* printf("xterm xterm -l -e xxgdbiowin\n");*/ -- if (execlp("xterm", "xterm", "-e", "xxgdbiowin", 0)) -+ if (execlp("xterm", "xterm", "-e", "xxgdbiowin", NULL)) - { - printf("exec of 'xterm -e xxgdbiowin' fails\n"); - unlink("/tmp/iowindowtty"); diff --git a/pkgs/by-name/zi/zint-qt/fix-installation-of-cmake-files.patch b/pkgs/by-name/zi/zint-qt/fix-installation-of-cmake-files.patch deleted file mode 100644 index 7bbe0b23508c6..0000000000000 --- a/pkgs/by-name/zi/zint-qt/fix-installation-of-cmake-files.patch +++ /dev/null @@ -1,39 +0,0 @@ -From ba86d5d0826d221075329aaf67f1f4f8f868550f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= -Date: Fri, 11 Apr 2025 03:24:38 +0200 -Subject: [PATCH] Fix installation of cmake files - -When binaries, libs and development files like include or cmake files -are installed to different target directories then those where before -relatively installed to the binary and not in the correct directory -where other development related files where installed. - -Tested inside of nixpkgs with zxing using the system library of zint. ---- - CMakeLists.txt | 2 +- - backend/CMakeLists.txt | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 6f7cf220..ecfe53c3 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -201,4 +201,4 @@ if(ZINT_UNINSTALL) - endif() - - configure_file("zint-config.cmake.in" "zint-config.cmake" @ONLY) --install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zint-config.cmake" DESTINATION "${CMAKE_INSTALL_DATADIR}/zint") -+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zint-config.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/zint") -diff --git a/backend/CMakeLists.txt b/backend/CMakeLists.txt -index 45538515..1e7e40b3 100644 ---- a/backend/CMakeLists.txt -+++ b/backend/CMakeLists.txt -@@ -131,7 +131,7 @@ endif() - if(ZINT_STATIC) - install(TARGETS zint-static EXPORT zint-targets ${INSTALL_TARGETS_DEFAULT_ARGS}) - endif() --install(EXPORT zint-targets NAMESPACE zint:: DESTINATION "${CMAKE_INSTALL_DATADIR}/zint") -+install(EXPORT zint-targets NAMESPACE zint:: DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/zint") - install(FILES zint.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Devel) - - if(ZINT_TEST) diff --git a/pkgs/by-name/zi/zint-qt/package.nix b/pkgs/by-name/zi/zint-qt/package.nix index d9f17db0293b6..f3fa6fceaacd7 100644 --- a/pkgs/by-name/zi/zint-qt/package.nix +++ b/pkgs/by-name/zi/zint-qt/package.nix @@ -12,7 +12,7 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "zint${lib.optionalString withGUI "-qt"}"; - version = "2.15.0"; + version = "2.16.0"; outputs = [ "out" @@ -24,15 +24,9 @@ stdenv.mkDerivation (finalAttrs: { owner = "zint"; repo = "zint"; tag = finalAttrs.version; - hash = "sha256-+dXIU66HIS2mE0pa99UemMMFBGCYjupUX8P7q3G7Nis="; + hash = "sha256-5zVGtnm6QdehDL+R7ZNq7AdgUIOIySPWGlS6GbJK+/4="; }; - patches = [ - # Fix cmake file installation - # https://github.com/zint/zint/pull/8 - ./fix-installation-of-cmake-files.patch - ]; - nativeBuildInputs = [ cmake ninja diff --git a/pkgs/by-name/zl/zlib-ng/package.nix b/pkgs/by-name/zl/zlib-ng/package.nix index 479c6cad4b98b..0a8e4257d4884 100644 --- a/pkgs/by-name/zl/zlib-ng/package.nix +++ b/pkgs/by-name/zl/zlib-ng/package.nix @@ -10,19 +10,18 @@ stdenv.mkDerivation rec { pname = "zlib-ng"; - version = "2.2.5"; + version = "2.3.2"; src = fetchFromGitHub { owner = "zlib-ng"; repo = "zlib-ng"; rev = version; - hash = "sha256-c2RYqHi3hj/ViBzJcYWoNib27GAbq/B1SJUfvG7CPG4="; + hash = "sha256-lO6fO18Z74+wKF0O/JjfrhS8lyaNQ37eamWGThb39F8="; }; outputs = [ "out" "dev" - "bin" ]; strictDeps = true; @@ -43,7 +42,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DCMAKE_INSTALL_PREFIX=/" "-DBUILD_SHARED_LIBS=ON" - "-DINSTALL_UTILS=ON" + "-DINSTALL_UTILS=OFF" ] ++ lib.optionals withZlibCompat [ "-DZLIB_COMPAT=ON" ] ++ lib.optional ( diff --git a/pkgs/data/misc/hackage/pin.json b/pkgs/data/misc/hackage/pin.json index 7d7302bc143bd..ea775ba9d60a9 100644 --- a/pkgs/data/misc/hackage/pin.json +++ b/pkgs/data/misc/hackage/pin.json @@ -1,6 +1,6 @@ { - "commit": "24e42920d74ce9ac5c0c05264079d55cec49e82b", - "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/24e42920d74ce9ac5c0c05264079d55cec49e82b.tar.gz", - "sha256": "1kmf1wg09gsw06525mc0y91x9jy81amhd1sd3b7gl1swnj3dzqqf", - "msg": "Update from Hackage at 2025-11-24T11:39:51Z" + "commit": "d1602cb2b331058fcfa5580f16159e47325bcd1a", + "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/d1602cb2b331058fcfa5580f16159e47325bcd1a.tar.gz", + "sha256": "134qhqlxfkv0vs58pzkll1cbqci8npr42yh0x1gmd0s8y00crqa4", + "msg": "Update from Hackage at 2025-12-30T09:01:27Z" } diff --git a/pkgs/development/compilers/gcc/common/dependencies.nix b/pkgs/development/compilers/gcc/common/dependencies.nix index 7438cb64f8eaa..c9e85c0d99fb5 100644 --- a/pkgs/development/compilers/gcc/common/dependencies.nix +++ b/pkgs/development/compilers/gcc/common/dependencies.nix @@ -7,6 +7,7 @@ texinfo, which, gettext, + autoconf269, gnused, patchelf, gmp, @@ -41,6 +42,7 @@ in texinfo which gettext + autoconf269 ] ++ optionals (perl != null) [ perl ] ++ optionals (with stdenv.targetPlatform; isVc4 || isRedox || isSnapshot && flex != null) [ flex ] diff --git a/pkgs/development/compilers/gcc/common/pre-configure.nix b/pkgs/development/compilers/gcc/common/pre-configure.nix index d04aadd8729d0..806cbfc5b1154 100644 --- a/pkgs/development/compilers/gcc/common/pre-configure.nix +++ b/pkgs/development/compilers/gcc/common/pre-configure.nix @@ -80,6 +80,19 @@ lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) '' export inhibit_libc=true '' +# We need to reconfigure the build system in case it has been patched. Since +# gcc is patched quite often, reconfiguring it unconditionally makes sense. +# This is also good practice for a couple other reasons. +# See . ++ '' + for i in */configure.ac; do + pushd "$(dirname "$i")" + echo "Running autoreconf in $PWD" + autoconf -f + popd + done +'' + + lib.optionalString ( (!lib.systems.equals targetPlatform hostPlatform) && withoutTargetLibc && enableShared ) (import ./libgcc-buildstuff.nix { inherit lib stdenv; }) diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index 7f5ba5aa8bf19..f7a19a73673b8 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -30,6 +30,7 @@ which, patchelf, binutils, + autoconf269, isl ? null, # optional, for the Graphite optimization framework. zlib ? null, libucontext ? null, @@ -131,6 +132,7 @@ let # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc${majorVersion}.cc.override)" | jq '.[]' --raw-output' inherit apple-sdk + autoconf269 binutils buildPackages cargo diff --git a/pkgs/development/compilers/gcc/ng/default.nix b/pkgs/development/compilers/gcc/ng/default.nix index a205ab6a055a9..c849367aa1fcf 100644 --- a/pkgs/development/compilers/gcc/ng/default.nix +++ b/pkgs/development/compilers/gcc/ng/default.nix @@ -14,7 +14,7 @@ }@packageSetArgs: let versions = { - "15.1.0".officialRelease.sha256 = "sha256-4rCewhZg8B/s/7cV4BICZSFpQ/A40OSKmGhxPlTwbOo="; + "15.2.0".officialRelease.sha256 = "sha256-Q4/ZloJrDIJIWinaA6ctcdbjVBqD7HAt9Ccfb+Al0k4="; } // gccVersions; diff --git a/pkgs/development/compilers/gcc/patches/13/libsanitizer-fix-with-glibc-2.42.patch b/pkgs/development/compilers/gcc/patches/13/libsanitizer-fix-with-glibc-2.42.patch new file mode 100644 index 0000000000000..43451c18dde76 --- /dev/null +++ b/pkgs/development/compilers/gcc/patches/13/libsanitizer-fix-with-glibc-2.42.patch @@ -0,0 +1,74 @@ +From 1789c57dc97ea2f9819ef89e28bf17208b6208e7 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Fri, 2 May 2025 17:41:43 +0200 +Subject: [PATCH] libsanitizer: Fix build with glibc 2.42 + +The termio structure will be removed from glibc 2.42. It has +been deprecated since the late 80s/early 90s. + +Cherry-picked from LLVM commit 59978b21ad9c65276ee8e14f26759691b8a65763 +("[sanitizer_common] Remove interceptors for deprecated struct termio +(#137403)"). + +Co-Authored-By: Tom Stellard + +libsanitizer/ + + * sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry + picked from LLVM commit 59978b21ad9c65276ee8e14f26759691b8a65763. + * sanitizer_common/sanitizer_platform_limits_posix.cpp: Likewise. + * sanitizer_common/sanitizer_platform_limits_posix.h: Likewise. +--- + .../sanitizer_common_interceptors_ioctl.inc | 8 -------- + .../sanitizer_common/sanitizer_platform_limits_posix.cpp | 3 --- + .../sanitizer_common/sanitizer_platform_limits_posix.h | 1 - + 3 files changed, 12 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +index 49ec4097c900b..dda11daa77f49 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc ++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +@@ -338,17 +338,9 @@ static void ioctl_table_fill() { + _(SOUND_PCM_WRITE_CHANNELS, WRITE, sizeof(int)); + _(SOUND_PCM_WRITE_FILTER, WRITE, sizeof(int)); + _(TCFLSH, NONE, 0); +-#if SANITIZER_GLIBC +- _(TCGETA, WRITE, struct_termio_sz); +-#endif + _(TCGETS, WRITE, struct_termios_sz); + _(TCSBRK, NONE, 0); + _(TCSBRKP, NONE, 0); +-#if SANITIZER_GLIBC +- _(TCSETA, READ, struct_termio_sz); +- _(TCSETAF, READ, struct_termio_sz); +- _(TCSETAW, READ, struct_termio_sz); +-#endif + _(TCSETS, READ, struct_termios_sz); + _(TCSETSF, READ, struct_termios_sz); + _(TCSETSW, READ, struct_termios_sz); +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index c87d5ef42c924..7bbc6f2edac2e 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -485,9 +485,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + unsigned struct_input_id_sz = sizeof(struct input_id); + unsigned struct_mtpos_sz = sizeof(struct mtpos); + unsigned struct_rtentry_sz = sizeof(struct rtentry); +-#if SANITIZER_GLIBC || SANITIZER_ANDROID +- unsigned struct_termio_sz = sizeof(struct termio); +-#endif + unsigned struct_vt_consize_sz = sizeof(struct vt_consize); + unsigned struct_vt_sizes_sz = sizeof(struct vt_sizes); + unsigned struct_vt_stat_sz = sizeof(struct vt_stat); +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index c07f7cd0b0d08..a80df656826ee 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -1029,7 +1029,6 @@ extern unsigned struct_hd_geometry_sz; + extern unsigned struct_input_absinfo_sz; + extern unsigned struct_input_id_sz; + extern unsigned struct_mtpos_sz; +-extern unsigned struct_termio_sz; + extern unsigned struct_vt_consize_sz; + extern unsigned struct_vt_sizes_sz; + extern unsigned struct_vt_stat_sz; diff --git a/pkgs/development/compilers/gcc/patches/default.nix b/pkgs/development/compilers/gcc/patches/default.nix index 84bdf1d936840..92369c5d0c609 100644 --- a/pkgs/development/compilers/gcc/patches/default.nix +++ b/pkgs/development/compilers/gcc/patches/default.nix @@ -72,10 +72,12 @@ optionals noSysDirs ( "14" = [ ./13/no-sys-dirs-riscv.patch ./13/mangle-NIX_STORE-in-__FILE__.patch + ./13/libsanitizer-fix-with-glibc-2.42.patch ]; "13" = [ ./13/no-sys-dirs-riscv.patch ./13/mangle-NIX_STORE-in-__FILE__.patch + ./13/libsanitizer-fix-with-glibc-2.42.patch ]; } ."${majorVersion}" or [ ] diff --git a/pkgs/development/compilers/ghc/common-hadrian.nix b/pkgs/development/compilers/ghc/common-hadrian.nix index e9c5a1e6bfecc..669e4841618a0 100644 --- a/pkgs/development/compilers/ghc/common-hadrian.nix +++ b/pkgs/development/compilers/ghc/common-hadrian.nix @@ -246,6 +246,35 @@ hash = "sha256-L3FQvcm9QB59BOiR2g5/HACAufIG08HiT53EIOjj64g="; }) ] + ++ lib.optionals (lib.versionOlder version "9.12.1") [ + (fetchpatch { + name = "ghc-ppc-support-elf-v2-on-powerpc64-big-endian.patch"; + url = "https://gitlab.haskell.org/ghc/ghc/-/commit/ead75532c9dc915bfa9ebaef0ef5d148e793cc0a.patch"; + # ghc-platform was split out of ghc-boot in ddcdd88c2c95445a87ee028f215d1e876939a4d9 + postFetch = lib.optionalString (lib.versionOlder version "9.10.1") '' + substituteInPlace $out \ + --replace-fail 'libraries/ghc-platform/src/GHC' 'libraries/ghc-boot/GHC' + ''; + hash = + if lib.versionOlder version "9.10.1" then + "sha256-5SVSW1aYoItqHli5QjnudH4zGporYNLDeEo4gZksBZw=" + else + "sha256-vtjT+TL/7sYPu4rcVV3xCqJQ+uqkyBbf9l0KIi97j/0="; + }) + ] + ++ + lib.optionals + ( + (lib.versions.majorMinor version == "9.12" && lib.versionOlder version "9.12.3") + || (lib.versions.majorMinor version != "9.12" && lib.versionOlder version "9.14.1") + ) + [ + (fetchpatch { + name = "ghc-rts-Fix-compile-on-powerpc64-elf-v1.patch"; + url = "https://gitlab.haskell.org/ghc/ghc/-/commit/05e5785a3157c71e327a8e9bdc80fa7082918739.patch"; + hash = "sha256-xP5v3cKhXeTRSFvRiKEn9hPxGXgVgykjTILKjh/pdDU="; + }) + ] # Fix build with gcc15 # https://gitlab.haskell.org/ghc/ghc/-/issues/25662 # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13863 @@ -342,6 +371,10 @@ let ] ++ lib.optionals targetPlatform.useAndroidPrebuilt [ "*.*.ghc.c.opts += -optc-std=gnu99" + ] + # Inform GHC that we can't load dynamic libraries which forces iserv-proxy to load static libraries. + ++ lib.optionals targetPlatform.isStatic [ + "*.ghc.cabal.configure.opts += --flags=-dynamic-system-linker" ]; # Splicer will pull out correct variations diff --git a/pkgs/development/compilers/go/1.24.nix b/pkgs/development/compilers/go/1.24.nix index 33e675a90a4de..8de4b3ce48aef 100644 --- a/pkgs/development/compilers/go/1.24.nix +++ b/pkgs/development/compilers/go/1.24.nix @@ -64,35 +64,38 @@ stdenv.mkDerivation (finalAttrs: { ./go-env-go_ldso.patch ]; - inherit (stdenv.targetPlatform.go) GOOS GOARCH GOARM; - # GOHOSTOS/GOHOSTARCH must match the building system, not the host system. - # Go will nevertheless build a for host system that we will copy over in - # the install phase. - GOHOSTOS = stdenv.buildPlatform.go.GOOS; - GOHOSTARCH = stdenv.buildPlatform.go.GOARCH; - - # {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those - # to be different from CC/CXX - CC_FOR_TARGET = if isCross then "${targetCC}/bin/${targetCC.targetPrefix}cc" else null; - CXX_FOR_TARGET = if isCross then "${targetCC}/bin/${targetCC.targetPrefix}c++" else null; - - GO386 = "softfloat"; # from Arch: don't assume sse2 on i686 - # Wasi does not support CGO - # ppc64/linux CGO is incomplete/borked, and will likely not receive any further improvements - # https://github.com/golang/go/issues/8912 - # https://github.com/golang/go/issues/13192 - CGO_ENABLED = - if - ( - stdenv.targetPlatform.isWasi - || (stdenv.targetPlatform.isPower64 && stdenv.targetPlatform.isBigEndian) - ) - then - 0 - else - 1; - - GOROOT_BOOTSTRAP = "${goBootstrap}/share/go"; + env = { + inherit (stdenv.targetPlatform.go) GOOS GOARCH GOARM; + # GOHOSTOS/GOHOSTARCH must match the building system, not the host system. + # Go will nevertheless build a for host system that we will copy over in + # the install phase. + GOHOSTOS = stdenv.buildPlatform.go.GOOS; + GOHOSTARCH = stdenv.buildPlatform.go.GOARCH; + + GO386 = "softfloat"; # from Arch: don't assume sse2 on i686 + # Wasi does not support CGO + # ppc64/linux CGO is incomplete/borked, and will likely not receive any further improvements + # https://github.com/golang/go/issues/8912 + # https://github.com/golang/go/issues/13192 + CGO_ENABLED = + if + ( + stdenv.targetPlatform.isWasi + || (stdenv.targetPlatform.isPower64 && stdenv.targetPlatform.isBigEndian) + ) + then + 0 + else + 1; + + GOROOT_BOOTSTRAP = "${goBootstrap}/share/go"; + } + // lib.optionalAttrs isCross { + # {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those + # to be different from CC/CXX + CC_FOR_TARGET = "${targetCC}/bin/${targetCC.targetPrefix}cc"; + CXX_FOR_TARGET = "${targetCC}/bin/${targetCC.targetPrefix}c++"; + }; buildPhase = '' runHook preBuild @@ -112,7 +115,7 @@ stdenv.mkDerivation (finalAttrs: { # interpreter for cross # When CGO is not supported we rely on static binaries being built # since they don't need an ELF interpreter - export GO_EXTLINK_ENABLED=${toString finalAttrs.CGO_ENABLED} + export GO_EXTLINK_ENABLED=${toString finalAttrs.env.CGO_ENABLED} ''} ulimit -a @@ -133,9 +136,13 @@ stdenv.mkDerivation (finalAttrs: { mv bin/*_*/* bin rmdir bin/*_* ${lib.optionalString - (!(finalAttrs.GOHOSTARCH == finalAttrs.GOARCH && finalAttrs.GOOS == finalAttrs.GOHOSTOS)) + ( + !( + finalAttrs.env.GOHOSTARCH == finalAttrs.env.GOARCH && finalAttrs.env.GOOS == finalAttrs.env.GOHOSTOS + ) + ) '' - rm -rf pkg/${finalAttrs.GOHOSTOS}_${finalAttrs.GOHOSTARCH} pkg/tool/${finalAttrs.GOHOSTOS}_${finalAttrs.GOHOSTARCH} + rm -rf pkg/${finalAttrs.env.GOHOSTOS}_${finalAttrs.env.GOHOSTARCH} pkg/tool/${finalAttrs.env.GOHOSTOS}_${finalAttrs.env.GOHOSTARCH} '' } '' @@ -143,9 +150,13 @@ stdenv.mkDerivation (finalAttrs: { lib.optionalString (stdenv.hostPlatform.system != stdenv.targetPlatform.system) '' rm -rf bin/*_* ${lib.optionalString - (!(finalAttrs.GOHOSTARCH == finalAttrs.GOARCH && finalAttrs.GOOS == finalAttrs.GOHOSTOS)) + ( + !( + finalAttrs.env.GOHOSTARCH == finalAttrs.env.GOARCH && finalAttrs.env.GOOS == finalAttrs.env.GOHOSTOS + ) + ) '' - rm -rf pkg/${finalAttrs.GOOS}_${finalAttrs.GOARCH} pkg/tool/${finalAttrs.GOOS}_${finalAttrs.GOARCH} + rm -rf pkg/${finalAttrs.env.GOOS}_${finalAttrs.env.GOARCH} pkg/tool/${finalAttrs.env.GOOS}_${finalAttrs.env.GOARCH} '' } '' @@ -170,6 +181,8 @@ stdenv.mkDerivation (finalAttrs: { }; }; + __structuredAttrs = true; + meta = { changelog = "https://go.dev/doc/devel/release#go${lib.versions.majorMinor finalAttrs.version}"; description = "Go Programming language"; diff --git a/pkgs/development/compilers/go/1.25.nix b/pkgs/development/compilers/go/1.25.nix index acc8569de85c7..b961310629b29 100644 --- a/pkgs/development/compilers/go/1.25.nix +++ b/pkgs/development/compilers/go/1.25.nix @@ -65,35 +65,38 @@ stdenv.mkDerivation (finalAttrs: { ./go-env-go_ldso.patch ]; - inherit (stdenv.targetPlatform.go) GOOS GOARCH GOARM; - # GOHOSTOS/GOHOSTARCH must match the building system, not the host system. - # Go will nevertheless build a for host system that we will copy over in - # the install phase. - GOHOSTOS = stdenv.buildPlatform.go.GOOS; - GOHOSTARCH = stdenv.buildPlatform.go.GOARCH; - - # {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those - # to be different from CC/CXX - CC_FOR_TARGET = if isCross then "${targetCC}/bin/${targetCC.targetPrefix}cc" else null; - CXX_FOR_TARGET = if isCross then "${targetCC}/bin/${targetCC.targetPrefix}c++" else null; - - GO386 = "softfloat"; # from Arch: don't assume sse2 on i686 - # Wasi does not support CGO - # ppc64/linux CGO is incomplete/borked, and will likely not receive any further improvements - # https://github.com/golang/go/issues/8912 - # https://github.com/golang/go/issues/13192 - CGO_ENABLED = - if - ( - stdenv.targetPlatform.isWasi - || (stdenv.targetPlatform.isPower64 && stdenv.targetPlatform.isBigEndian) - ) - then - 0 - else - 1; - - GOROOT_BOOTSTRAP = "${goBootstrap}/share/go"; + env = { + inherit (stdenv.targetPlatform.go) GOOS GOARCH GOARM; + # GOHOSTOS/GOHOSTARCH must match the building system, not the host system. + # Go will nevertheless build a for host system that we will copy over in + # the install phase. + GOHOSTOS = stdenv.buildPlatform.go.GOOS; + GOHOSTARCH = stdenv.buildPlatform.go.GOARCH; + + GO386 = "softfloat"; # from Arch: don't assume sse2 on i686 + # Wasi does not support CGO + # ppc64/linux CGO is incomplete/borked, and will likely not receive any further improvements + # https://github.com/golang/go/issues/8912 + # https://github.com/golang/go/issues/13192 + CGO_ENABLED = + if + ( + stdenv.targetPlatform.isWasi + || (stdenv.targetPlatform.isPower64 && stdenv.targetPlatform.isBigEndian) + ) + then + 0 + else + 1; + + GOROOT_BOOTSTRAP = "${goBootstrap}/share/go"; + } + // lib.optionalAttrs isCross { + # {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those + # to be different from CC/CXX + CC_FOR_TARGET = "${targetCC}/bin/${targetCC.targetPrefix}cc"; + CXX_FOR_TARGET = "${targetCC}/bin/${targetCC.targetPrefix}c++"; + }; buildPhase = '' runHook preBuild @@ -113,7 +116,7 @@ stdenv.mkDerivation (finalAttrs: { # interpreter for cross # When CGO is not supported we rely on static binaries being built # since they don't need an ELF interpreter - export GO_EXTLINK_ENABLED=${toString finalAttrs.CGO_ENABLED} + export GO_EXTLINK_ENABLED=${toString finalAttrs.env.CGO_ENABLED} ''} ulimit -a @@ -134,9 +137,13 @@ stdenv.mkDerivation (finalAttrs: { mv bin/*_*/* bin rmdir bin/*_* ${lib.optionalString - (!(finalAttrs.GOHOSTARCH == finalAttrs.GOARCH && finalAttrs.GOOS == finalAttrs.GOHOSTOS)) + ( + !( + finalAttrs.env.GOHOSTARCH == finalAttrs.env.GOARCH && finalAttrs.env.GOOS == finalAttrs.env.GOHOSTOS + ) + ) '' - rm -rf pkg/${finalAttrs.GOHOSTOS}_${finalAttrs.GOHOSTARCH} pkg/tool/${finalAttrs.GOHOSTOS}_${finalAttrs.GOHOSTARCH} + rm -rf pkg/${finalAttrs.env.GOHOSTOS}_${finalAttrs.env.GOHOSTARCH} pkg/tool/${finalAttrs.env.GOHOSTOS}_${finalAttrs.env.GOHOSTARCH} '' } '' @@ -144,9 +151,13 @@ stdenv.mkDerivation (finalAttrs: { lib.optionalString (stdenv.hostPlatform.system != stdenv.targetPlatform.system) '' rm -rf bin/*_* ${lib.optionalString - (!(finalAttrs.GOHOSTARCH == finalAttrs.GOARCH && finalAttrs.GOOS == finalAttrs.GOHOSTOS)) + ( + !( + finalAttrs.env.GOHOSTARCH == finalAttrs.env.GOARCH && finalAttrs.env.GOOS == finalAttrs.env.GOHOSTOS + ) + ) '' - rm -rf pkg/${finalAttrs.GOOS}_${finalAttrs.GOARCH} pkg/tool/${finalAttrs.GOOS}_${finalAttrs.GOARCH} + rm -rf pkg/${finalAttrs.env.GOOS}_${finalAttrs.env.GOARCH} pkg/tool/${finalAttrs.env.GOOS}_${finalAttrs.env.GOARCH} '' } '' @@ -171,6 +182,8 @@ stdenv.mkDerivation (finalAttrs: { }; }; + __structuredAttrs = true; + meta = { changelog = "https://go.dev/doc/devel/release#go${lib.versions.majorMinor finalAttrs.version}"; description = "Go Programming language"; diff --git a/pkgs/development/compilers/llvm/common/clang-tools/default.nix b/pkgs/development/compilers/llvm/common/clang-tools/default.nix index 7ecf0c5c431de..cae95a4a33ea2 100644 --- a/pkgs/development/compilers/llvm/common/clang-tools/default.nix +++ b/pkgs/development/compilers/llvm/common/clang-tools/default.nix @@ -1,6 +1,8 @@ { lib, stdenv, + runCommand, + writeText, clang-unwrapped, clang, libcxxClang, @@ -10,9 +12,7 @@ enableLibcxx ? false, }: -stdenv.mkDerivation { - unwrapped = clang-unwrapped; - +stdenv.mkDerivation (finalAttrs: { pname = "clang-tools"; version = lib.getVersion clang-unwrapped; dontUnpack = true; @@ -23,37 +23,69 @@ stdenv.mkDerivation { mkdir -p $out/bin - for tool in $unwrapped/bin/clang-*; do - tool=$(basename "$tool") - - # Compilers have their own derivation, no need to include them here: - if [[ $tool == "clang-cl" || $tool == "clang-cpp" ]]; then - continue - fi + for toolPath in ${clang-unwrapped}/bin/clangd ${clang-unwrapped}/bin/clang-*; do + toolName=$(basename "$toolPath") - # Clang's derivation produces a lot of binaries, but the tools we are - # interested in follow the `clang-something` naming convention - except - # for clang-$version (e.g. clang-13), which is the compiler again: - if [[ ! $tool =~ ^clang\-[a-zA-Z_\-]+$ ]]; then + # Compilers have their own derivations, no need to include them here + if [[ $toolName == "clang-cl" || $toolName == "clang-cpp" || $toolName =~ ^clang\-[0-9]+$ ]]; then continue fi - ln -s $out/bin/clangd $out/bin/$tool + cp $toolPath $out/bin/$toolName-unwrapped + substituteAll ${./wrapper} $out/bin/$toolName + chmod +x $out/bin/$toolName done - if [[ -z "$(ls -A $out/bin)" ]]; then - echo "Found no binaries - maybe their location or naming convention changed?" - exit 1 - fi - - substituteAll ${./wrapper} $out/bin/clangd - chmod +x $out/bin/clangd + # clangd etc. find standard header files by looking at the directory the + # tool is located in and appending `../lib` to the search path. Since we + # are copying the binaries, they expect to find `$out/lib` present right + # within this derivation, containing `stddef.h` and so on. + # + # Note that using `ln -s` instead of `cp` in the loop above wouldn't avoid + # this problem, since it's `clang-unwrapped` which separates libs into a + # different output in the first place - here we are merely "merging" the + # directories back together, as expected by the tools. + ln -s ${clang-unwrapped.lib}/lib $out/lib runHook postInstall ''; + passthru.tests.smokeOk = + let + src = writeText "main.cpp" '' + #include + + int main() { + std::cout << "Hi!"; + } + ''; + + in + runCommand "clang-tools-test-smoke-ok" { } '' + ${finalAttrs.finalPackage}/bin/clangd --check=${src} + touch $out + ''; + + passthru.tests.smokeErr = + let + src = writeText "main.cpp" '' + #include + + int main() { + std::cout << "Hi!"; + } + ''; + + in + runCommand "clang-tools-test-smoke-err" { } '' + (${finalAttrs.finalPackage}/bin/clangd --query-driver='**' --check=${src} 2>&1 || true) \ + | grep 'use of undeclared identifier' + + touch $out + ''; + meta = llvm_meta // { description = "Standalone command line tools for C++ development"; maintainers = with lib.maintainers; [ patryk27 ]; }; -} +}) diff --git a/pkgs/development/compilers/llvm/common/clang-tools/wrapper b/pkgs/development/compilers/llvm/common/clang-tools/wrapper index 2cb84ece693b0..fa74a18b3c9f6 100755 --- a/pkgs/development/compilers/llvm/common/clang-tools/wrapper +++ b/pkgs/development/compilers/llvm/common/clang-tools/wrapper @@ -18,10 +18,23 @@ buildcpath() { echo $path${after:+':'}$after } -export CPATH=${CPATH}${CPATH:+':'}$(buildcpath ${NIX_CFLAGS_COMPILE} \ - $(<@clang@/nix-support/libc-cflags)):@clang@/resource-root/include -export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}${CPLUS_INCLUDE_PATH:+':'}$(buildcpath ${NIX_CFLAGS_COMPILE} \ - $(<@clang@/nix-support/libcxx-cxxflags) \ - $(<@clang@/nix-support/libc-cflags)):@clang@/resource-root/include +# When user passes `--query-driver`, avoid extending `CPATH` et al, since we +# don't want to infect user-specified toolchain and headers with our stuff. +extendcpath=true -exec -a "$0" @unwrapped@/bin/$(basename $0) "$@" +for arg in "$@"; do + if [[ "${arg}" == \-\-query\-driver* ]]; then + extendcpath=false + fi +done + +if [ "$extendcpath" = true ]; then + export CPATH=${CPATH}${CPATH:+':'}$(buildcpath ${NIX_CFLAGS_COMPILE} \ + $(<@clang@/nix-support/libc-cflags)) + + export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}${CPLUS_INCLUDE_PATH:+':'}$(buildcpath ${NIX_CFLAGS_COMPILE} \ + $(<@clang@/nix-support/libcxx-cxxflags) \ + $(<@clang@/nix-support/libc-cflags)) +fi + +@out@/bin/$(basename $0)-unwrapped "$@" diff --git a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix index a81e79aad26cb..3f0096f0b8393 100644 --- a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix @@ -10,7 +10,6 @@ cmake, ninja, python3, - libllvm, jq, libcxx, linuxHeaders, @@ -61,6 +60,7 @@ stdenv.mkDerivation (finalAttrs: { '' + '' cp -r ${monorepoSrc}/compiler-rt "$out" + cp -r ${monorepoSrc}/llvm "$out" '' ) else @@ -85,12 +85,16 @@ stdenv.mkDerivation (finalAttrs: { url = "https://github.com/llvm/llvm-project/pull/99837/commits/14ae0a660a38e1feb151928a14f35ff0f4487351.patch"; hash = "sha256-JykABCaNNhYhZQxCvKiBn54DZ5ZguksgCHnpdwWF2no="; relative = "compiler-rt"; + }) + ++ lib.optional (lib.strings.versionOlder (lib.versions.major release_version) "20") (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/59978b21ad9c65276ee8e14f26759691b8a65763.patch"; + hash = "sha256-ys5SMLfO3Ay9nCX9GV5yRCQ6pLsseFu/ZY6Xd6OL4p0="; + relative = "compiler-rt"; }); nativeBuildInputs = [ cmake python3 - libllvm.dev ninja ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ jq ]; diff --git a/pkgs/development/compilers/llvm/common/lld/default.nix b/pkgs/development/compilers/llvm/common/lld/default.nix index b9c9152ec98d9..1940724ff1d7d 100644 --- a/pkgs/development/compilers/llvm/common/lld/default.nix +++ b/pkgs/development/compilers/llvm/common/lld/default.nix @@ -64,7 +64,9 @@ stdenv.mkDerivation (finalAttrs: { ++ devExtraCmakeFlags; # Musl's default stack size is too small for lld to be able to link Firefox. - LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152"; + env = lib.optionalAttrs stdenv.hostPlatform.isMusl { + LDFLAGS = "-Wl,-z,stack-size=2097152"; + }; outputs = [ "out" diff --git a/pkgs/development/compilers/llvm/common/llvm/default.nix b/pkgs/development/compilers/llvm/common/llvm/default.nix index 00171a97068e9..a9ee0a7ff4d1e 100644 --- a/pkgs/development/compilers/llvm/common/llvm/default.nix +++ b/pkgs/development/compilers/llvm/common/llvm/default.nix @@ -293,60 +293,34 @@ stdenv.mkDerivation ( '' + # fails when run in sandbox - optionalString (!stdenv.hostPlatform.isx86) '' + '' substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" '' - ) - + - # dup of above patch with different conditions - optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86) - # fails when run in sandbox - ( + + + # Fails on macOS ≥ 26 due to the changed OS version scheme. + # + # This was fixed upstream in LLVM 21 with + # 88f041f3e05e26617856cc096d2e2864dfaa1c7b, but it’s too + # painful to backport all the way. + lib.optionalString + ( + lib.versionOlder release_version "21" + || + # Rebuild avoidance; TODO: clean up on `staging`. + stdenv.hostPlatform.isx86 + ) '' - substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \ - --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure" + substituteInPlace unittests/TargetParser/Host.cpp \ + --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" '' - + - # This test fails on darwin x86_64 because `sw_vers` reports a different - # macOS version than what LLVM finds by reading - # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into - # the sandbox on macOS). - # - # The `sw_vers` provided by nixpkgs reports the macOS version associated - # with the `CoreFoundation` framework with which it was built. Because - # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what - # `sw_vers` reports is not guaranteed to match the macOS version of the host - # that's building this derivation. - # - # Astute readers will note that we only _patch_ this test on aarch64-darwin - # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright. - # So why does this test pass on aarch64? - # - # Well, it seems that `sw_vers` on aarch64 actually links against the _host_ - # CoreFoundation framework instead of the nixpkgs provided one. - # - # Not entirely sure what the right fix is here. I'm assuming aarch64 - # `sw_vers` doesn't intentionally link against the host `CoreFoundation` - # (still digging into how this ends up happening, will follow up) but that - # aside I think the more pertinent question is: should we be patching LLVM's - # macOS version detection logic to use `sw_vers` instead of reading host - # paths? This *is* a way in which details about builder machines can creep - # into the artifacts that are produced, affecting reproducibility, but it's - # not clear to me when/where/for what this even gets used in LLVM. - # - # TODO(@rrbutani): fix/follow-up - '' - substituteInPlace unittests/TargetParser/Host.cpp \ - --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" - '' - + - # This test fails with a `dysmutil` crash; have not yet dug into what's - # going on here (TODO(@rrbutani)). - lib.optionalString (lib.versionOlder release_version "19") '' - rm test/tools/dsymutil/ARM/obfuscated.test - '' - ) + + + # This test fails with a `dysmutil` crash; have not yet dug into what's + # going on here (TODO(@rrbutani)). + lib.optionalString (stdenv.hostPlatform.isx86 && lib.versionOlder release_version "19") '' + rm test/tools/dsymutil/ARM/obfuscated.test + '' + ) + # FileSystem permissions tests fail with various special bits @@ -453,9 +427,9 @@ stdenv.mkDerivation ( ''; # E.g. Mesa uses the build-id as a cache key (see #93946): - LDFLAGS = optionalString ( - enableSharedLibraries && !stdenv.hostPlatform.isDarwin - ) "-Wl,--build-id=sha1"; + env = lib.optionalAttrs (enableSharedLibraries && !stdenv.hostPlatform.isDarwin) { + LDFLAGS = "-Wl,--build-id=sha1"; + }; cmakeBuildType = "Release"; diff --git a/pkgs/development/compilers/llvm/default.nix b/pkgs/development/compilers/llvm/default.nix index 89c246d7cbd5a..33afe257fc605 100644 --- a/pkgs/development/compilers/llvm/default.nix +++ b/pkgs/development/compilers/llvm/default.nix @@ -25,7 +25,7 @@ let "18.1.8".officialRelease.sha256 = "sha256-iiZKMRo/WxJaBXct9GdAcAT3cz9d9pnAcO1mmR6oPNE="; "19.1.7".officialRelease.sha256 = "sha256-cZAB5vZjeTsXt9QHbP5xluWNQnAHByHtHnAhVDV0E6I="; "20.1.8".officialRelease.sha256 = "sha256-ysyB/EYxi2qE9fD5x/F2zI4vjn8UDoo1Z9ukiIrjFGw="; - "21.1.7".officialRelease.sha256 = "sha256-SaRJ7+iZMhhBdcUDuJpMAY4REQVhrvYMqI2aq3Kz08o="; + "21.1.8".officialRelease.sha256 = "sha256-pgd8g9Yfvp7abjCCKSmIn1smAROjqtfZaJkaUkBSKW0="; "22.1.0-rc1".officialRelease.sha256 = "sha256-uyLW+z4rp4iL25eNfGF7BbvE91smx+XqFDH+GEnvd7c="; "23.0.0-git".gitRelease = { rev = "2a8a694b508df2fa519283afa0211f4cd04cab6c"; diff --git a/pkgs/development/compilers/openjdk/11/source.json b/pkgs/development/compilers/openjdk/11/source.json index 04380496e6014..46f9910dd5a1f 100644 --- a/pkgs/development/compilers/openjdk/11/source.json +++ b/pkgs/development/compilers/openjdk/11/source.json @@ -1,6 +1,6 @@ { - "hash": "sha256-nFRxcL9fkh9NhDVTUwwOXhmFRBVPTq79zeUsWBdmIfk=", + "hash": "sha256-yu0EDwgisr8r/eR/tSb+3vCK722ou0N+vPSArMcEqcA=", "owner": "openjdk", "repo": "jdk11u", - "rev": "refs/tags/jdk-11.0.29+7" + "rev": "refs/tags/jdk-11.0.31+0" } diff --git a/pkgs/development/compilers/openjdk/generic.nix b/pkgs/development/compilers/openjdk/generic.nix index 1deaf765d57c5..f4dac2209f92f 100644 --- a/pkgs/development/compilers/openjdk/generic.nix +++ b/pkgs/development/compilers/openjdk/generic.nix @@ -481,6 +481,18 @@ stdenv.mkDerivation (finalAttrs: { + lib.optionalString atLeast25 '' chmod +x make/scripts/*.{template,sh,pl} patchShebangs --build make/scripts + '' + + lib.optionalString (!atLeast11) '' + # Fix build w/ glibc-2.42. Oldest backport target of this fix was + # JDK 11. + # See https://bugs.openjdk.org/browse/JDK-8354941 + substituteInPlace \ + hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp \ + hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp \ + hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp \ + hotspot/src/share/vm/opto/mulnode.cpp \ + hotspot/src/share/vm/utilities/globalDefinitions.hpp \ + --replace-fail "uabs" "g_uabs" ''; installPhase = '' diff --git a/pkgs/development/compilers/rust/1_91.nix b/pkgs/development/compilers/rust/1_92.nix similarity index 55% rename from pkgs/development/compilers/rust/1_91.nix rename to pkgs/development/compilers/rust/1_92.nix index c9d31d1899d41..572446c1d2a45 100644 --- a/pkgs/development/compilers/rust/1_91.nix +++ b/pkgs/development/compilers/rust/1_92.nix @@ -50,8 +50,9 @@ let in import ./default.nix { - rustcVersion = "1.91.1"; - rustcSha256 = "sha256-ONziBdOfYVcSYfBEQjehzp7+y5cOdg2OxNlXr1tEVyM="; + rustcVersion = "1.92.0"; + rustcSha256 = "sha256-ng0sp1x+J1/cdYJVv0sDr7PWXRVDYCdGkHyTO2kBw7g="; + rustcPatches = [ ./ignore-missing-docs.patch ]; llvmSharedForBuild = llvmSharedFor pkgsBuildBuild; llvmSharedForHost = llvmSharedFor pkgsBuildHost; @@ -65,30 +66,30 @@ import ./default.nix # Note: the version MUST be the same version that we are building. Upstream # ensures that each released compiler can compile itself: # https://github.com/NixOS/nixpkgs/pull/351028#issuecomment-2438244363 - bootstrapVersion = "1.91.1"; + bootstrapVersion = "1.92.0"; # fetch hashes by running `print-hashes.sh ${bootstrapVersion}` bootstrapHashes = { - i686-unknown-linux-gnu = "b596ac56c67cf893e58ecf3263e59ac10157e9f50047e8d3d84faf288273ea47"; - x86_64-unknown-linux-gnu = "1c955c040dd087e4751d15588ddec288b4208bea16f8ec5046c164877e55fff7"; - x86_64-unknown-linux-musl = "e690ea46a73b11268c0487a4bca440142d69de7c0ca062fcdf2b99ad0e42e8e5"; - arm-unknown-linux-gnueabihf = "4899619845a875b2e51825943fad66cf42dced0e1f66470222ff0653776bd59e"; - armv7-unknown-linux-gnueabihf = "c51a61f304c0019c57169b964ec26f7a7ff7dcefaf42b973237f96fb457b25c8"; - aarch64-unknown-linux-gnu = "50213385f288b8760b2efd54ac066ef9a76475e778cbe3b0fcbd3f898fc00674"; - aarch64-unknown-linux-musl = "d374258cd00b4069e44266ab58b321208187511606236ebcc791a5a2d86554e1"; - x86_64-apple-darwin = "05adbd08e6535ed22a9c3d8f11d90df51eb6393488cbbb0c81f2b18d56e4d1ee"; - aarch64-apple-darwin = "f6727c9ab64a5b2a15623f29a023faf0c6a6aeb1347d102b88d595e5c1d9beae"; - powerpc64-unknown-linux-gnu = "94d86d13af288c4a06c8ea8b563e3889d55cc6064a06defd3b612eeeda902b93"; - powerpc64le-unknown-linux-gnu = "355f8043cd506fa718892eeedeebc9d6cc3de1a7757fdb8385c7bdc4cbc853ac"; - powerpc64le-unknown-linux-musl = "c17d51f54c00a371fbab80519b454a901a4b36b9f5a3a692e8816480d8f87067"; - riscv64gc-unknown-linux-gnu = "08230d9c59105270b2e06c5e87078a2a478efcacef8a88aedcccca9f317fa492"; - s390x-unknown-linux-gnu = "fb87330d72636d30f0a9b4b640f994186fc3ad0c0f3c89b2e0f7f31cfd7885f6"; - loongarch64-unknown-linux-gnu = "be6f676ae2ad80d4242798429915f708e3ecae7c895936c5fee172a4f7f2eec8"; - loongarch64-unknown-linux-musl = "7b071bc98d1e42dd802cc5b5bb83a9467d02ad6621231363519c869d322dcd5f"; - x86_64-unknown-freebsd = "9e231fa573b6bb99654a689687aede2014d4c21ac3c8422534c990c859632f50"; + i686-unknown-linux-gnu = "0028378e76fc10255677a5398886664f619c15757f3e830d7464f3c716bc3f7e"; + x86_64-unknown-linux-gnu = "6e5efd6c25953b2732d4e6b1842512536650c68cf72a8b99a0fc566012dd6ca5"; + x86_64-unknown-linux-musl = "1a257be51efac7bea14d5566e521777b85c473ee42524a38abb181c6443c38e4"; + arm-unknown-linux-gnueabihf = "e8d400cc169f858915f8c5bd23070d5b7f63ca8b1d14a5ef53423d952e33a794"; + armv7-unknown-linux-gnueabihf = "1c0f84532a91f3ce7223613565f15f8992a8e09859d699c163a7782d15d6beef"; + aarch64-unknown-linux-gnu = "c812028423c3d7dd7ba99f66101e9e1aa3f66eab44a1285f41c363825d49dca4"; + aarch64-unknown-linux-musl = "ad412daf7b31aadbeb12f836ed14983f5d1d0717bd444e305f94ee68ea822fcd"; + x86_64-apple-darwin = "fc6868991e61e9262272effbb8956b23428430f5f4300c1b48eaae3969f8af2a"; + aarch64-apple-darwin = "235a6cca2dd4881130a9ae61ad1149bbf28bba184dd4621700f0c98c97457716"; + powerpc64-unknown-linux-gnu = "189dd8a254202d32066f123b42497b88f809a11680842e67c68e48a4200b6caf"; + powerpc64le-unknown-linux-gnu = "e2fe00a3c91f21c52947ebf96b4da016c9def5ccfedd1c335f30746db58bbf35"; + powerpc64le-unknown-linux-musl = "4655468ef2ccc3d6eaf55015054970ab4a8fb79d853add830c9e4016551b7101"; + riscv64gc-unknown-linux-gnu = "c2d1b80d3c69edcca5c0d2b2042fad43fdb06fa614a8cd09063c1c259dca8a7e"; + s390x-unknown-linux-gnu = "1ca05b6bd892c358ae0a12acbb605560529d80633abebb43ec004142205d7bd2"; + loongarch64-unknown-linux-gnu = "2f9a85ff1816d6e28a96c1f5b9c9c5d9fe710a20a36f172c41bc289cc780956e"; + loongarch64-unknown-linux-musl = "4fe07780b1ac08baee71de2ddbd275ba14cc082df54ea5a95055514130152546"; + x86_64-unknown-freebsd = "f32b7d8d5ad5c186fa496dd0b7202899f89e93870940e41c37e576f324494189"; }; - selectRustPackage = pkgs: pkgs.rust_1_91; + selectRustPackage = pkgs: pkgs.rust_1_92; } ( diff --git a/pkgs/development/compilers/rust/cargo.nix b/pkgs/development/compilers/rust/cargo.nix index 42dd8bc599715..4cd12db0b1522 100644 --- a/pkgs/development/compilers/rust/cargo.nix +++ b/pkgs/development/compilers/rust/cargo.nix @@ -55,19 +55,19 @@ rustPlatform.buildRustPackage.override zlib ]; - # cargo uses git-rs which is made for a version of libgit2 from recent master that - # is not compatible with the current version in nixpkgs. - #LIBGIT2_SYS_USE_PKG_CONFIG = 1; - - # fixes: the cargo feature `edition` requires a nightly version of Cargo, but this is the `stable` channel - RUSTC_BOOTSTRAP = 1; - - RUSTFLAGS = - if stdenv.hostPlatform.rust.rustcTargetSpec == "x86_64-unknown-linux-gnu" then - # Upstream defaults to lld on x86_64-unknown-linux-gnu, we want to use our linker - "-Clinker-features=-lld -Clink-self-contained=-linker" - else - null; + env = { + # cargo uses git-rs which is made for a version of libgit2 from recent master that + # is not compatible with the current version in nixpkgs. + #LIBGIT2_SYS_USE_PKG_CONFIG = 1; + + # fixes: the cargo feature `edition` requires a nightly version of Cargo, but this is the `stable` channel + RUSTC_BOOTSTRAP = 1; + + } + // lib.optionalAttrs (stdenv.hostPlatform.rust.rustcTargetSpec == "x86_64-unknown-linux-gnu") { + # Upstream defaults to lld on x86_64-unknown-linux-gnu, we want to use our linker + RUSTFLAGS = "-Clinker-features=-lld -Clink-self-contained=-linker"; + }; postInstall = '' wrapProgram "$out/bin/cargo" --suffix PATH : "${rustc}/bin" diff --git a/pkgs/development/compilers/rust/ignore-missing-docs.patch b/pkgs/development/compilers/rust/ignore-missing-docs.patch new file mode 100644 index 0000000000000..1d433a59713d1 --- /dev/null +++ b/pkgs/development/compilers/rust/ignore-missing-docs.patch @@ -0,0 +1,11 @@ +index 897f59f530..c94a4a804f 100644 +--- a/library/core/src/os/mod.rs ++++ b/library/core/src/os/mod.rs +@@ -1,6 +1,7 @@ + //! OS-specific functionality. + + #![unstable(feature = "darwin_objc", issue = "145496")] ++#[allow(missing_docs)] + + #[cfg(all( + doc, diff --git a/pkgs/development/compilers/rust/rustc.nix b/pkgs/development/compilers/rust/rustc.nix index 43f4c95651656..ff2d0782ce61d 100644 --- a/pkgs/development/compilers/rust/rustc.nix +++ b/pkgs/development/compilers/rust/rustc.nix @@ -76,33 +76,35 @@ stdenv.mkDerivation (finalAttrs: { # See: https://github.com/NixOS/nixpkgs/pull/56540#issuecomment-471624656 stripDebugList = [ "bin" ]; - NIX_LDFLAGS = toString ( - # when linking stage1 libstd: cc: undefined reference to `__cxa_begin_catch' - # This doesn't apply to cross-building for FreeBSD because the host - # uses libstdc++, but the target (used for building std) uses libc++ - optional ( - stdenv.hostPlatform.isLinux && !withBundledLLVM && !stdenv.targetPlatform.isFreeBSD && !useLLVM - ) "--push-state --as-needed -lstdc++ --pop-state" - ++ - optional - (stdenv.hostPlatform.isLinux && !withBundledLLVM && !stdenv.targetPlatform.isFreeBSD && useLLVM) - "--push-state --as-needed -L${llvmPackages.libcxx}/lib -lc++ -lc++abi -lLLVM-${lib.versions.major llvmPackages.llvm.version} --pop-state" - ++ optional (stdenv.hostPlatform.isDarwin && !withBundledLLVM) "-lc++ -lc++abi" - ++ optional stdenv.hostPlatform.isDarwin "-rpath ${llvmSharedForHost.lib}/lib" - ); - - RUSTFLAGS = lib.concatStringsSep " " ( - [ - # Increase codegen units to introduce parallelism within the compiler. - "-Ccodegen-units=10" - ] - ++ lib.optionals (stdenv.hostPlatform.rust.rustcTargetSpec == "x86_64-unknown-linux-gnu") [ - # Upstream defaults to lld on x86_64-unknown-linux-gnu, we want to use our linker - "-Clinker-features=-lld" - "-Clink-self-contained=-linker" - ] - ); - RUSTDOCFLAGS = "-A rustdoc::broken-intra-doc-links"; + env = { + NIX_LDFLAGS = toString ( + # when linking stage1 libstd: cc: undefined reference to `__cxa_begin_catch' + # This doesn't apply to cross-building for FreeBSD because the host + # uses libstdc++, but the target (used for building std) uses libc++ + optional ( + stdenv.hostPlatform.isLinux && !withBundledLLVM && !stdenv.targetPlatform.isFreeBSD && !useLLVM + ) "--push-state --as-needed -lstdc++ --pop-state" + ++ + optional + (stdenv.hostPlatform.isLinux && !withBundledLLVM && !stdenv.targetPlatform.isFreeBSD && useLLVM) + "--push-state --as-needed -L${llvmPackages.libcxx}/lib -lc++ -lc++abi -lLLVM-${lib.versions.major llvmPackages.llvm.version} --pop-state" + ++ optional (stdenv.hostPlatform.isDarwin && !withBundledLLVM) "-lc++ -lc++abi" + ++ optional stdenv.hostPlatform.isDarwin "-rpath ${llvmSharedForHost.lib}/lib" + ); + + RUSTFLAGS = lib.concatStringsSep " " ( + [ + # Increase codegen units to introduce parallelism within the compiler. + "-Ccodegen-units=10" + ] + ++ lib.optionals (stdenv.hostPlatform.rust.rustcTargetSpec == "x86_64-unknown-linux-gnu") [ + # Upstream defaults to lld on x86_64-unknown-linux-gnu, we want to use our linker + "-Clinker-features=-lld" + "-Clink-self-contained=-linker" + ] + ); + RUSTDOCFLAGS = "-A rustdoc::broken-intra-doc-links"; + }; # We need rust to build rust. If we don't provide it, configure will try to download it. # Reference: https://github.com/rust-lang/rust/blob/master/src/bootstrap/configure.py @@ -263,7 +265,7 @@ stdenv.mkDerivation (finalAttrs: { ] ++ optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [ # https://github.com/rust-lang/rust/issues/92173 - "--set rust.jemalloc" + "--set=rust.jemalloc" ] ++ optionals (useLLVM && !stdenv.targetPlatform.isFreeBSD) [ # https://github.com/NixOS/nixpkgs/issues/311930 @@ -279,7 +281,7 @@ stdenv.mkDerivation (finalAttrs: { # applies to functions that can be immediately compiled when building # std. Generic functions that do codegen when called in user code obey # -Cforce-frame-pointers specified then, if any) - "--set rust.frame-pointers" + "--set=rust.frame-pointers" ]; # if we already have a rust compiler for build just compile the target std @@ -451,6 +453,8 @@ stdenv.mkDerivation (finalAttrs: { // lib.optionalAttrs stdenv.hostPlatform.isLinux { inherit firefox thunderbird; }; }; + __structuredAttrs = true; + meta = { homepage = "https://www.rust-lang.org/"; description = "Safe, concurrent, practical language"; diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 5787748f3cba3..9b9012100daf5 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -30,8 +30,8 @@ let "2.4.10".sha256 = "sha256-zus5a2nSkT7uBIQcKva+ylw0LOFGTD/j5FPy3hDF4vg="; # By unofficial and very loose convention we keep the latest version of # SBCL, and the previous one in case someone quickly needs to roll back. - "2.5.9".sha256 = "sha256-0bGQItQ9xJPtyXK25ZyTrmaEyWP90rQTsJZeGM1r0eI="; "2.5.10".sha256 = "sha256-v1+0nypC82s+AD0uTSNDhq3fB9ndjKhjRlaSfMls4SU="; + "2.6.0".sha256 = "sha256-CkvVsByI5rRcLwWWBdJyirk3emUpsupiKnq7W6LWkcY="; }; # Collection of pre-built SBCL binaries for platforms that need them for # bootstrapping. Ideally these are to be avoided. If ECL (or any other diff --git a/pkgs/development/compilers/shaderc/default.nix b/pkgs/development/compilers/shaderc/default.nix deleted file mode 100644 index d8ef7d21f5436..0000000000000 --- a/pkgs/development/compilers/shaderc/default.nix +++ /dev/null @@ -1,93 +0,0 @@ -{ - lib, - stdenv, - fetchFromGitHub, - cmake, - python3, - autoSignDarwinBinariesHook, - cctools, -}: -# Like many google projects, shaderc doesn't gracefully support separately -# compiled dependencies, so we can't easily use the versions of glslang and -# spirv-tools used by vulkan-loader. Exact revisions are taken from -# https://github.com/google/shaderc/blob/known-good/known_good.json - -# Future work: extract and fetch all revisions automatically based on a revision -# of shaderc's known-good branch. -let - glslang = fetchFromGitHub { - owner = "KhronosGroup"; - repo = "glslang"; - # No corresponding tag for efd24d75bcbc55620e759f6bf42c45a32abac5f8 on 2025-06-23 - rev = "efd24d75bcbc55620e759f6bf42c45a32abac5f8"; - hash = "sha256-wMd1ylwDOM/uBbhpyMAduM9X7ao08TNq3HdoNGfSjcQ="; - }; - spirv-tools = fetchFromGitHub { - owner = "KhronosGroup"; - repo = "SPIRV-Tools"; - rev = "v2025.3.rc1"; - hash = "sha256-yAdd/mXY8EJnE0vCu0n/aVxMH9059T/7cAdB9nP1vQQ="; - }; - spirv-headers = fetchFromGitHub { - owner = "KhronosGroup"; - repo = "SPIRV-Headers"; - # No corresponding tag for 2a611a970fdbc41ac2e3e328802aed9985352dca on 2025-06-19 - rev = "2a611a970fdbc41ac2e3e328802aed9985352dca"; - hash = "sha256-LRjMy9xtOErbJbMh+g2IKXfmo/hWpegZM72F8E122oY="; - }; -in -stdenv.mkDerivation (finalAttrs: { - pname = "shaderc"; - version = "2025.3"; - - outputs = [ - "out" - "lib" - "bin" - "dev" - "static" - ]; - - src = fetchFromGitHub { - owner = "google"; - repo = "shaderc"; - rev = "v${finalAttrs.version}"; - hash = "sha256-q5Z0wER8DbkmfT/MNrmnn9J9rzur2YjzAncaO1aRNXA="; - }; - - postPatch = '' - cp -r --no-preserve=mode ${glslang} third_party/glslang - cp -r --no-preserve=mode ${spirv-tools} third_party/spirv-tools - ln -s ${spirv-headers} third_party/spirv-tools/external/spirv-headers - patchShebangs --build utils/ - ''; - - nativeBuildInputs = [ - cmake - python3 - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ cctools ] - ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [ - autoSignDarwinBinariesHook - ]; - - postInstall = '' - moveToOutput "lib/*.a" $static - ''; - - cmakeFlags = [ "-DSHADERC_SKIP_TESTS=ON" ]; - - # Fix the paths in .pc, even though it's unclear if all these .pc are really useful. - postFixup = '' - substituteInPlace "$dev"/lib/pkgconfig/*.pc \ - --replace-fail '=''${prefix}//' '=/' \ - --replace-fail "$dev/$dev/" "$dev/" - ''; - - meta = { - description = "Collection of tools, libraries and tests for shader compilation"; - inherit (finalAttrs.src.meta) homepage; - license = lib.licenses.asl20; - platforms = lib.platforms.all; - }; -}) diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 1332333c02c51..ea44ef75595f7 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -257,6 +257,10 @@ with haskellLib; ### END HASKELL-LANGUAGE-SERVER SECTION ### ########################################### + # network < 3.2.8 + # bound only required when running under WINE: https://github.com/haskell/network/issues/604 + iserv-proxy = doJailbreak super.iserv-proxy; + # Test ldap server test/ldap.js is missing from sdist # https://github.com/supki/ldap-client/issues/18 ldap-client-og = dontCheck super.ldap-client-og; @@ -611,7 +615,7 @@ with haskellLib; name = "git-annex-${super.git-annex.version}-src"; url = "git://git-annex.branchable.com/"; tag = super.git-annex.version; - sha256 = "sha256-+OLFMrqpf1Ooy7CQ9S+N/H5R5+aHQtbO1pYwDF4ln8A="; + sha256 = "sha256-Cnkohi1sl7kS4JECCsNDbxXKIWBus1gDcWoO3xZtXoM="; # delete android and Android directories which cause issues on # darwin (case insensitive directory). Since we don't need them # during the build process, we can delete it to prevent a hash @@ -653,6 +657,16 @@ with haskellLib; # https://github.com/awakesecurity/nix-deploy/issues/35 nix-deploy = doJailbreak super.nix-deploy; + call-stack = appendPatches [ + # Fixes test suites with GHC >= 9.10 + (pkgs.fetchpatch { + name = "call-stack-tests-normalize-pkg-name.patch"; + url = "https://github.com/sol/call-stack/commit/cbbee23ce309d18201951e16a8b6d30b57e2bdf9.patch"; + sha256 = "sha256-xkdjf8zXW+UMxot2Z8WYYmvAJsT+VGKXWGt19mZZwCg="; + includes = [ "test/Data/CallStackSpec.hs" ]; + }) + ] super.call-stack; + # Too strict upper bound on algebraic-graphs # https://github.com/awakesecurity/nix-graph/issues/5 nix-graph = doJailbreak super.nix-graph; @@ -3182,6 +3196,12 @@ with haskellLib; doJailbreak super.egison-pattern-src-th-mode ); + # 2025-12-27: doctests broken with -Wx-partial warning + # https://github.com/junjihashimoto/th-cas/issues/1 + th-cas = overrideCabal { + testTargets = [ "spec" ]; + } super.th-cas; + # 2025-04-09: jailbreak to allow base >= 4.17, hasql >= 1.6, hasql-transaction-io >= 0.2 hasql-streams-core = warnAfterVersion "0.1.0.0" (doJailbreak super.hasql-streams-core); @@ -3336,12 +3356,6 @@ with haskellLib; # 2025-5-15: Too strict bounds on base <4.19, see: https://github.com/zachjs/sv2v/issues/317 sv2v = doJailbreak super.sv2v; - # 2025-09-20: New revision already on hackage. - nvfetcher = lib.pipe super.nvfetcher [ - (warnAfterVersion "0.7.0.0") - doJailbreak - ]; - # 2025-06-25: Upper bounds of transformers and bytestring too strict, # as haskore 0.2.0.8 was released in 2016 and is quite outdated. # Tests fail with: diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix index ca028a6364789..66942b6809d40 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.10.x.nix @@ -88,7 +88,6 @@ in # # Test suite issues # - call-stack = dontCheck super.call-stack; # https://github.com/sol/call-stack/issues/19 monad-dijkstra = dontCheck super.monad-dijkstra; # needs hlint 3.10 # Workaround https://github.com/haskell/haskell-language-server/issues/4674 diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.12.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.12.x.nix index ac8236573eb93..07e33c894c29c 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.12.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.12.x.nix @@ -106,8 +106,6 @@ with haskellLib; # Test suite issues # - call-stack = dontCheck super.call-stack; # https://github.com/sol/call-stack/issues/19 - relude = dontCheck super.relude; # https://gitlab.haskell.org/ghc/ghc/-/issues/25930 diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix index 1ae029d0e5193..03b4375bda345 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix @@ -201,6 +201,7 @@ in # A given major version of ghc-exactprint only supports one version of GHC. ghc-exactprint = addBuildDepend self.extra super.ghc-exactprint_1_7_1_0; + ghc-lib = doDistribute self.ghc-lib_9_8_5_20250214; ghc-lib-parser = doDistribute self.ghc-lib-parser_9_8_5_20250214; ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_8_0_2; haddock-library = doJailbreak super.haddock-library; diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix index 1786e56c482c4..1a3e6d13b652b 100644 --- a/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix +++ b/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix @@ -106,6 +106,7 @@ in ghc-exactprint = doDistribute super.ghc-exactprint_1_8_0_0; haddock-library = doJailbreak super.haddock-library; + ghc-lib = doDistribute self.ghc-lib_9_8_5_20250214; ghc-lib-parser = doDistribute self.ghc-lib-parser_9_8_5_20250214; ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_8_0_2; inherit diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml index 62b573a18ad9d..a638e9be4874b 100644 --- a/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml +++ b/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml @@ -199,7 +199,6 @@ broken-packages: - antisplice # failure in job https://hydra.nixos.org/build/233238144 at 2023-09-02 - antlr-haskell # failure in job https://hydra.nixos.org/build/233208196 at 2023-09-02 - anydbm # failure in job https://hydra.nixos.org/build/233195447 at 2023-09-02 - - aoc # failure in job https://hydra.nixos.org/build/307516728 at 2025-09-19 - Aoide # failure in job https://hydra.nixos.org/build/233239286 at 2023-09-02 - aop-prelude # failure in job https://hydra.nixos.org/build/295091671 at 2025-04-22 - aosd # failure in job https://hydra.nixos.org/build/233207331 at 2023-09-02 @@ -513,7 +512,6 @@ broken-packages: - BitStringRandomMonad # failure in job https://hydra.nixos.org/build/233203519 at 2023-09-02 - BitSyntax # failure in job https://hydra.nixos.org/build/233211551 at 2023-09-02 - bitx-bitcoin # failure in job https://hydra.nixos.org/build/233215594 at 2023-09-02 - - bizzlelude # failure in job https://hydra.nixos.org/build/233255574 at 2023-09-02 - bizzlelude-js # failure in job https://hydra.nixos.org/build/233224267 at 2023-09-02 - bkr # failure in job https://hydra.nixos.org/build/233246377 at 2023-09-02 - blagda # failure in job https://hydra.nixos.org/build/233332725 at 2023-09-02 @@ -789,7 +787,6 @@ broken-packages: - chalkboard # failure in job https://hydra.nixos.org/build/234453414 at 2023-09-13 - chalmers-lava2000 # failure in job https://hydra.nixos.org/build/233239592 at 2023-09-02 - changelogged # failure in job https://hydra.nixos.org/build/233211675 at 2023-09-02 - - changeset # failure in job https://hydra.nixos.org/build/295092242 at 2025-04-22 - char-qq # failure in job https://hydra.nixos.org/build/295092253 at 2025-04-22 - character-cases # failure in job https://hydra.nixos.org/build/233197636 at 2023-09-02 - chart-histogram # failure in job https://hydra.nixos.org/build/233250470 at 2023-09-02 @@ -842,8 +839,6 @@ broken-packages: - clarifai # failure in job https://hydra.nixos.org/build/233229480 at 2023-09-02 - CLASE # failure in job https://hydra.nixos.org/build/233234459 at 2023-09-02 - clash-finite # failure in job https://hydra.nixos.org/build/295092297 at 2025-04-22 - - clash-lib # failure in job https://hydra.nixos.org/build/309812683 at 2025-10-15 - - clash-lib-hedgehog # failure in job https://hydra.nixos.org/build/295122808 at 2025-04-22 - clash-multisignal # failure in job https://hydra.nixos.org/build/273463331 at 2024-10-01 - clash-prelude-quickcheck # failure in job https://hydra.nixos.org/build/273453747 at 2024-10-01 - Clash-Royale-Hack-Cheats # failure in job https://hydra.nixos.org/build/233216034 at 2023-09-02 @@ -884,6 +879,7 @@ broken-packages: - closed-classes # failure in job https://hydra.nixos.org/build/233250965 at 2023-09-02 - closed-intervals # failure in job https://hydra.nixos.org/build/233209665 at 2023-09-02 - closure # failure in job https://hydra.nixos.org/build/233215133 at 2023-09-02 + - cloudchor # failure in job https://hydra.nixos.org/build/317092959 at 2025-12-27 - cloudfront-signer # failure in job https://hydra.nixos.org/build/233238255 at 2023-09-02 - clplug # failure in job https://hydra.nixos.org/build/233236794 at 2023-09-02 - clr-host # failure in job https://hydra.nixos.org/build/233207709 at 2023-09-02 @@ -1076,7 +1072,6 @@ broken-packages: - copilot-verifier # failure in job https://hydra.nixos.org/build/297024747 at 2025-05-14 - copilot-visualizer # failure in job https://hydra.nixos.org/build/315095584 at 2025-11-29 - copr # failure in job https://hydra.nixos.org/build/233252310 at 2023-09-02 - - coquina # failure in job https://hydra.nixos.org/build/307610386 at 2025-09-19 - core # failure in job https://hydra.nixos.org/build/233253971 at 2023-09-02 - core-compiler # failure in job https://hydra.nixos.org/build/233250303 at 2023-09-02 - core-effect-effectful # failure in job https://hydra.nixos.org/build/252723824 at 2024-03-16 @@ -1168,7 +1163,6 @@ broken-packages: - cuckoo # failure in job https://hydra.nixos.org/build/233210915 at 2023-09-02 - cuckoo-filter # failure in job https://hydra.nixos.org/build/233226484 at 2023-09-02 - cudd # failure in job https://hydra.nixos.org/build/252716117 at 2024-03-16 - - cuddle # failure in job https://hydra.nixos.org/build/302802065 at 2025-07-27 - curl-aeson # failure in job https://hydra.nixos.org/build/233210106 at 2023-09-02 - curl-runnings # failure in job https://hydra.nixos.org/build/233258680 at 2023-09-02 - curly-expander # failure in job https://hydra.nixos.org/build/307517676 at 2025-09-19 @@ -1191,10 +1185,10 @@ broken-packages: - DAG-Tournament # failure in job https://hydra.nixos.org/build/233218747 at 2023-09-02 - dahdit # failure in job https://hydra.nixos.org/build/309813014 at 2025-10-15 - damnpacket # failure in job https://hydra.nixos.org/build/233235248 at 2023-09-02 + - dani-sqlite # failure in job https://hydra.nixos.org/build/317093240 at 2025-12-27 - danibot # failure in job https://hydra.nixos.org/build/233197740 at 2023-09-02 - Dao # failure in job https://hydra.nixos.org/build/233207745 at 2023-09-02 - dao # failure in job https://hydra.nixos.org/build/233240654 at 2023-09-02 - - dap # failure in job https://hydra.nixos.org/build/237239767 at 2023-10-21 - darcs-buildpackage # failure in job https://hydra.nixos.org/build/233213566 at 2023-09-02 - darcs-cabalized # failure in job https://hydra.nixos.org/build/233234765 at 2023-09-02 - darcs-graph # failure in job https://hydra.nixos.org/build/233245230 at 2023-09-02 @@ -1340,7 +1334,6 @@ broken-packages: - derive # failure in job https://hydra.nixos.org/build/233209166 at 2023-09-02 - derive-enumerable # failure in job https://hydra.nixos.org/build/233254290 at 2023-09-02 - derive-gadt # failure in job https://hydra.nixos.org/build/233220430 at 2023-09-02 - - derive-has-field # failure in job https://hydra.nixos.org/build/252735604 at 2024-03-16 - derive-lifted-instances # failure in job https://hydra.nixos.org/build/233194868 at 2023-09-02 - derive-monoid # failure in job https://hydra.nixos.org/build/233205670 at 2023-09-02 - derive-prim # failure in job https://hydra.nixos.org/build/307517819 at 2025-09-19 @@ -1416,7 +1409,6 @@ broken-packages: - direct-http # failure in job https://hydra.nixos.org/build/233232796 at 2023-09-02 - direct-plugins # failure in job https://hydra.nixos.org/build/233211547 at 2023-09-02 - directed-cubical # failure in job https://hydra.nixos.org/build/233215175 at 2023-09-02 - - directory-contents # failure in job https://hydra.nixos.org/build/295092900 at 2025-04-22 - direm # failure in job https://hydra.nixos.org/build/233211496 at 2023-09-02 - dirstream # failure in job https://hydra.nixos.org/build/273442606 at 2024-10-01 - disco # failure in job https://hydra.nixos.org/build/233212298 at 2023-09-02 @@ -1518,6 +1510,7 @@ broken-packages: - dual # failure in job https://hydra.nixos.org/build/252724683 at 2024-03-16 - dualizer # failure in job https://hydra.nixos.org/build/233237592 at 2023-09-02 - duckdb-ffi # failure in job https://hydra.nixos.org/build/311300709, https://github.com/Tritlo/duckdb-haskell/issues/2 + - duckdb-haskell # failure in job https://hydra.nixos.org/build/318373036 at 2026-01-10 - duckling # failure in job https://hydra.nixos.org/build/233247880 at 2023-09-02 - duet # failure in job https://hydra.nixos.org/build/233219004 at 2023-09-02 - dump-core # failure in job https://hydra.nixos.org/build/233244428 at 2023-09-02 @@ -1623,7 +1616,6 @@ broken-packages: - elm-reactor # Elm is no longer actively maintained on Hackage: https://github.com/NixOS/nixpkgs/pull/9233. - elm-repl # Elm is no longer actively maintained on Hackage: https://github.com/NixOS/nixpkgs/pull/9233. - elm-server # Elm is no longer actively maintained on Hackage: https://github.com/NixOS/nixpkgs/pull/9233. - - elm-street # failure in job https://hydra.nixos.org/build/307610478 at 2025-09-19 - elm-websocket # failure in job https://hydra.nixos.org/build/233192201 at 2023-09-02 - elm-yesod # Elm is no longer actively maintained on Hackage: https://github.com/NixOS/nixpkgs/pull/9233. - elminator # failure in job https://hydra.nixos.org/build/252729949 at 2024-03-16 @@ -1956,7 +1948,6 @@ broken-packages: - fortran-vars # failure in job https://hydra.nixos.org/build/233257719 at 2023-09-02 - fortytwo # failure in job https://hydra.nixos.org/build/233209552 at 2023-09-02 - foscam-filename # failure in job https://hydra.nixos.org/build/233237326 at 2023-09-02 - - fp-ieee # failure in job https://hydra.nixos.org/build/307518380 at 2025-09-19 - FPretty # failure in job https://hydra.nixos.org/build/233196648 at 2023-09-02 - fptest # failure in job https://hydra.nixos.org/build/233233288 at 2023-09-02 - fquery # failure in job https://hydra.nixos.org/build/233196287 at 2023-09-02 @@ -2006,6 +1997,7 @@ broken-packages: - frown # failure in job https://hydra.nixos.org/build/233208462 at 2023-09-02 - frp-arduino # failure in job https://hydra.nixos.org/build/233192216 at 2023-09-02 - frpnow # failure in job https://hydra.nixos.org/build/233236056 at 2023-09-02 + - fs-api # failure in job https://hydra.nixos.org/build/316127858 at 2025-12-19 - fs-events # failure in job https://hydra.nixos.org/build/233218231 at 2023-09-02 - fsh-csv # failure in job https://hydra.nixos.org/build/233220196 at 2023-09-02 - FSM # failure in job https://hydra.nixos.org/build/233247343 at 2023-09-02 @@ -2020,6 +2012,7 @@ broken-packages: - FTGL-bytestring # failure in job https://hydra.nixos.org/build/233256032 at 2023-09-02 - ftp-conduit # failure in job https://hydra.nixos.org/build/233244330 at 2023-09-02 - ftphs # failure in job https://hydra.nixos.org/build/233215550 at 2023-09-02 + - fudgets # failure in job https://hydra.nixos.org/build/318373386 at 2026-01-10 - fugue # failure in job https://hydra.nixos.org/build/295093405 at 2025-04-22 - FULE # failure in job https://hydra.nixos.org/build/252719910 at 2024-03-16 - full-sessions # failure in job https://hydra.nixos.org/build/233254332 at 2023-09-02 @@ -2104,7 +2097,6 @@ broken-packages: - generic-tree # failure in job https://hydra.nixos.org/build/233219539 at 2023-09-02 - generic-trie # failure in job https://hydra.nixos.org/build/252733076 at 2024-03-16 - generic-xmlpickler # failure in job https://hydra.nixos.org/build/233246507 at 2023-09-02 - - generics-eot # failure in job https://hydra.nixos.org/build/252717610 at 2024-03-16 - generics-mrsop # failure in job https://hydra.nixos.org/build/233233310 at 2023-09-02 - genericserialize # failure in job https://hydra.nixos.org/build/233253092 at 2023-09-02 - genetics # failure in job https://hydra.nixos.org/build/233219599 at 2023-09-02 @@ -2160,6 +2152,7 @@ broken-packages: - ghc-proofs # failure in job https://hydra.nixos.org/build/233230633 at 2023-09-02 - ghc-simple # failure in job https://hydra.nixos.org/build/233201423 at 2023-09-02 - ghc-srcspan-plugin # failure in job https://hydra.nixos.org/build/233231564 at 2023-09-02 + - ghc-stack-profiler-speedscope # failure in job https://hydra.nixos.org/build/316138499 at 2025-12-19 - ghc-syb # failure in job https://hydra.nixos.org/build/233236783 at 2023-09-02 - ghc-syb-utils # failure in job https://hydra.nixos.org/build/233229196 at 2023-09-02 - ghc-symbol # failure in job https://hydra.nixos.org/build/252710738 at 2024-03-16 @@ -2206,7 +2199,6 @@ broken-packages: - GiST # failure in job https://hydra.nixos.org/build/233199759 at 2023-09-02 - gist # failure in job https://hydra.nixos.org/build/233221381 at 2023-09-02 - git # failure in job https://hydra.nixos.org/build/233225634 at 2023-09-02 - - git-all # failure in job https://hydra.nixos.org/build/233252935 at 2023-09-02 - git-checklist # failure in job https://hydra.nixos.org/build/233203228 at 2023-09-02 - git-cuk # failure in job https://hydra.nixos.org/build/233211733 at 2023-09-02 - git-date # failure in job https://hydra.nixos.org/build/233259193 at 2023-09-02 @@ -2293,7 +2285,6 @@ broken-packages: - gopherbot # failure in job https://hydra.nixos.org/build/233207680 at 2023-09-02 - gopro-plus # failure in job https://hydra.nixos.org/build/233225073 at 2023-09-02 - gore-and-ash # failure in job https://hydra.nixos.org/build/233237810 at 2023-09-02 - - gothic # failure in job https://hydra.nixos.org/build/233218967 at 2023-09-02 - GotoT-transformers # failure in job https://hydra.nixos.org/build/233229336 at 2023-09-02 - gotta-go-fast # failure in job https://hydra.nixos.org/build/233213439 at 2023-09-02 - gotyno-hs # failure in job https://hydra.nixos.org/build/233205043 at 2023-09-02 @@ -2326,7 +2317,6 @@ broken-packages: - graphql-w-persistent # failure in job https://hydra.nixos.org/build/233228956 at 2023-09-02 - graphted # failure in job https://hydra.nixos.org/build/233227052 at 2023-09-02 - graphula-core # failure in job https://hydra.nixos.org/build/233259608 at 2023-09-02 - - graphwiz # failure in job https://hydra.nixos.org/build/307518943 at 2025-09-19 - graql # failure in job https://hydra.nixos.org/build/233219809 at 2023-09-02 - grasp # failure in job https://hydra.nixos.org/build/233213280 at 2023-09-02 - gray-code # failure in job https://hydra.nixos.org/build/233234283 at 2023-09-02 @@ -2381,6 +2371,7 @@ broken-packages: - h2048 # failure in job https://hydra.nixos.org/build/233231384 at 2023-09-02 - h2c # failure in job https://hydra.nixos.org/build/233196032 at 2023-09-02 - h3-hs # failure in job https://hydra.nixos.org/build/267984231 at 2024-07-31 + - haal # failure in job https://hydra.nixos.org/build/316127933 at 2025-12-19 - haar # failure in job https://hydra.nixos.org/build/233217259 at 2023-09-02 - hablog # failure in job https://hydra.nixos.org/build/296933029 at 2025-05-14 - HABQT # failure in job https://hydra.nixos.org/build/233256547 at 2023-09-02 @@ -2479,7 +2470,6 @@ broken-packages: - happstack-server-tls-cryptonite # failure in job https://hydra.nixos.org/build/233236252 at 2023-09-02 - happstack-util # failure in job https://hydra.nixos.org/build/233202063 at 2023-09-02 - happstack-yui # failure in job https://hydra.nixos.org/build/233221482 at 2023-09-02 - - happy-dot # failure in job https://hydra.nixos.org/build/307519045 at 2025-09-19 - happy-hour # failure in job https://hydra.nixos.org/build/252732958 at 2024-03-16 - happybara # failure in job https://hydra.nixos.org/build/233236198 at 2023-09-02 - happybara-webkit-server # failure in job https://hydra.nixos.org/build/233247667 at 2023-09-02 @@ -2966,6 +2956,7 @@ broken-packages: - hpio # failure in job https://hydra.nixos.org/build/233215789 at 2023-09-02 - hplaylist # failure in job https://hydra.nixos.org/build/233219978 at 2023-09-02 - hpodder # failure in job https://hydra.nixos.org/build/233207276 at 2023-09-02 + - hpqtypes-effectful # failure in job https://hydra.nixos.org/build/316138526 at 2025-12-19 - hps-kmeans # failure in job https://hydra.nixos.org/build/233207461 at 2023-09-02 - hPushover # failure in job https://hydra.nixos.org/build/233215804 at 2023-09-02 - hpygments # failure in job https://hydra.nixos.org/build/233258827 at 2023-09-02 @@ -3031,6 +3022,7 @@ broken-packages: - hs2ps # failure in job https://hydra.nixos.org/build/233258362 at 2023-09-02 - hsakamai # failure in job https://hydra.nixos.org/build/252722933 at 2024-03-16 - hsaml2 # failure in job https://hydra.nixos.org/build/233252618 at 2023-09-02 + - HsASA # failure in job https://hydra.nixos.org/build/318371121 at 2026-01-10 - hsautogui # failure in job https://hydra.nixos.org/build/253687662 at 2024-03-31 - hsay # failure in job https://hydra.nixos.org/build/233218925 at 2023-09-02 - hsbc # failure in job https://hydra.nixos.org/build/233206310 at 2023-09-02 @@ -3057,6 +3049,7 @@ broken-packages: - hsdip # failure in job https://hydra.nixos.org/build/233229128 at 2023-09-02 - hsdns-cache # failure in job https://hydra.nixos.org/build/233225611 at 2023-09-02 - hsebaysdk # failure in job https://hydra.nixos.org/build/233251126 at 2023-09-02 + - hsec-sync # failure in job https://hydra.nixos.org/build/317094901 at 2025-12-27 - hsec-tools # failure in job https://hydra.nixos.org/build/265287998 at 2024-07-14 - hsenv # failure in job https://hydra.nixos.org/build/233196846 at 2023-09-02 - hsfcsh # failure in job https://hydra.nixos.org/build/233245258 at 2023-09-02 @@ -3113,11 +3106,11 @@ broken-packages: - hspretty # failure in job https://hydra.nixos.org/build/233253394 at 2023-09-02 - hsql # failure in job https://hydra.nixos.org/build/233217626 at 2023-09-02 - hsseccomp # failure in job https://hydra.nixos.org/build/233194411 at 2023-09-02 - - hssh # failure in job https://hydra.nixos.org/build/315097366 at 2025-11-29 - hsshellscript # failure in job https://hydra.nixos.org/build/233197858 at 2023-09-02 - hsSqlite3 # failure in job https://hydra.nixos.org/build/233238549 at 2023-09-02 - hssqlppp # failure in job https://hydra.nixos.org/build/233216888 at 2023-09-02 - HsSVN # failure in job https://hydra.nixos.org/build/233213151 at 2023-09-02 + - HsSyck # failure in job https://hydra.nixos.org/build/318371120 at 2026-01-10 - hstats # failure in job https://hydra.nixos.org/build/233239963 at 2023-09-02 - hstatsd # failure in job https://hydra.nixos.org/build/233232363 at 2023-09-02 - hstest # failure in job https://hydra.nixos.org/build/233237803 at 2023-09-02 @@ -3175,6 +3168,7 @@ broken-packages: - http-wget # failure in job https://hydra.nixos.org/build/233236793 at 2023-09-02 - http2-client-exe # failure in job https://hydra.nixos.org/build/260189666 at 2024-05-19 - http2-grpc-types # failure in job https://hydra.nixos.org/build/233197769 at 2023-09-02 + - http2-tls # failure in job https://hydra.nixos.org/build/316190912 at 2025-12-19 - httpstan # failure in job https://hydra.nixos.org/build/233202072 at 2023-09-02 - htune # failure in job https://hydra.nixos.org/build/234447885 at 2023-09-13 - htvm # failure in job https://hydra.nixos.org/build/233218993 at 2023-09-02 @@ -3210,7 +3204,6 @@ broken-packages: - hw-dump # failure in job https://hydra.nixos.org/build/233208818 at 2023-09-02 - hw-fingertree-strict # failure in job https://hydra.nixos.org/build/252718249 at 2024-03-16 - hw-hedgehog # failure in job https://hydra.nixos.org/build/307519553 at 2025-09-19 - - hw-json-simd # failure in job https://hydra.nixos.org/build/233240490 at 2023-09-02 - hw-kafka-conduit # failure in job https://hydra.nixos.org/build/252714760 at 2024-03-16 - hw-lazy # failure in job https://hydra.nixos.org/build/252722974 at 2024-03-16 - hw-packed-vector # failure in job https://hydra.nixos.org/build/252735800 at 2024-03-16 @@ -3351,6 +3344,7 @@ broken-packages: - integer-pure # failure in job https://hydra.nixos.org/build/233216037 at 2023-09-02 - integer-simple # failure in job https://hydra.nixos.org/build/233192893 at 2023-09-02 - integer-types # failure in job https://hydra.nixos.org/build/252734448 at 2024-03-16 + - intelli-monad # failure in job https://hydra.nixos.org/build/318374656 at 2026-01-09 - intensional-datatys # failure in job https://hydra.nixos.org/build/233218337 at 2023-09-02 - interact # failure in job https://hydra.nixos.org/build/233228146 at 2023-09-02 - interactive-plot # failure in job https://hydra.nixos.org/build/233212280 at 2023-09-02 @@ -3609,6 +3603,7 @@ broken-packages: - lambdatwit # failure in job https://hydra.nixos.org/build/233219603 at 2023-09-02 - Lambdaya # failure in job https://hydra.nixos.org/build/233227702 at 2023-09-02 - lame # failure in job https://hydra.nixos.org/build/233250932 at 2023-09-02 + - lame-tester # failure in job https://hydra.nixos.org/build/316401202 at 2025-12-19 - laminar # failure in job https://hydra.nixos.org/build/241426331 at 2023-11-19 - langchain-hs # failure in job https://hydra.nixos.org/build/309815178 at 2025-10-15 - language-asn # failure in job https://hydra.nixos.org/build/233227929 at 2023-09-02 @@ -3731,6 +3726,7 @@ broken-packages: - libphonenumber # failure in job https://hydra.nixos.org/build/233251839 at 2023-09-02 - libpq # failure in job https://hydra.nixos.org/build/233192542 at 2023-09-02 - librandomorg # failure in job https://hydra.nixos.org/build/233232749 at 2023-09-02 + - librato # failure in job https://hydra.nixos.org/build/316401203 at 2025-12-19 - libremidi # failure in job https://hydra.nixos.org/build/307520031 at 2025-09-19 - libriscv # failure in job https://hydra.nixos.org/build/295122867 at 2025-04-22 - libsecp256k1 # failure in job https://hydra.nixos.org/build/234441559 at 2023-09-13 @@ -3841,7 +3837,6 @@ broken-packages: - log2json # failure in job https://hydra.nixos.org/build/233211819 at 2023-09-02 - logentries # failure in job https://hydra.nixos.org/build/233215590 at 2023-09-02 - logger # failure in job https://hydra.nixos.org/build/233237524 at 2023-09-02 - - logging-effect-colors # failure in job https://hydra.nixos.org/build/295095150 at 2025-04-22 - logging-effect-extra-file # failure in job https://hydra.nixos.org/build/233225200 at 2023-09-02 - logging-effect-extra-handler # failure in job https://hydra.nixos.org/build/233232054 at 2023-09-02 - logging-effect-syslog # failure in job https://hydra.nixos.org/build/295095176 at 2025-04-22 @@ -3873,7 +3868,6 @@ broken-packages: - lp-diagrams # failure in job https://hydra.nixos.org/build/295095167 at 2025-04-22 - lp-diagrams-svg # failure in job https://hydra.nixos.org/build/233220097 at 2023-09-02 - LRU # failure in job https://hydra.nixos.org/build/233206273 at 2023-09-02 - - lrucaching # failure in job https://hydra.nixos.org/build/307520156 at 2025-09-19 - lscabal # failure in job https://hydra.nixos.org/build/233253536 at 2023-09-02 - lsfrom # failure in job https://hydra.nixos.org/build/233211705 at 2023-09-02 - lsh # failure in job https://hydra.nixos.org/build/233256686 at 2023-09-02 @@ -3924,7 +3918,6 @@ broken-packages: - make-hard-links # failure in job https://hydra.nixos.org/build/233213014 at 2023-09-02 - make-monofoldable-foldable # failure in job https://hydra.nixos.org/build/233235683 at 2023-09-02 - makedo # failure in job https://hydra.nixos.org/build/233244893 at 2023-09-02 - - makefile # failure in job https://hydra.nixos.org/build/233207515 at 2023-09-02 - mallard # failure in job https://hydra.nixos.org/build/233208248 at 2023-09-02 - mandulia # failure in job https://hydra.nixos.org/build/234446158 at 2023-09-13 - manifolds # failure in job https://hydra.nixos.org/build/233244103 at 2023-09-02 @@ -4057,6 +4050,7 @@ broken-packages: - minilens # failure in job https://hydra.nixos.org/build/233191347 at 2023-09-02 - minions # failure in job https://hydra.nixos.org/build/233246840 at 2023-09-02 - miniplex # failure in job https://hydra.nixos.org/build/233241976 at 2023-09-02 + - minisat-solver # failure in job https://hydra.nixos.org/build/318375250 at 2026-01-10 - ministg # failure in job https://hydra.nixos.org/build/233214109 at 2023-09-02 - minizinc-process # failure in job https://hydra.nixos.org/build/233211497 at 2023-09-02 - minst-idx # failure in job https://hydra.nixos.org/build/233259901 at 2023-09-02 @@ -4174,7 +4168,6 @@ broken-packages: - morfeusz # failure in job https://hydra.nixos.org/build/233232351 at 2023-09-02 - morloc # failure in job https://hydra.nixos.org/build/295095489 at 2025-04-22 - morpheus-graphql-cli # failure in job https://hydra.nixos.org/build/233249063 at 2023-09-02 - - morpheus-graphql-code-gen # failure in job https://hydra.nixos.org/build/307611107 at 2025-09-19 - morphisms-functors # failure in job https://hydra.nixos.org/build/233255311 at 2023-09-02 - morphisms-objects # failure in job https://hydra.nixos.org/build/233216076 at 2023-09-02 - morte # failure in job https://hydra.nixos.org/build/233212193 at 2023-09-02 @@ -4524,7 +4517,6 @@ broken-packages: - optional # failure in job https://hydra.nixos.org/build/233241818 at 2023-09-02 - options-time # failure in job https://hydra.nixos.org/build/233194289 at 2023-09-02 - optparse-applicative-simple # failure in job https://hydra.nixos.org/build/233236802 at 2023-09-02 - - optparse-declarative # failure in job https://hydra.nixos.org/build/252718969 at 2024-03-16 - optparse-helper # failure in job https://hydra.nixos.org/build/233248522 at 2023-09-02 - optstream # failure in job https://hydra.nixos.org/build/233200326 at 2023-09-02 - opus # failure in job https://hydra.nixos.org/build/295095855 at 2025-04-22 @@ -4593,7 +4585,6 @@ broken-packages: - pandoc-dhall-decoder # failure in job https://hydra.nixos.org/build/307611186 at 2025-09-19 - pandoc-emphasize-code # failure in job https://hydra.nixos.org/build/252733347 at 2024-03-16 - pandoc-filter-graphviz # failure in job https://hydra.nixos.org/build/233233372 at 2023-09-02 - - pandoc-filter-indent # failure in job https://hydra.nixos.org/build/233235439 at 2023-09-02 - pandoc-include # failure in job https://hydra.nixos.org/build/233199152 at 2023-09-02 - pandoc-include-code # failure in job https://hydra.nixos.org/build/252710408 at 2024-03-16 - pandoc-include-plus # failure in job https://hydra.nixos.org/build/233198059 at 2023-09-02 @@ -4684,6 +4675,7 @@ broken-packages: - path-sing # failure in job https://hydra.nixos.org/build/237234354 at 2023-10-21 - path-text-utf8 # failure in job https://hydra.nixos.org/build/295095981 at 2025-04-22 - Pathfinder # failure in job https://hydra.nixos.org/build/233236573 at 2023-09-02 + - pathfindingcore # failure in job https://hydra.nixos.org/build/316401210 at 2025-12-19 - paths # failure in job https://hydra.nixos.org/build/252731256 at 2024-03-16 - PathTree # failure in job https://hydra.nixos.org/build/233216203 at 2023-09-02 - patronscraper # failure in job https://hydra.nixos.org/build/233258571 at 2023-09-02 @@ -4972,7 +4964,6 @@ broken-packages: - powerpc # failure in job https://hydra.nixos.org/build/233217983 at 2023-09-02 - powerqueue-levelmem # failure in job https://hydra.nixos.org/build/233232882 at 2023-09-02 - ppad-aead # failure in job https://hydra.nixos.org/build/295096231 at 2025-04-22 - - ppad-script # failure in job https://hydra.nixos.org/build/295096199 at 2025-04-22 - ppad-sha256 # failure in job https://hydra.nixos.org/build/276377736 at 2024-11-06 - ppad-sha512 # failure in job https://hydra.nixos.org/build/276375868 at 2024-11-06 - pprecord # failure in job https://hydra.nixos.org/build/233198838 at 2023-09-02 @@ -5303,7 +5294,6 @@ broken-packages: - reflex-orphans # failure in job https://hydra.nixos.org/build/233249128 at 2023-09-02 - reflex-sdl2 # failure in job https://hydra.nixos.org/build/307521569 at 2025-09-19 - reflex-transformers # failure in job https://hydra.nixos.org/build/233243647 at 2023-09-02 - - reflex-vty # failure in job https://hydra.nixos.org/build/295096544 at 2025-04-22 - reform-blaze # failure in job https://hydra.nixos.org/build/309816655 at 2025-10-15 - reform-hamlet # failure in job https://hydra.nixos.org/build/233230013 at 2023-09-02 - reform-hsp # failure in job https://hydra.nixos.org/build/233228737 at 2023-09-02 @@ -5392,7 +5382,6 @@ broken-packages: - rethinkdb-client-driver # failure in job https://hydra.nixos.org/build/233216583 at 2023-09-02 - retrie # failure in job https://hydra.nixos.org/build/307521572 at 2025-09-19 - retroclash-lib # failure in job https://hydra.nixos.org/build/295096644 at 2025-04-22 - - retry-effectful # failure in job https://hydra.nixos.org/build/295096646 at 2025-04-22 - retryer # failure in job https://hydra.nixos.org/build/233193427 at 2023-09-02 - reverse-geocoding # failure in job https://hydra.nixos.org/build/233238347 at 2023-09-02 - reverse-list # failure in job https://hydra.nixos.org/build/233192931 at 2023-09-02 @@ -5537,7 +5526,6 @@ broken-packages: - scotty-format # failure in job https://hydra.nixos.org/build/233249643 at 2023-09-02 - scotty-haxl # failure in job https://hydra.nixos.org/build/311055399 at 2025-11-02 - scotty-path-normalizer # failure in job https://hydra.nixos.org/build/252738625 at 2024-03-16 - - scotty-resource # failure in job https://hydra.nixos.org/build/233258457 at 2023-09-02 - scotty-rest # failure in job https://hydra.nixos.org/build/233209040 at 2023-09-02 - scotty-session # failure in job https://hydra.nixos.org/build/233258736 at 2023-09-02 - scotty-utils # failure in job https://hydra.nixos.org/build/252727834 at 2024-03-16 @@ -5637,7 +5625,6 @@ broken-packages: - servant-pandoc # failure in job https://hydra.nixos.org/build/233203008 at 2023-09-02 - servant-polysemy # failure in job https://hydra.nixos.org/build/233218670 at 2023-09-02 - servant-pool # failure in job https://hydra.nixos.org/build/233208935 at 2023-09-02 - - servant-prometheus # failure in job https://hydra.nixos.org/build/236685165 at 2023-10-04 - servant-proto-lens # failure in job https://hydra.nixos.org/build/252736298 at 2024-03-16 - servant-purescript # failure in job https://hydra.nixos.org/build/233598080 at 2023-09-02 - servant-py # failure in job https://hydra.nixos.org/build/233598104 at 2023-09-02 @@ -5958,7 +5945,7 @@ broken-packages: - sqlcipher # failure in job https://hydra.nixos.org/build/233259217 at 2023-09-02 - sqlcli # failure in job https://hydra.nixos.org/build/252719841 at 2024-03-16 - sqlite # failure in job https://hydra.nixos.org/build/233215839 at 2023-09-02 - - sqlite-easy # failure in job https://hydra.nixos.org/build/315099889 at 2025-11-29 + - sqlite-easy # failure in job https://hydra.nixos.org/build/318377025 at 2026-01-10 - sqlite-simple-errors # failure in job https://hydra.nixos.org/build/233232977 at 2023-09-02 - sqlvalue-list # failure in job https://hydra.nixos.org/build/233197313 at 2023-09-02 - sqsd-local # failure in updateAutotoolsGnuConfigScriptsPhase in job https://hydra.nixos.org/build/237237046 at 2023-10-21 @@ -6345,6 +6332,7 @@ broken-packages: - streamproc # failure in job https://hydra.nixos.org/build/233196179 at 2023-09-02 - streamt # failure in job https://hydra.nixos.org/build/252724093 at 2024-03-16 - strelka-core # failure in job https://hydra.nixos.org/build/233218594 at 2023-09-02 + - strict-checked-vars # failure in job https://hydra.nixos.org/build/316128155 at 2025-12-19 - strict-containers # failure in job https://hydra.nixos.org/build/307522197 at 2025-09-19 - strict-ghc-plugin # failure in job https://hydra.nixos.org/build/233246830 at 2023-09-02 - strict-io # failure in job https://hydra.nixos.org/build/295097302 at 2025-04-22 @@ -6380,6 +6368,7 @@ broken-packages: - subleq-toolchain # failure in job https://hydra.nixos.org/build/233239415 at 2023-09-02 - submark # failure in job https://hydra.nixos.org/build/233231701 at 2023-09-02 - subsample # failure in job https://hydra.nixos.org/build/233201324 at 2023-09-02 + - substrate-protocol # failure in job https://hydra.nixos.org/build/318377131 at 2026-01-09 - subwordgraph # failure in job https://hydra.nixos.org/build/233229131 at 2023-09-02 - success # failure in job https://hydra.nixos.org/build/252718360 at 2024-03-16 - successors # failure in job https://hydra.nixos.org/build/295097331 at 2025-04-22 @@ -6421,7 +6410,6 @@ broken-packages: - swagger-test # failure in job https://hydra.nixos.org/build/233231958 at 2023-09-02 - swarm # failure in job https://hydra.nixos.org/build/233201687 at 2023-09-02 - swearjure # failure in job https://hydra.nixos.org/build/233231407 at 2023-09-02 - - sweet-egison # failure in job https://hydra.nixos.org/build/295097344 at 2025-04-22 - swf # failure in job https://hydra.nixos.org/build/233191062 at 2023-09-02 - swift-lda # failure in job https://hydra.nixos.org/build/233252608 at 2023-09-02 - swiss # failure in job https://hydra.nixos.org/build/233251942 at 2023-09-02 @@ -6646,7 +6634,6 @@ broken-packages: - thock # failure in job https://hydra.nixos.org/build/233256198 at 2023-09-02 - thorn # failure in job https://hydra.nixos.org/build/233242024 at 2023-09-02 - threadmanager # failure in job https://hydra.nixos.org/build/233230492 at 2023-09-02 - - threads-supervisor # failure in job https://hydra.nixos.org/build/315100613 at 2025-11-29 - threepenny-editors # failure in job https://hydra.nixos.org/build/233248820 at 2023-09-02 - threepenny-gui-contextmenu # failure in job https://hydra.nixos.org/build/233242035 at 2023-09-02 - threepenny-gui-flexbox # failure in job https://hydra.nixos.org/build/233213545 at 2023-09-02 @@ -6868,6 +6855,7 @@ broken-packages: - typed-encoding # failure in job https://hydra.nixos.org/build/233208093 at 2023-09-02 - typed-gui # failure in job https://hydra.nixos.org/build/309817848 at 2025-10-15 - typed-process-effectful # failure in job https://hydra.nixos.org/build/236684332 at 2023-10-04 + - typed-protocols # failure in job https://hydra.nixos.org/build/316128170 at 2025-12-19 - typed-protocols-doc # failure in job https://hydra.nixos.org/build/311460024 at 2025-11-02 - typed-session # failure in job https://hydra.nixos.org/build/270089993 at 2024-08-31 - typed-session-state-algorithm # failure in job https://hydra.nixos.org/build/273462641 at 2024-10-01 @@ -6976,7 +6964,6 @@ broken-packages: - uri-encoder # failure in job https://hydra.nixos.org/build/233228287 at 2023-09-02 - uri-parse # failure in job https://hydra.nixos.org/build/233258573 at 2023-09-02 - uri-template # failure in job https://hydra.nixos.org/build/233243696 at 2023-09-02 - - uri-templater # failure in job https://hydra.nixos.org/build/233231885 at 2023-09-02 - url-bytes # failure in job https://hydra.nixos.org/build/233226116 at 2023-09-02 - url-decoders # failure in job https://hydra.nixos.org/build/233245312 at 2023-09-02 - url-generic # failure in job https://hydra.nixos.org/build/233221641 at 2023-09-02 @@ -7064,6 +7051,7 @@ broken-packages: - vhd # failure in job https://hydra.nixos.org/build/233230229 at 2023-09-02 - vhdl # failure in job https://hydra.nixos.org/build/233244814 at 2023-09-02 - vicinity # failure in job https://hydra.nixos.org/build/233240251 at 2023-09-02 + - ViennaRNA-bindings # failure in job https://hydra.nixos.org/build/318371301 at 2026-01-10 - viewprof # failure in job https://hydra.nixos.org/build/233257842 at 2023-09-02 - views # failure in job https://hydra.nixos.org/build/233203371 at 2023-09-02 - vikunja-api # failure in job https://hydra.nixos.org/build/295098092 at 2025-04-22 @@ -7136,7 +7124,6 @@ broken-packages: - wai-session-redis # failure in job https://hydra.nixos.org/build/233218737 at 2023-09-02 - wai-static-cache # failure in job https://hydra.nixos.org/build/233228597 at 2023-09-02 - wai-throttler # failure in job https://hydra.nixos.org/build/233231002 at 2023-09-02 - - wai-token-bucket-ratelimiter # failure in job https://hydra.nixos.org/build/315101114 at 2025-11-29 - waitfree # failure in job https://hydra.nixos.org/build/233222583 at 2023-09-02 - waitra # failure in job https://hydra.nixos.org/build/233222291 at 2023-09-02 - wakame # failure in job https://hydra.nixos.org/build/233254673 at 2023-09-02 @@ -7146,6 +7133,7 @@ broken-packages: - warp-static # failure in job https://hydra.nixos.org/build/233239581 at 2023-09-02 - warp-tls-simple # failure in job https://hydra.nixos.org/build/309818122 at 2025-10-15 - warp-tls-uid # failure in job https://hydra.nixos.org/build/252725883 at 2024-03-16 + - warpZ # failure in job https://hydra.nixos.org/build/316128181 at 2025-12-19 - wasm # failure in job https://hydra.nixos.org/build/233249877 at 2023-09-02 - watcher # failure in job https://hydra.nixos.org/build/233245056 at 2023-09-02 - watchit # failure in job https://hydra.nixos.org/build/233199573 at 2023-09-02 @@ -7179,6 +7167,7 @@ broken-packages: - webdriver-snoy # failure in job https://hydra.nixos.org/build/233251068 at 2023-09-02 - WeberLogic # failure in job https://hydra.nixos.org/build/233209283 at 2023-09-02 - webfinger-client # failure in job https://hydra.nixos.org/build/233252528 at 2023-09-02 + - webgpu-dawn # failure in job https://hydra.nixos.org/build/317098527 at 2025-12-27 - webkit # failure in job https://hydra.nixos.org/build/307523072 at 2025-09-19 - webkit-javascriptcore # failure in job https://hydra.nixos.org/build/233208424 at 2023-09-02 - webkitgtk3 # failure in job https://hydra.nixos.org/build/233215712 at 2023-09-02 @@ -7397,7 +7386,6 @@ broken-packages: - yesod-content-pdf # failure in job https://hydra.nixos.org/build/233210723 at 2023-09-02 - yesod-crud # failure in job https://hydra.nixos.org/build/233218383 at 2023-09-02 - yesod-crud-persist # failure in job https://hydra.nixos.org/build/233245131 at 2023-09-02 - - yesod-csp # failure in job https://hydra.nixos.org/build/307611592 at 2025-09-19 - yesod-datatables # failure in job https://hydra.nixos.org/build/233197763 at 2023-09-02 - yesod-dsl # failure in job https://hydra.nixos.org/build/233210879 at 2023-09-02 - yesod-fast-devel # failure in job https://hydra.nixos.org/build/233209381 at 2023-09-02 diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml index 33fcd5134f124..3582699b0b100 100644 --- a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml +++ b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml @@ -26,6 +26,8 @@ # keep-sorted start skip_lines=1 case=no numeric=yes default-package-overrides: - chs-cabal == 0.1.1.2 # matches Cabal 3.12 (GHC 9.10) + # 2025-12-26: Needs to match egison-pattern-src from Stackage LTS + - egison-pattern-src-th-mode < 0.2.2 - extensions == 0.1.0.2 # matches Cabal 3.12 (GHC 9.10) # 2025-09-13: hnix 0.17.0 doesn't support hnix-store-core >= 0.8 # https://github.com/haskell-nix/hnix/pull/1112 @@ -43,6 +45,8 @@ default-package-overrides: # We currently use pandoc-crossref with a patch to revert it to pandoc == 3.7.*, # this no longer works with later versions. - pandoc-crossref == 0.3.21 + # 2025-12-19: Needs to match Stackage version of rhine + - rhine-bayes < 1.6 # keep-sorted end # keep-sorted start skip_lines=1 case=no numeric=yes @@ -69,6 +73,7 @@ extra-packages: - ghc-exactprint == 1.9.* # 2024-08-27: needed for GHC == 9.10 - ghc-exactprint == 1.12.* # 2025-10-15: needed for GHC == 9.12 - ghc-lib == 9.6.* # 2022-02-17: preserve for GHC 9.4 + - ghc-lib == 9.8.* # 2025-12-11: preserve for GHC 9.6, 9.8 - ghc-lib == 9.10.* # 2024-12-30: preserve for GHC 9.10/ghc-tags 1.9 - ghc-lib-parser == 9.6.* # 2024-05-19: preserve for GHC 9.4 - ghc-lib-parser == 9.8.* # 2024-12-26: preserve for GHC 9.6, 9.8 @@ -108,30 +113,13 @@ extra-packages: # keep-sorted start skip_lines=1 case=no package-maintainers: alexfmpe: - - aeson-gadt-th - - android-activity - basic-sop - - bytestring-aeson-orphans - - cli-extras - - cli-git - - cli-nix - commutative-semigroups - - constraints-extras - - dependent-map - - dependent-monoidal-map - - dependent-sum - - dependent-sum-aeson-orphans - - dependent-sum-template - - gargoyle - - gargoyle-postgresql - - gargoyle-postgresql-connect - - gargoyle-postgresql-nix - generics-sop - ghcjs-base - ghcjs-dom - ghcjs-dom-javascript - ghcjs-dom-jsaddle - - haveibeenpwned - jsaddle - jsaddle-clib - jsaddle-dom @@ -142,25 +130,15 @@ package-maintainers: - large-records - lens-sop - linux-namespaces - - monoid-map - monoidal-containers - - nix-thunk - - patch - proto-lens-arbitrary - proto3-suite - proto3-wire - records-sop - - reflex - - reflex-dom - - reflex-dom-core - - reflex-gadt-api - - reflex-fsnotify - th-abstraction - universe - universe-some - - vessel - warp - - which Anton-Latukha: - hnix - hnix-store-core diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml index 61bf170d412ee..589d0d5fca3b9 100644 --- a/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml +++ b/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml @@ -1,4 +1,4 @@ -# Stackage LTS 24.21 +# Stackage LTS 24.26 # This file is auto-generated by # maintainers/scripts/haskell/update-stackage.sh default-package-overrides: @@ -15,7 +15,7 @@ default-package-overrides: - ad-delcont ==0.5.0.0 - adjunctions ==4.4.3 - adler32 ==0.1.2.0 - - advent-of-code-api ==0.2.9.1 + - advent-of-code-api ==0.2.11.0 - aern2-mp ==0.2.16.1 - aern2-real ==0.2.16.1 - aeson ==2.2.3.0 @@ -52,7 +52,7 @@ default-package-overrides: - almost-fix ==0.0.2 - alsa-core ==0.5.0.1 - alsa-mixer ==0.3.0.1 - - alsa-pcm ==0.6.1.1 + - alsa-pcm ==0.6.1.2 - alsa-seq ==0.6.0.10 - alternative-vector ==0.0.0 - alternators ==1.0.0.0 @@ -61,7 +61,7 @@ default-package-overrides: - amqp-utils ==0.6.7.3 - annotated-exception ==0.3.0.4 - annotated-wl-pprint ==0.7.0 - - ansi-terminal ==1.1.3 + - ansi-terminal ==1.1.5 - ansi-terminal-game ==1.9.3.0 - ansi-terminal-types ==1.1.3 - ansi-wl-pprint ==1.0.2 @@ -548,7 +548,7 @@ default-package-overrides: - data-accessor ==0.2.3.1 - data-accessor-mtl ==0.2.0.5 - data-accessor-transformers ==0.2.1.8 - - data-array-byte ==0.1.0.1 + - data-array-byte ==0.1.0.2 - data-binary-ieee754 ==0.4.4 - data-bword ==0.1.0.2 - data-checked ==0.3 @@ -629,7 +629,7 @@ default-package-overrides: - diagrams-contrib ==1.4.6 - diagrams-core ==1.5.1.1 - diagrams-gtk ==1.4 - - diagrams-lib ==1.5.0.1 + - diagrams-lib ==1.5.1 - diagrams-postscript ==1.5.3 - diagrams-rasterific ==1.5 - diagrams-solve ==0.1.3.1 @@ -665,7 +665,7 @@ default-package-overrides: - distribution-opensuse ==1.1.4 - distributive ==0.6.2.1 - djinn-lib ==0.0.1.4 - - djot ==0.1.2.3 + - djot ==0.1.2.4 - dl-fedora ==2.0.1 - dlist ==1.0 - dlist-instances ==0.1.1.1 @@ -850,7 +850,7 @@ default-package-overrides: - filtrable ==0.1.6.0 - fin ==0.3.2 - FindBin ==0.0.5 - - fingertree ==0.1.6.2 + - fingertree ==0.1.6.3 - finite-typelits ==0.2.1.0 - first-class-families ==0.8.2.0 - fits-parse ==0.4.2 @@ -910,7 +910,7 @@ default-package-overrides: - function-builder ==0.3.0.1 - functor-combinators ==0.4.1.4 - functor-products ==0.1.2.2 - - fused-effects ==1.1.2.5 + - fused-effects ==1.1.2.6 - fusion-plugin ==0.2.7 - fusion-plugin-types ==0.1.0 - fuzzcheck ==0.1.1 @@ -942,7 +942,7 @@ default-package-overrides: - generic-type-functions ==0.1.0 - generically ==0.1.1 - GenericPretty ==1.2.2 - - generics-eot ==0.4.0.1 + - generics-eot ==0.4.1.0 - generics-sop ==0.5.1.4 - generics-sop-lens ==0.2.1 - genvalidity ==1.1.1.0 @@ -966,7 +966,7 @@ default-package-overrides: - genvalidity-persistent ==1.0.0.2 - genvalidity-property ==1.0.0.0 - genvalidity-scientific ==1.0.0.0 - - genvalidity-sydtest ==1.0.0.0 + - genvalidity-sydtest ==1.0.1.0 - genvalidity-sydtest-aeson ==1.0.0.0 - genvalidity-sydtest-hashable ==1.0.0.1 - genvalidity-sydtest-lens ==1.0.0.0 @@ -1158,7 +1158,7 @@ default-package-overrides: - gogol-youtube-reporting ==1.0.0 - goldplate ==0.2.2.1 - google-isbn ==1.0.3 - - google-oauth2-jwt ==0.3.3.1 + - google-oauth2-jwt ==0.3.3.2 - gopher-proxy ==0.1.1.3 - gpolyline ==0.1.0.1 - graph-core ==0.3.0.0 @@ -1289,7 +1289,7 @@ default-package-overrides: - hledger-stockquotes ==0.1.3.2 - hlibcpuid ==0.2.0 - hlibgit2 ==0.18.0.16 - - hlibsass ==0.1.10.1 + - hlibsass ==0.1.10.3 - hlint ==3.10 - hmatrix ==0.20.2 - hmatrix-backprop ==0.1.3.0 @@ -1361,13 +1361,13 @@ default-package-overrides: - hsndfile-vector ==0.5.2 - HsOpenSSL ==0.11.7.9 - HsOpenSSL-x509-system ==0.1.0.4 - - hspec ==2.11.14 - - hspec-api ==2.11.14 + - hspec ==2.11.16 + - hspec-api ==2.11.16 - hspec-attoparsec ==0.1.0.2 - hspec-checkers ==0.1.0.2 - hspec-contrib ==0.5.2 - - hspec-core ==2.11.14 - - hspec-discover ==2.11.14 + - hspec-core ==2.11.16 + - hspec-discover ==2.11.16 - hspec-expectations ==0.8.4 - hspec-expectations-json ==1.0.2.1 - hspec-expectations-lifted ==0.10.0 @@ -1378,7 +1378,7 @@ default-package-overrides: - hspec-junit-formatter ==1.1.2.1 - hspec-leancheck ==0.0.6 - hspec-megaparsec ==2.2.1 - - hspec-meta ==2.11.14 + - hspec-meta ==2.11.16 - hspec-need-env ==0.1.0.12 - hspec-parsec ==0 - hspec-smallcheck ==0.5.3 @@ -1488,7 +1488,7 @@ default-package-overrides: - indexed-traversable-instances ==0.1.2 - inf-backprop ==0.1.1.0 - infer-license ==0.2.0 - - infinite-list ==0.1.2 + - infinite-list ==0.1.3 - influxdb ==1.9.3.2 - ini ==0.4.2 - inj ==1.0 @@ -1501,7 +1501,7 @@ default-package-overrides: - int-supply ==1.0.0 - integer-conversion ==0.1.1 - integer-logarithms ==1.0.4 - - integer-roots ==1.0.3.0 + - integer-roots ==1.0.4.0 - integration ==0.2.1 - intermediate-structures ==0.1.2.0 - intern ==0.9.6 @@ -1593,7 +1593,7 @@ default-package-overrides: - kmeans ==0.1.3 - knob ==0.2.2 - koji ==0.0.2 - - koji-tool ==1.3 + - koji-tool ==1.3.1 - kvitable ==1.1.1.0 - labels ==0.3.3 - lackey ==2.0.0.11 @@ -1603,7 +1603,7 @@ default-package-overrides: - lame ==0.2.2 - language-avro ==0.1.4.0 - language-bash ==0.11.1 - - language-c ==0.10.0 + - language-c ==0.10.1 - language-c-quote ==0.13.0.2 - language-c99 ==0.2.0 - language-c99-simple ==0.3.0 @@ -1730,7 +1730,7 @@ default-package-overrides: - manifolds-core ==0.6.1.1 - Mantissa ==0.1.0.0 - map-syntax ==0.3 - - mappings ==0.3.2.0 + - mappings ==0.3.3.0 - markdown ==0.1.17.5 - markdown-unlit ==0.6.0 - markov-chain ==0.0.3.4 @@ -1876,12 +1876,12 @@ default-package-overrides: - monoidmap-internal ==0.0.0.1 - monoidmap-quickcheck ==0.0.0.3 - more-containers ==0.2.2.2 - - morpheus-graphql-app ==0.28.1 - - morpheus-graphql-client ==0.28.1 - - morpheus-graphql-code-gen-utils ==0.28.1 - - morpheus-graphql-core ==0.28.1 - - morpheus-graphql-server ==0.28.1 - - morpheus-graphql-subscriptions ==0.28.1 + - morpheus-graphql-app ==0.28.2 + - morpheus-graphql-client ==0.28.2 + - morpheus-graphql-code-gen-utils ==0.28.2 + - morpheus-graphql-core ==0.28.2 + - morpheus-graphql-server ==0.28.2 + - morpheus-graphql-subscriptions ==0.28.2 - moss ==0.2.0.1 - mountpoints ==1.0.2 - mpi-hs ==0.7.3.1 @@ -1958,7 +1958,7 @@ default-package-overrides: - network-uri ==2.6.4.2 - network-uri-template ==0.1.1.4 - network-wait ==0.2.0.0 - - newtype ==0.2.2.0 + - newtype ==0.2.2.1 - newtype-generics ==0.6.2 - nfc ==0.1.1 - nicify-lib ==1.0.1 @@ -2123,7 +2123,7 @@ default-package-overrides: - pcre-heavy ==1.0.0.4 - pcre-light ==0.4.1.3 - pcre-utils ==0.1.9 - - pcre2 ==2.2.2 + - pcre2 ==2.2.3 - pdc ==0.1.1 - pdf-toolbox-content ==0.1.2 - pdf-toolbox-core ==0.1.3 @@ -2149,7 +2149,7 @@ default-package-overrides: - persistent-redis ==2.13.0.2 - persistent-sqlite ==2.13.3.1 - persistent-template ==2.12.0.0 - - persistent-test ==2.13.2.0 + - persistent-test ==2.13.2.1 - persistent-typed-db ==0.1.0.7 - pg-harness-client ==0.6.0 - pg-transact ==0.3.2.0 @@ -2277,7 +2277,7 @@ default-package-overrides: - pseudo-boolean ==0.1.12.0 - psql-helpers ==0.1.0.0 - PSQueue ==1.2.2 - - psqueues ==0.2.8.2 + - psqueues ==0.2.8.3 - pthread ==0.2.1 - ptr ==0.16.8.7 - ptr-poker ==0.1.2.16 @@ -2288,7 +2288,7 @@ default-package-overrides: - pusher-http-haskell ==2.1.0.21 - pvar ==1.0.0.0 - pwstore-fast ==2.4.4 - - PyF ==0.11.4.0 + - PyF ==0.11.5.0 - qchas ==1.1.0.1 - quaalude ==0.0.0.1 - quadratic-irrational ==0.1.2 @@ -2365,7 +2365,7 @@ default-package-overrides: - rebase ==1.21.2 - rec-def ==0.2.2 - record-hasfield ==1.0.1 - - recover-rtti ==0.5.1 + - recover-rtti ==0.5.2 - recursion-schemes ==5.2.3 - recv ==0.1.1 - redact ==0.6.0.0 @@ -2757,7 +2757,7 @@ default-package-overrides: - string-qq ==0.0.6 - string-random ==0.1.4.5 - string-transform ==1.1.1 - - string-variants ==0.3.1.1 + - string-variants ==0.3.1.3 - stringable ==0.1.3 - stringbuilder ==0.5.1 - stringprep ==1.0.0 @@ -2854,7 +2854,7 @@ default-package-overrides: - tasty-rerun ==1.1.20 - tasty-silver ==3.3.2.1 - tasty-smallcheck ==0.8.2 - - tasty-sugar ==2.2.3.1 + - tasty-sugar ==2.2.3.2 - tasty-tap ==0.1.0 - tasty-th ==0.1.7 - tasty-wai ==0.1.2.0 @@ -2874,7 +2874,7 @@ default-package-overrides: - tensort ==1.1.0.0 - termbox ==2.0.0.2 - termbox-banana ==2.0.0.1 - - termbox-bindings-c ==0.1.0.2 + - termbox-bindings-c ==0.1.0.3 - termbox-bindings-hs ==1.0.0.1 - termbox-tea ==1.0.0.1 - terminal ==0.2.0.0 @@ -2984,7 +2984,7 @@ default-package-overrides: - tmp-proc-redis ==0.7.2.4 - token-bucket ==0.1.0.1 - tokenize ==0.3.0.1 - - toml-parser ==2.0.1.2 + - toml-parser ==2.0.2.0 - toml-reader ==0.3.0.0 - toml-reader-parse ==0.1.1.1 - tomland ==1.3.3.3 @@ -3136,7 +3136,7 @@ default-package-overrides: - valor ==1.0.0.0 - vary ==0.1.1.3 - varying ==0.8.1.0 - - vault ==0.3.1.5 + - vault ==0.3.1.6 - vcr ==0.1.0 - vcs-ignore ==0.0.2.0 - vec ==0.5.1 @@ -3170,7 +3170,7 @@ default-package-overrides: - Vis ==1.0.0 - vivid-osc ==0.5.0.0 - vivid-supercollider ==0.4.1.2 - - void ==0.7.3 + - void ==0.7.4 - vty ==6.4 - vty-crossplatform ==0.4.0.0 - vty-unix ==0.2.0.0 @@ -3250,7 +3250,7 @@ default-package-overrides: - wl-pprint ==1.2.1 - wl-pprint-annotated ==0.1.0.1 - wl-pprint-text ==1.2.0.2 - - wled-json ==0.1.0.1 + - wled-json ==0.1.0.2 - word-compat ==0.0.6 - word-trie ==0.3.0 - word-wrap ==0.5 @@ -3275,8 +3275,8 @@ default-package-overrides: - xlsx ==1.1.4 - xml ==1.3.14 - xml-basic ==0.1.3.3 - - xml-conduit ==1.10.0.1 - - xml-hamlet ==0.5.0.2 + - xml-conduit ==1.10.1.0 + - xml-hamlet ==0.5.0.3 - xml-helpers ==1.0.0 - xml-html-qq ==0.1.0.1 - xml-indexed-cursor ==0.1.1.0 @@ -3291,7 +3291,7 @@ default-package-overrides: - xmlhtml ==0.2.5.4 - xmonad ==0.18.0 - xmonad-contrib ==0.18.1 - - xor ==0.0.1.3 + - xor ==0.0.1.4 - xss-sanitize ==0.3.7.2 - xxhash-ffi ==0.3.1 - yaml ==0.11.11.2 diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml index 4dccc8e71d5e6..1e8b91f66da8e 100644 --- a/pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml +++ b/pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml @@ -4,7 +4,6 @@ # depend on a dependency marked as broken. dont-distribute-packages: - - 4Blocks - a50 - abcBridge - AbortT-monadstf @@ -421,9 +420,6 @@ dont-distribute-packages: - cfopu - chainweb-mining-client - chalkboard-viewer - - changeset-containers - - changeset-lens - - changeset-reflex - chapelure - charade - chart-cli @@ -459,8 +455,6 @@ dont-distribute-packages: - claferIG - claferwiki - clash - - clash-ghc - - clash-shake - classify-frog - classy-effects - classy-effects-th @@ -774,7 +768,7 @@ dont-distribute-packages: - distribution-plot - dixi - dl-fedora - - dl-fedora_2_1_1 + - dl-fedora_2_2 - dmenu-pkill - dmenu-pmount - dmenu-search @@ -842,9 +836,6 @@ dont-distribute-packages: - effect-monad - effective-aspects-mzv - effects-parser - - egison - - egison-quote - - egison-tutorial - ekg-carbon - elasticsearch-interchange - electrs-client @@ -903,6 +894,13 @@ dont-distribute-packages: - eventful-sql-common - eventful-sqlite - eventful-test-helpers + - eventium-core + - eventium-memory + - eventium-postgresql + - eventium-sql-common + - eventium-sqlite + - eventium-test-helpers + - eventlog-live-otelcol - EventSocket - eventsource-geteventstore-store - eventsource-store-specs @@ -1121,7 +1119,6 @@ dont-distribute-packages: - geolite-csv - geomancy-layout - getemx - - ghc-debugger - ghc-dump-util - ghc-imported-from - ghc-instances @@ -1214,6 +1211,7 @@ dont-distribute-packages: - grapefruit-records - grapefruit-ui - grapefruit-ui-gtk + - grapesy - grapesy-etcd - graph-rewriting-cl - graph-rewriting-gl @@ -1229,7 +1227,6 @@ dont-distribute-packages: - graphicsFormats - graphicstools - graphtype - - graphula - greencard-lib - grid-proto - gridbounds @@ -1362,6 +1359,8 @@ dont-distribute-packages: - haskell-ftp - haskell-lsp - haskell-lsp-client + - haskell-opentimestamps + - haskell-opentimestamps-client - haskell-pdf-presenter - haskell-platform-test - haskell-reflect @@ -1526,7 +1525,6 @@ dont-distribute-packages: - hgeometry-ipe - hgeometry-svg - hgithub - - hgraph - hiccup - hie-core - hierarchical-clustering-diagrams @@ -1711,7 +1709,6 @@ dont-distribute-packages: - hsyslog-tcp - HTab - html-kure - - html2hamlet - htoml-parse - htsn-import - http-client-auth @@ -1838,7 +1835,6 @@ dont-distribute-packages: - instrument-cloudwatch - integreat - intel-aes - - intelli-monad - interpolatedstring-qq - interpolatedstring-qq-mwotton - intro-prelude @@ -2015,7 +2011,6 @@ dont-distribute-packages: - LambdaShell - lambdaya-bus - lambdiff - - lame-tester - landlock - lang - language-ats @@ -2075,7 +2070,6 @@ dont-distribute-packages: - libmolude - libraft - librarian - - librato - libxml-enumerator - lifted-base-tf - lightning-haskell @@ -2147,7 +2141,6 @@ dont-distribute-packages: - lostcities - loup - LPPaver - - lrucaching-haxl - ls-usb - LslPlus - lsm-tree @@ -2313,7 +2306,6 @@ dont-distribute-packages: - morley-client - morley-prelude - morley-upgradeable - - morpheus-graphql - morphisms-functors-inventory - motor - motor-diagrams @@ -2572,7 +2564,6 @@ dont-distribute-packages: - partage - partial-semigroup-test - passman-cli - - pathfindingcore - patterns - paypal-rest-client - pcap-enumerator @@ -2605,7 +2596,7 @@ dont-distribute-packages: - persistent-hssqlppp - persistent-iproute - persistent-map - - persistent-postgresql_2_14_0_0 + - persistent-postgresql_2_14_2_0 - persistent-protobuf - persona-idp - peyotls @@ -2810,6 +2801,7 @@ dont-distribute-packages: - queryparser-presto - queryparser-vertica - queuelike + - quic-simple - quick-process - quickcheck-poly - quickcheck-regex @@ -2891,12 +2883,10 @@ dont-distribute-packages: - refh - reflex-animation - reflex-backend-wai - - reflex-ghci - reflex-gloss-scene - reflex-libtelnet - reflex-localize - reflex-monad-auth - - reflex-process - refractor - refurb - reg-alloc-graph-color @@ -3000,7 +2990,6 @@ dont-distribute-packages: - roshask - rosmsg-bin - rounded - - rounded-hw - roundtrip-xml - route-generator - route-planning @@ -3378,6 +3367,7 @@ dont-distribute-packages: - stunts - stutter - subhask + - substrate-synapse - substring-parser - sugar-data - sugar-json @@ -3404,6 +3394,7 @@ dont-distribute-packages: - sydtest-amqp - sydtest-webdriver-screenshot - sydtest-webdriver-yesod + - sydtest-webdriver-yesod_0_0_1_0 - sylvia - symantic-atom - symantic-http-demo @@ -3727,6 +3718,7 @@ dont-distribute-packages: - warp-grpc - warp-quic - warped + - warpZ-tls - WashNGo - WaveFront - wavesurfer @@ -3853,6 +3845,7 @@ dont-distribute-packages: - yam-transaction-odbc - yam-transaction-postgresql - yam-web + - yaml-light - yaml-rpc-scotty - yaml-rpc-snap - yarr-image-io @@ -3916,3 +3909,4 @@ dont-distribute-packages: - zoovisitor - zuramaru - zwirn + - _4Blocks diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix index a2ff422708362..bc19c93d21efc 100644 --- a/pkgs/development/haskell-modules/configuration-nix.nix +++ b/pkgs/development/haskell-modules/configuration-nix.nix @@ -1005,6 +1005,11 @@ builtins.intersectAttrs super { ''; }) super.sbv; + # Don't use vendored (and outdated) c-blosc library + hblosc = addPkgconfigDepends [ + pkgs.c-blosc + ] (enableCabalFlag "externalBlosc" super.hblosc); + # The test-suite requires a running PostgreSQL server. Frames-beam = dontCheck super.Frames-beam; @@ -1157,6 +1162,11 @@ builtins.intersectAttrs super { } ); + # Don't use vendored copy of zxcvbn-c + zxcvbn-c = addBuildDepends [ + pkgs.zxcvbn-c + ] (enableCabalFlag "use-shared-lib" super.zxcvbn-c); + # The test suite has undeclared dependencies on git. githash = dontCheck super.githash; @@ -1727,6 +1737,9 @@ builtins.intersectAttrs super { # Tries to access network aws-sns-verify = dontCheck super.aws-sns-verify; + # Wants anthropic API key + claude = dontCheck super.claude; + # Test suite requires network access minicurl = dontCheck super.minicurl; @@ -1967,6 +1980,7 @@ builtins.intersectAttrs super { gi-gtksource5 gi-gsk gi-adwaita + gi-ostree sdl2-ttf sdl2 dear-imgui @@ -2142,6 +2156,21 @@ builtins.intersectAttrs super { botan-bindings = super.botan-bindings.override { botan = pkgs.botan3; }; + # Avoids a cycle by disabling use of the external interpreter for the packages that are dependencies of iserv-proxy. + # These in particular can't rely on template haskell for cross-compilation anyway as they can't rely on iserv-proxy. + inherit + ( + let + noExternalInterpreter = overrideCabal { + enableExternalInterpreter = false; + }; + in + lib.mapAttrs (_: noExternalInterpreter) { inherit (super) iserv-proxy network; } + ) + iserv-proxy + network + ; + # Workaround for flaky test: https://github.com/basvandijk/threads/issues/10 threads = appendPatch ./patches/threads-flaky-test.patch super.threads; } diff --git a/pkgs/development/haskell-modules/configuration-windows.nix b/pkgs/development/haskell-modules/configuration-windows.nix index bef866162481d..3dd93aa5c17f8 100644 --- a/pkgs/development/haskell-modules/configuration-windows.nix +++ b/pkgs/development/haskell-modules/configuration-windows.nix @@ -14,6 +14,23 @@ with haskellLib; else super.network; + # Avoids a cycle by disabling use of the external interpreter for the packages that are dependencies of iserv-proxy. + # See configuration-nix.nix, where iserv-proxy and network are handled. + # On Windows, network depends on temporary (see above), which depends on random, which depends on splitmix. + inherit + ( + let + noExternalInterpreter = overrideCabal { + enableExternalInterpreter = false; + }; + in + lib.mapAttrs (_: noExternalInterpreter) { inherit (super) random splitmix temporary; } + ) + random + splitmix + temporary + ; + # https://github.com/fpco/streaming-commons/pull/84 streaming-commons = appendPatch (fetchpatch { name = "fix-headers-case.patch"; diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix index 1877244aa1a1d..955c0a4381848 100644 --- a/pkgs/development/haskell-modules/generic-builder.nix +++ b/pkgs/development/haskell-modules/generic-builder.nix @@ -10,12 +10,60 @@ runCommandCC, ghcWithHoogle, ghcWithPackages, + haskellLib, + iserv-proxy, nodejs, + writeShellScriptBin, }: let isCross = stdenv.buildPlatform != stdenv.hostPlatform; + crossSupport = rec { + emulator = stdenv.hostPlatform.emulator buildPackages; + + canProxyTH = + # iserv-proxy currently does not build on GHC 9.6 + lib.versionAtLeast ghc.version "9.8" && stdenv.hostPlatform.emulatorAvailable buildPackages; + + iservWrapper = + let + wrapperScript = + enableProfiling: + let + overrides = haskellLib.overrideCabal { + enableLibraryProfiling = enableProfiling; + enableExecutableProfiling = enableProfiling; + }; + buildProxy = lib.getExe' iserv-proxy.build "iserv-proxy"; + hostProxy = lib.getExe' (overrides iserv-proxy.host) "iserv-proxy-interpreter"; + in + buildPackages.writeShellScriptBin ("iserv-wrapper" + lib.optionalString enableProfiling "-prof") '' + set -euo pipefail + PORT=$((5000 + $RANDOM % 5000)) + (>&2 echo "---> Starting interpreter on port $PORT") + ${emulator} ${hostProxy} tmp $PORT & + RISERV_PID="$!" + trap "kill $RISERV_PID" EXIT # Needs cleanup when building without sandbox + ${buildProxy} $@ 127.0.0.1 "$PORT" + (>&2 echo "---> killing interpreter...") + ''; + + # GHC will add `-prof` to the external interpreter when doing a profiled build. + # Since a single derivation can build with both profiling and non-profiling versions + # we need both versions made available + both = buildPackages.symlinkJoin { + name = "iserv-wrapper-both"; + paths = map wrapperScript [ + false + true + ]; + }; + + in + "${both}/bin/iserv-wrapper"; + }; + # Pass the "wrong" C compiler rather than none at all so packages that just # use the C preproccessor still work, see # https://github.com/haskell/cabal/issues/6466 for details. @@ -206,10 +254,15 @@ in # of `meta.pkgConfigModules`. This option defaults to false for now, since # this metadata is far from complete in nixpkgs. __onlyPropagateKnownPkgConfigModules ? false, + + enableExternalInterpreter ? isCross && crossSupport.canProxyTH, }@args: assert editedCabalFile != null -> revision != null; +# We only use iserv-proxy for the external interpreter +assert enableExternalInterpreter -> crossSupport.canProxyTH; + # --enable-static does not work on windows. This is a bug in GHC. # --enable-static will pass -staticlib to ghc, which only works for mach-o and elf. assert stdenv.hostPlatform.isWindows -> enableStaticLibraries == false; @@ -299,11 +352,17 @@ let "--hsc2hs-option=--cross-compile" (optionalString enableHsc2hsViaAsm "--hsc2hs-option=--via-asm") ] - ++ optional (allPkgconfigDepends != [ ]) "--with-pkg-config=${pkg-config.targetPrefix}pkg-config"; + ++ optional (allPkgconfigDepends != [ ]) "--with-pkg-config=${pkg-config.targetPrefix}pkg-config" - makeGhcOptions = opts: lib.concatStringsSep " " (map (opt: "--ghc-option=${opt}") opts); + ++ optionals enableExternalInterpreter ( + map (opt: "--ghc-option=${opt}") [ + "-fexternal-interpreter" + "-pgmi" + crossSupport.iservWrapper + ] + ); - buildFlagsString = optionalString (buildFlags != [ ]) (" " + concatStringsSep " " buildFlags); + makeGhcOptions = opts: lib.concatStringsSep " " (map (opt: "--ghc-option=${opt}") opts); defaultConfigureFlags = [ "--verbose" @@ -739,7 +798,7 @@ lib.fix ( # Cabal takes flags like `--configure-option=--host=...` instead configurePlatforms = [ ]; - inherit configureFlags; + inherit configureFlags buildFlags; # Note: the options here must be always added, regardless of whether the # package specifies `hardeningDisable`. @@ -773,7 +832,7 @@ lib.fix ( find dist/build -exec touch -d '1970-01-01T00:00:00Z' {} + '' + '' - ${setupCommand} build ${buildTarget}${buildFlagsString} + ${setupCommand} build ${buildTarget} $buildFlags runHook postBuild ''; @@ -809,6 +868,8 @@ lib.fix ( ${optionalString doHoogle "--hoogle"} \ ${optionalString doHaddockQuickjump "--quickjump"} \ ${optionalString (isLibrary && hyperlinkSource) "--hyperlink-source"} \ + ${optionalString enableParallelBuilding "--haddock-option=-j$NIX_BUILD_CORES"} \ + --haddock-option=--no-tmp-comp-dir \ ${lib.concatStringsSep " " haddockFlags} ''} runHook postHaddock diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix index c05545e4e5cce..1e2df10821171 100644 --- a/pkgs/development/haskell-modules/hackage-packages.nix +++ b/pkgs/development/haskell-modules/hackage-packages.nix @@ -129,7 +129,6 @@ self: { ]; description = "A tetris-like game (works with GHC 6.8.3 and Gtk2hs 0.9.13)"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "4Blocks"; } ) { }; @@ -5902,8 +5901,8 @@ self: { pname = "Cabal"; version = "3.14.2.0"; sha256 = "0cll8as76gvi0jhwrzpxrc0kf5v55jmc03mc9pnp4115gjqs5355"; - revision = "1"; - editedCabalFile = "016hy694a57zcqf8l5agfd19bxhdl4cr3my8vz30v4mr6xmai2pr"; + revision = "2"; + editedCabalFile = "0lwpdxz88115scx1zdfizy7dbva13zamwn5jx2ijkh773c4s622n"; setupHaskellDepends = [ mtl parsec @@ -5955,6 +5954,8 @@ self: { pname = "Cabal"; version = "3.16.0.0"; sha256 = "030v97qnq7299ldi6zz9lb8ashldybp9l1x2f9ga8l7m8xns72nn"; + revision = "1"; + editedCabalFile = "0rxxs5qqhblldfd5200aqd84y0pxsil2m5lhv45s4s1i4syw4wlr"; setupHaskellDepends = [ mtl parsec @@ -6101,6 +6102,8 @@ self: { pname = "Cabal-syntax"; version = "3.10.3.0"; sha256 = "04p2ywjw1wfpmp445gm15ya6qkwmqr8aq83pdq6hm680kjma1mkm"; + revision = "1"; + editedCabalFile = "06z7pnibmdazzqf1p66xjm2cr2g41nbqcjkhbaclvcq5m66m012r"; libraryHaskellDepends = [ array base @@ -7290,21 +7293,19 @@ self: { bytestring, deepseq, network, - text, time, wide-word, }: mkDerivation { pname = "ClickHaskell"; - version = "0.2.0"; - sha256 = "13xsg5ml172asp7sy6afgvqk57rknmjq2gpli41pgk6im1wzm6vl"; + version = "1.0.0"; + sha256 = "1lz40mkvzdrnhhbw8fn0k6a2z29bgngzqfkd3avafrqp4in58yyd"; libraryHaskellDepends = [ base binary bytestring deepseq network - text time wide-word ]; @@ -7313,6 +7314,31 @@ self: { } ) { }; + ClickHaskell-tls = callPackage ( + { + mkDerivation, + base, + bytestring, + ClickHaskell, + tls, + }: + mkDerivation { + pname = "ClickHaskell-tls"; + version = "1.0.0"; + sha256 = "1dyrdysq73lmmbh107lggsixzzk264s0np94jdn1594yvbngr01m"; + revision = "1"; + editedCabalFile = "0p453ddjj8j83mb3pvwav5901ykprz7j61pwxfvbbp92yq47rslf"; + libraryHaskellDepends = [ + base + bytestring + ClickHaskell + tls + ]; + description = "ClickHaskell TLS extension"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + Clipboard = callPackage ( { mkDerivation, @@ -20705,6 +20731,61 @@ self: { } ) { }; + HTTP_4000_5_0 = callPackage ( + { + mkDerivation, + array, + base, + bytestring, + deepseq, + httpd-shed, + HUnit, + mtl, + network, + network-uri, + parsec, + pureMD5, + split, + test-framework, + test-framework-hunit, + time, + transformers, + }: + mkDerivation { + pname = "HTTP"; + version = "4000.5.0"; + sha256 = "16sg079a630jpbf41b3bv063z4iz5ry2h67fmwh8yz9jh713p8yj"; + libraryHaskellDepends = [ + array + base + bytestring + mtl + network + network-uri + parsec + time + transformers + ]; + testHaskellDepends = [ + base + bytestring + deepseq + httpd-shed + HUnit + mtl + network + network-uri + pureMD5 + split + test-framework + test-framework-hunit + ]; + description = "A library for client-side HTTP"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + HTTP-Simple = callPackage ( { mkDerivation, @@ -21105,8 +21186,8 @@ self: { }: mkDerivation { pname = "HaLeX"; - version = "1.2.6"; - sha256 = "1mvxzcq42h823gq025w86z03jigk271fj20r7yfjydj7yvn24kjv"; + version = "1.3.0"; + sha256 = "1jj4v47j27y89sfagpyb3zcs6lz21jl745fkzi62synbjdz47v7z"; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; @@ -21116,6 +21197,12 @@ self: { mtl QuickCheck ]; + executableHaskellDepends = [ + base + HUnit + mtl + QuickCheck + ]; description = "HaLeX enables modelling, manipulation and visualization of regular languages"; license = lib.licenses.publicDomain; hydraPlatforms = lib.platforms.none; @@ -23863,6 +23950,8 @@ self: { ]; description = "A haskell interface to Lester Ingber's adaptive simulating annealing code"; license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -24129,6 +24218,8 @@ self: { ]; description = "Fast, lightweight YAML loader and dumper"; license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -30021,7 +30112,6 @@ self: { deepseq, directory, filepath, - ghc-internal, ghc-prim, haskeline, process, @@ -30030,11 +30120,24 @@ self: { }: mkDerivation { pname = "MicroHs"; - version = "0.13.0.0"; - sha256 = "02wl86ql8xcp9w7vlhvh0m95am6ssmw8fzkbs597qlhpwp91ax3w"; - isLibrary = false; + version = "0.15.0.0"; + sha256 = "0ggc2nxa4ccpxi08h01xvc9g5s0zkxs3yq6r3dbqcvmakaba6k7i"; + isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; + libraryHaskellDepends = [ + array + base + bytestring + deepseq + directory + filepath + ghc-prim + haskeline + process + text + time + ]; executableHaskellDepends = [ array base @@ -30042,7 +30145,6 @@ self: { deepseq directory filepath - ghc-internal ghc-prim haskeline process @@ -36501,8 +36603,8 @@ self: { }: mkDerivation { pname = "PyF"; - version = "0.11.4.0"; - sha256 = "0p5cfdrfzvl1p7pnd14j54c63v9gkk9pl8d2ld9q27cng86s927k"; + version = "0.11.5.0"; + sha256 = "10w9n110hg455g79klnbb94zn9pyap01j95qal0bjwh959sksrfy"; libraryHaskellDepends = [ base bytestring @@ -43236,8 +43338,8 @@ self: { pname = "StrictCheck"; version = "0.4.0"; sha256 = "0l7h39a7a1zc7xrsz6ggscn6406q3wi57n50w8hvdm4dd6qf333f"; - revision = "1"; - editedCabalFile = "1pklbr8r76mkg3sg9v6qj39d7cg2wswrgr3ymycw91g50l74c721"; + revision = "2"; + editedCabalFile = "01fbqjhiw16q2a0g2gr3wf3nrmq9npbhx5n7q1bhpy2pv9sqbsgr"; libraryHaskellDepends = [ base bifunctors @@ -45054,6 +45156,20 @@ self: { } ) { }; + TrivialMonadWithUnitType = callPackage ( + { mkDerivation, base }: + mkDerivation { + pname = "TrivialMonadWithUnitType"; + version = "0.1.0.0"; + sha256 = "1cq0qlymb1rz646an5z7zawkj6i7f2ggc9jaxjlrzrasqg3rr55s"; + revision = "3"; + editedCabalFile = "06dzrj9ksla1x108rbcf716zbgmwv2pjc4d5ng504bn7q4vhvs6l"; + libraryHaskellDepends = [ base ]; + description = "Trivial monad with Unit type"; + license = lib.licensesSpdx."BSD-2-Clause"; + } + ) { }; + Twofish = callPackage ( { mkDerivation, @@ -45924,6 +46040,8 @@ self: { testToolDepends = [ c2hs ]; description = "ViennaRNA v2 bindings"; license = "unknown"; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -49557,6 +49675,18 @@ self: { } ) { }; + abstractly-keyed-implicits = callPackage ( + { mkDerivation, base }: + mkDerivation { + pname = "abstractly-keyed-implicits"; + version = "0.1.1.0"; + sha256 = "1vcmiq2gk8v87dx1gsxlyq6mn42pnz643rpy89kvpxrvr8qmri2b"; + libraryHaskellDepends = [ base ]; + description = "Manage the implicit parameter namespace dynamically at compile time"; + license = lib.licensesSpdx."Apache-2.0"; + } + ) { }; + abt = callPackage ( { mkDerivation, @@ -53552,8 +53682,8 @@ self: { }: mkDerivation { pname = "advent-of-code-api"; - version = "0.2.9.1"; - sha256 = "05sfpapaf7mg0lkqwsabspazfmczw25bv7n51skbgr5qprlmfi8r"; + version = "0.2.11.0"; + sha256 = "1kqs0k623ll8gk1r7ck3xd0di6mi7p3cpgmn9svsk92y1hvjrxb9"; libraryHaskellDepends = [ aeson base @@ -54902,7 +55032,6 @@ self: { description = "Derivation of Aeson instances for GADTs"; license = lib.licenses.bsd3; mainProgram = "readme"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -55498,8 +55627,8 @@ self: { }: mkDerivation { pname = "aeson-possible"; - version = "0.1.0.1"; - sha256 = "0zikrnbd4y1d38giq6i3fpvpy9465v5mlfkif8xhmg7jagn6a85z"; + version = "0.1.1.0"; + sha256 = "1inl5l2m17xfsd4amg9d753cl57q9mzxivi4c839sa02pyh1m8cs"; libraryHaskellDepends = [ aeson base @@ -60449,10 +60578,8 @@ self: { }: mkDerivation { pname = "alsa-pcm"; - version = "0.6.1.1"; - sha256 = "1mllr9nbm3qb837zgvd6mrpr6f8i272wflv0a45rrpsq50zgcj33"; - revision = "2"; - editedCabalFile = "0mnzlggfhs8vlznbmcchp2qlzijh6vl0hrvl3919vzk1zqw75gzp"; + version = "0.6.1.2"; + sha256 = "02c4gwpnijz10j3s9zyx48gg8w974d1an05yhndidbsbn8jnasyz"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -75987,7 +76114,6 @@ self: { description = "Turn regular Haskell programs into Android Activities"; license = lib.licenses.bsd3; hydraPlatforms = lib.platforms.none; - maintainers = [ lib.maintainers.alexfmpe ]; broken = true; } ) { log = null; }; @@ -76892,8 +77018,8 @@ self: { }: mkDerivation { pname = "ansi-terminal"; - version = "1.1.3"; - sha256 = "14n0d3a4351mlin4dvk9xjg3x7dksnpkdg5l0gbby2fpbhb1mlc8"; + version = "1.1.5"; + sha256 = "0wrhwaicx3vz06r350n3n2s1x4zs5flchcpi4nj8ifp2yb787w4w"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -78350,23 +78476,25 @@ self: { containers, hashable, heap, + sdl2, + text, unordered-containers, }: mkDerivation { pname = "aoc"; - version = "0.2.1.0"; - sha256 = "1mc8nlrzyx8h2capq9ik52wffp3vsjd3hjzfnlka311xdlyzzvqv"; + version = "0.3.0.0"; + sha256 = "08jrx0m15mwkhwzj74aga9yi6ivg80w9kp6qm01mix3ynllg5zv9"; libraryHaskellDepends = [ base containers hashable heap + sdl2 + text unordered-containers ]; description = "Utility functions commonly used while solving Advent of Code puzzles"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -80981,8 +81109,8 @@ self: { pname = "apply-merge"; version = "0.1.1.0"; sha256 = "1snm9m35r3px9vgn64ygcqq37ay6jvwc5jsi3s62rxrh8biy8ir8"; - revision = "6"; - editedCabalFile = "1b98vn8j14mm4hxxfd34h2mzjjmraxg199z234q7gdgafwwc19ix"; + revision = "7"; + editedCabalFile = "0c1yc3g62gd5z2wnp74pzi7y1cbj3l4r09hp961699d99c7d22nb"; libraryHaskellDepends = [ base containers @@ -83661,6 +83789,8 @@ self: { pname = "armor"; version = "0.2.0.1"; sha256 = "1pp9y7y9i01mbnkrx4870m4a4crpyzikpi4w8znn3avjbl5c1bxx"; + revision = "1"; + editedCabalFile = "10sbxg7ji2sblaxnqfd3h56x2gslvb9algyjljdihrar352pykic"; libraryHaskellDepends = [ base bytestring @@ -85416,6 +85546,70 @@ self: { } ) { }; + asciidoc = callPackage ( + { + mkDerivation, + aeson, + attoparsec, + base, + bytestring, + containers, + directory, + filepath, + mtl, + optparse-applicative, + pretty-show, + process, + tagsoup, + tasty, + tasty-golden, + tasty-hunit, + text, + }: + mkDerivation { + pname = "asciidoc"; + version = "0.1"; + sha256 = "0fsxz5m40idr8klzqb0x1j84fdyabzyjy8rmdca6jgy11zhjhgrx"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson + attoparsec + base + containers + filepath + mtl + tagsoup + text + ]; + executableHaskellDepends = [ + aeson + base + bytestring + mtl + optparse-applicative + pretty-show + text + ]; + testHaskellDepends = [ + base + bytestring + containers + directory + filepath + pretty-show + process + tasty + tasty-golden + tasty-hunit + text + ]; + description = "AsciiDoc parser"; + license = lib.licensesSpdx."BSD-3-Clause"; + mainProgram = "hasciidoc"; + } + ) { }; + asic = callPackage ( { mkDerivation, @@ -91080,6 +91274,84 @@ self: { } ) { }; + automaton_1_6 = callPackage ( + { + mkDerivation, + base, + changeset, + mmorph, + MonadRandom, + mtl, + profunctors, + QuickCheck, + selective, + semialign, + simple-affine-space, + tasty, + tasty-hunit, + tasty-quickcheck, + these, + transformers, + witherable, + }: + mkDerivation { + pname = "automaton"; + version = "1.6"; + sha256 = "1sykk3dlbwqgmb0fs5lk66gaar8ivhsf5iwlffjc51bv3pvm3vas"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base + changeset + mmorph + MonadRandom + mtl + profunctors + selective + semialign + simple-affine-space + these + transformers + witherable + ]; + executableHaskellDepends = [ + base + changeset + mmorph + MonadRandom + mtl + profunctors + selective + semialign + simple-affine-space + these + transformers + witherable + ]; + testHaskellDepends = [ + base + changeset + mmorph + MonadRandom + mtl + profunctors + QuickCheck + selective + semialign + simple-affine-space + tasty + tasty-hunit + tasty-quickcheck + these + transformers + witherable + ]; + description = "Effectful streams and automata in coalgebraic encoding"; + license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + automitive-cse = callPackage ( { mkDerivation, @@ -91790,8 +92062,8 @@ self: { }: mkDerivation { pname = "avif"; - version = "0.1.2.1"; - sha256 = "09c30y75gaq7vsqhw0illipnbfamj3g5g7rlpgf3lb88f56wj495"; + version = "2.0.0.0"; + sha256 = "1k92rcwdrkmvfcmdj7jh4x49xm3f6grsj0hqrznc0gzp0l1zb6c3"; enableSeparateDataOutput = true; libraryHaskellDepends = [ base @@ -92363,7 +92635,7 @@ self: { } ) { }; - aws_0_25_1 = callPackage ( + aws_0_25_2 = callPackage ( { mkDerivation, aeson, @@ -92417,8 +92689,8 @@ self: { }: mkDerivation { pname = "aws"; - version = "0.25.1"; - sha256 = "1prv5chmcnikxizl44ql2f68ri86i9a8i2kcnz7sqqb87ysbf0f6"; + version = "0.25.2"; + sha256 = "1lvg38amglj9lcy4b283f16l9mis3v467rrfgjd299idh53aqm76"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -97461,7 +97733,7 @@ self: { } ) { }; - base_4_21_0_0 = callPackage ( + base_4_22_0_0 = callPackage ( { mkDerivation, ghc-internal, @@ -97469,8 +97741,8 @@ self: { }: mkDerivation { pname = "base"; - version = "4.21.0.0"; - sha256 = "18jlid0yzsgxlg7mhdpfsr5jc8lvqrnvwkx1vmd8vl947nwzd9sj"; + version = "4.22.0.0"; + sha256 = "0r45xl2g316iczji7z4ixf07v6f5gnpymahlabym5y2fb3pcafjg"; libraryHaskellDepends = [ ghc-internal ghc-prim @@ -98541,6 +98813,22 @@ self: { } ) { }; + baseless = callPackage ( + { mkDerivation, ghc-internal }: + mkDerivation { + pname = "baseless"; + version = "1.0.0"; + sha256 = "16mlv53z15zza0lk8niiixv11nsba9c1fg0ms7v48zi4y2zxd45n"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ ghc-internal ]; + executableHaskellDepends = [ ghc-internal ]; + description = "baseless claims"; + license = lib.licensesSpdx."MIT"; + mainProgram = "exe"; + } + ) { }; + basement = callPackage ( { mkDerivation, @@ -102599,8 +102887,8 @@ self: { pname = "bhoogle"; version = "0.1.4.4"; sha256 = "1z19h0jgnipj16rqbrflcjnqaslafq9bvwkyg8q0il76q7s4wyxa"; - revision = "4"; - editedCabalFile = "05qw335svzyklx9pf70kv1vlgs4q4rr9d4jylbilay5279qmydc2"; + revision = "5"; + editedCabalFile = "1ffiijfyb0k8mm5jiygvai1kgshnn53zagy2cdv3i4nvi88jsn3v"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -109738,26 +110026,30 @@ self: { { mkDerivation, base, + bytestring, containers, directory, - regexpr, + mtl, + pcre-light, text, + validation, }: mkDerivation { pname = "bizzlelude"; - version = "4.17.2.2"; - sha256 = "1b89vnf7zhhwyzjhhigiy7pp7v46w6js4d1z924ch853q52822wq"; + version = "4.20.2.0.1"; + sha256 = "1cawb7wn8qxc67pvhcyv3h0ykjbv3mfm04jbp1nagz6nn6ah7ccb"; libraryHaskellDepends = [ base + bytestring containers directory - regexpr + mtl + pcre-light text + validation ]; description = "A lousy Prelude replacement by a lousy dude"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -111495,8 +111787,8 @@ self: { }: mkDerivation { pname = "blockfrost-api"; - version = "0.13.0.0"; - sha256 = "0nghxnx9kjwk2frzsy0zrskvn3yffy7xp2fa70hl25bsc4sa2zar"; + version = "0.14.0.0"; + sha256 = "1bk77cgcf8bwc3mb89dsfsbrx7d5w16jdzf0jij3x3rj6zys26va"; libraryHaskellDepends = [ aeson base @@ -111558,8 +111850,8 @@ self: { }: mkDerivation { pname = "blockfrost-client"; - version = "0.10.0.0"; - sha256 = "0jyg2mc8jmwpsix46nh8r6bc2p1j5rdrjsrcdyyvqz5a2ri6hac7"; + version = "0.11.0.0"; + sha256 = "0cfdhyqiqcyv92yfvy1as07cwajy23ckip4c3c5rw6apwixn32z0"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -111600,6 +111892,7 @@ self: { case-insensitive, containers, data-default, + exceptions, http-client, http-client-tls, http-types, @@ -111612,8 +111905,8 @@ self: { }: mkDerivation { pname = "blockfrost-client-core"; - version = "0.6.0.1"; - sha256 = "00xy5dkqb657ihc3ac1w9hii1dyv1f3b1r3l1319ri71sx636czn"; + version = "0.7.0.0"; + sha256 = "05cla205zmxiq16x0a0y37b17hqplzifhanddpdmrgzfasjzx9qf"; libraryHaskellDepends = [ aeson base @@ -111622,6 +111915,7 @@ self: { case-insensitive containers data-default + exceptions http-client http-client-tls http-types @@ -111752,8 +112046,8 @@ self: { }: mkDerivation { pname = "blockio"; - version = "0.1.0.1"; - sha256 = "1cmffkkx938f2kbdfjgqqmhqdpvln2iwqm3pdpvjlm40isdpqj5c"; + version = "0.1.1.1"; + sha256 = "1w6b3gf9k5vkg92bx5kh85z4y9j74rcdalg22f3hifdhxycrfyyz"; libraryHaskellDepends = [ base blockio-uring @@ -112246,8 +112540,8 @@ self: { }: mkDerivation { pname = "bloomfilter-blocked"; - version = "0.1.0.0"; - sha256 = "13p8dvh4gy4pw7ii5qj274f1dcmmlisxg5kqz3276kdjq93s4dd8"; + version = "0.1.0.1"; + sha256 = "0np51dnfd8shcpvhxv6bf9cfyjn8q8qc45ckzi6m6zxbnp5l9k10"; libraryHaskellDepends = [ base bytestring @@ -112274,7 +112568,7 @@ self: { random ]; doHaddock = false; - description = "Classic and block-style bloom filters"; + description = "Fast, compact Bloom filters"; license = lib.licensesSpdx."Apache-2.0"; } ) { }; @@ -112658,12 +112952,12 @@ self: { } ) { }; - bluefin_0_2_0_0 = callPackage ( + bluefin_0_2_4_0 = callPackage ( { mkDerivation, bluefin-internal }: mkDerivation { pname = "bluefin"; - version = "0.2.0.0"; - sha256 = "0kyzj5lr1w8r39mngsj8bf2bsqs3dxjirsmbkbk2zsldv9g0j210"; + version = "0.2.4.0"; + sha256 = "0m2byj3cb9d32kr6qyvyf2pbwwm0wznncjysyd2p803apf1kv5ga"; libraryHaskellDepends = [ bluefin-internal ]; description = "The Bluefin effect system"; license = lib.licensesSpdx."MIT"; @@ -112686,8 +112980,8 @@ self: { pname = "bluefin-algae"; version = "0.1.0.2"; sha256 = "02g513vqn052qd41zm9brw8lf1ic4135mi8kr3s4w0721vm4nkhh"; - revision = "1"; - editedCabalFile = "00f43pckgra69gyrrpijfbyhqzz8pwqgj10gwn3lkwapxhamcqp5"; + revision = "3"; + editedCabalFile = "0m1fa0yy0inqii6ks97p3hx1sh66ira6mib3qi4slm5b2kln02qb"; libraryHaskellDepends = [ base bluefin @@ -112758,7 +113052,7 @@ self: { } ) { }; - bluefin-internal_0_2_0_0 = callPackage ( + bluefin-internal_0_3_2_0 = callPackage ( { mkDerivation, async, @@ -112770,8 +113064,8 @@ self: { }: mkDerivation { pname = "bluefin-internal"; - version = "0.2.0.0"; - sha256 = "0mc343qjbdjps66r9mjp0p0ki9lfqrhpfqk3vahwih4msvnrfc8j"; + version = "0.3.2.0"; + sha256 = "05v4q9khr429z263i3h4kppcfhi3cfsl5lr6v4ib5fzg8xjyv20j"; libraryHaskellDepends = [ async base @@ -121612,7 +121906,6 @@ self: { ]; description = "Aeson instances for ByteString, using base 64 encoding"; license = lib.licensesSpdx."BSD-3-Clause"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -125284,8 +125577,8 @@ self: { pname = "cabal-install"; version = "3.16.0.0"; sha256 = "06jndk7xcm837rsy4y9nhy8a0162ckravh8dlnif1vmywfgljai8"; - revision = "2"; - editedCabalFile = "1f8gi3v27hr4x2ydqa20ijqdcv3pm09lyykhqcaz8zy7dvz96xb0"; + revision = "3"; + editedCabalFile = "0vcpy83jjfrqbr9z6nmgid2ci5h9gqmfy8zq1yrpxh1iif4gjy7w"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -125878,8 +126171,8 @@ self: { }: mkDerivation { pname = "cabal-matrix"; - version = "1.0.1.0"; - sha256 = "029r3bf3w09jzrh0xy1hz9y13wr0w603b0gp5z7wm7qp3ki21iyy"; + version = "1.0.2.0"; + sha256 = "1dd3bh32vgjp8h1wlf6v2dhlfs0yh498f3gbzg6b6dsny0z6frk3"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -127013,7 +127306,6 @@ self: { mkDerivation, aeson, ansi-terminal, - ansi-wl-pprint, base, bytestring, Cabal, @@ -127032,6 +127324,7 @@ self: { mtl, optparse-applicative, pretty, + prettyprinter, process, split, tasty, @@ -127043,14 +127336,13 @@ self: { }: mkDerivation { pname = "cabal2nix"; - version = "2.20.1"; - sha256 = "0yiqhrmfypf817mgabj1h5hx7nwix2fn46gmvailnry4s6gdwcbj"; + version = "2.21.0"; + sha256 = "0jqmk22wgq9ab3jx93ab181bnwdcand2y2hvj32b1czzb5jrqhg9"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ aeson ansi-terminal - ansi-wl-pprint base bytestring Cabal @@ -127066,6 +127358,7 @@ self: { lens optparse-applicative pretty + prettyprinter process split text @@ -127631,28 +127924,27 @@ self: { base, exceptions, stm, + tasty, + tasty-hunit, time, - transformers, }: mkDerivation { pname = "cached-io"; - version = "1.3.0.0"; - sha256 = "0bxb59brgfv1rgarsc1cix1g1043zl263j5a0rhpzvd80wj6msi2"; - revision = "2"; - editedCabalFile = "0k3clbankknvbfwws70lpi6kazbvh7zj36h5rphf6wi94q9k9b4n"; - isLibrary = true; - isExecutable = true; + version = "1.3.1.0"; + sha256 = "0xfm64bhm0xpw2fqxzrxxzq4nlzybvvhis2093agzn3pbv0xif9v"; libraryHaskellDepends = [ base exceptions stm time - transformers ]; - executableHaskellDepends = [ base ]; + testHaskellDepends = [ + base + tasty + tasty-hunit + ]; description = "A simple library to cache IO actions"; license = lib.licensesSpdx."Apache-2.0"; - mainProgram = "test-cachedIO"; } ) { }; @@ -127881,8 +128173,8 @@ self: { }: mkDerivation { pname = "cachix"; - version = "1.9.1"; - sha256 = "1jhimq7vjnbpggv1l97icwq6i4qhdazhx9gn23fxcf1xj9lz6q6l"; + version = "1.9.2"; + sha256 = "0yzc90i9sv9np6q7fhkmbcyy67a7irsgdd9b072r1rgr5afn773q"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -128045,8 +128337,8 @@ self: { }: mkDerivation { pname = "cachix-api"; - version = "1.9.1"; - sha256 = "1gr35qmx0lrbfqyyrl8xab9k0x38n771by3girlc8sdv0xjil25d"; + version = "1.9.2"; + sha256 = "07bnnkh2b9ryhi8adwa9i9nh17qhmfknxn3l84lld2ry43hnwkww"; libraryHaskellDepends = [ aeson async @@ -136550,29 +136842,38 @@ self: { mkDerivation, base, containers, + indexed-traversable, mmorph, monoid-extras, mtl, + profunctors, + semialign, tasty, tasty-hunit, + these, transformers, witherable, }: mkDerivation { pname = "changeset"; - version = "0.1.0.3"; - sha256 = "1fzaflmfl4p2s9yjl11ifls2jhrp1ia334jb2l2nxnrlkgax5l1d"; + version = "0.1.1"; + sha256 = "1mp5g0y1rbhfp5js3g2szpr7cfywpqjnh7ps01l1pxrvirxkdbbr"; libraryHaskellDepends = [ base containers + indexed-traversable mmorph monoid-extras mtl + profunctors + semialign + these transformers witherable ]; testHaskellDepends = [ base + containers monoid-extras mtl tasty @@ -136582,8 +136883,6 @@ self: { ]; description = "Stateful monad transformer based on monoidal actions"; license = lib.licensesSpdx."MIT"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -136599,8 +136898,8 @@ self: { }: mkDerivation { pname = "changeset-containers"; - version = "0.1.0.3"; - sha256 = "0a7k269qkv7x4d16q17h0wqixgv0aj0cs27fms8i79lcx804m4jz"; + version = "0.1.1"; + sha256 = "0dyxhpbhwbqpbjmyhdqbdy82fbx76163az6m9lrcq8p5026n0ndc"; libraryHaskellDepends = [ base changeset @@ -136617,7 +136916,6 @@ self: { ]; description = "Stateful monad transformer based on monoidal actions"; license = lib.licensesSpdx."MIT"; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -136639,8 +136937,8 @@ self: { }: mkDerivation { pname = "changeset-lens"; - version = "0.1.0.3"; - sha256 = "020vzb7pg208s5kdvmf88z9xj0lxg1safxh8scfzpwx58bnvq68q"; + version = "0.1.1"; + sha256 = "0fi3yjb689mvl8scmi3yz29fx4f1z2idclij4jn1mqavaaz4wzgd"; libraryHaskellDepends = [ base changeset @@ -136664,7 +136962,6 @@ self: { ]; description = "Stateful monad transformer based on monoidal actions"; license = lib.licensesSpdx."MIT"; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -136681,8 +136978,8 @@ self: { }: mkDerivation { pname = "changeset-reflex"; - version = "0.1.0.3"; - sha256 = "1gcz5gamx2dxwy0v1wb578fjrc1wqhlh5asvhffrh8lvxzcdnjcw"; + version = "0.1.1"; + sha256 = "0jad77lp542y7kw0dbq4spdkpv38ygg7hlmbik7a5wikf90dfvz7"; libraryHaskellDepends = [ base changeset @@ -136694,7 +136991,6 @@ self: { ]; description = "Stateful monad transformer based on monoidal actions"; license = lib.licensesSpdx."MIT"; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -139683,8 +139979,8 @@ self: { }: mkDerivation { pname = "chs-deps"; - version = "0.1.0.0"; - sha256 = "0mgi44nvsbmfxj2xr7ja7yslsxvbnznd9xbprz967705nhbs2cqb"; + version = "0.1.0.1"; + sha256 = "1bzncdhf4x910qcdydasmag684gn5m77zqf3bvlh5lwvcxafbf73"; enableSeparateDataOutput = true; libraryHaskellDepends = [ array @@ -140169,8 +140465,8 @@ self: { }: mkDerivation { pname = "cimple"; - version = "0.0.26"; - sha256 = "0fv7kdwl8jd1v3wl85djn3njwdhp06vlmfq59h7gbvnf4d5mvxiv"; + version = "0.0.27"; + sha256 = "08ig9617cr0s9kxl81rlhyi1kv5kycninfpk8w56zspf2dqhnjja"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -141204,7 +141500,7 @@ self: { } ) { }; - citeproc_0_11 = callPackage ( + citeproc_0_12 = callPackage ( { mkDerivation, aeson, @@ -141233,8 +141529,8 @@ self: { }: mkDerivation { pname = "citeproc"; - version = "0.11"; - sha256 = "1msriz492kgnhljywbxys6jm3j3i41hm6scw9rx6g2mk2cz33z3m"; + version = "0.12"; + sha256 = "1b3dlh3904cxckh5kc4b2ilnsy9rhfhr90qkcwagfaz4chkdbhfl"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -142248,7 +142544,6 @@ self: { executableHaskellDepends = [ base ]; description = "Clash: a functional hardware description language - GHC frontend"; license = lib.licensesSpdx."BSD-2-Clause"; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -142318,6 +142613,8 @@ self: { pname = "clash-lib"; version = "1.8.4"; sha256 = "1pria81l325zdh8ccpkig5sp9lv4k819sk7pgkjf1s8hjknlsv9x"; + revision = "1"; + editedCabalFile = "0iif62zqbzxkmvgfbqmagxkrx5k6y97p1qamrcnqa544gxcrj4c0"; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; @@ -142414,9 +142711,7 @@ self: { ]; description = "Clash: a functional hardware description language - As a library"; license = lib.licensesSpdx."BSD-2-Clause"; - hydraPlatforms = lib.platforms.none; mainProgram = "v16-upgrade-primitives"; - broken = true; } ) { }; @@ -142464,8 +142759,6 @@ self: { ]; description = "Hedgehog Generators for clash-lib"; license = lib.licensesSpdx."BSD-2-Clause"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -142552,6 +142845,8 @@ self: { pname = "clash-prelude"; version = "1.8.4"; sha256 = "0vc9vcqbh0i8xkm833nwxfmwxi47kzcajrh8nywymal2nsid1gby"; + revision = "1"; + editedCabalFile = "0jxnnzxkv1s43r4bpf8pxa2br9g5silf3a0rsni53wiiky3pc31i"; libraryHaskellDepends = [ array arrows @@ -142709,7 +143004,6 @@ self: { ]; description = "Shake rules for building Clash programs"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -143411,6 +143705,73 @@ self: { } ) { }; + claude = callPackage ( + { + mkDerivation, + aeson, + base, + base64-bytestring, + bytestring, + containers, + filepath, + http-api-data, + http-client, + http-client-tls, + http-types, + servant, + servant-client, + tasty, + tasty-hunit, + text, + time, + vector, + }: + mkDerivation { + pname = "claude"; + version = "1.0.1"; + sha256 = "1jsga6n5ws5m9wf2n1l7gck7n0d2928f9r094vf26s88vm9dl64q"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson + base + bytestring + containers + filepath + http-api-data + http-client + http-client-tls + http-types + servant + servant-client + text + time + vector + ]; + executableHaskellDepends = [ + aeson + base + base64-bytestring + bytestring + text + vector + ]; + testHaskellDepends = [ + aeson + base + http-client + http-client-tls + servant-client + tasty + tasty-hunit + text + vector + ]; + description = "Servant bindings to Anthropic's Claude API"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + clay = callPackage ( { mkDerivation, @@ -144749,7 +145110,6 @@ self: { ]; description = "Miscellaneous utilities for building and working with command line interfaces"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -144787,7 +145147,6 @@ self: { ]; description = "Bindings to the git command-line interface"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -144821,7 +145180,6 @@ self: { ]; description = "Bindings to the nix command-line interface"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -146058,6 +146416,45 @@ self: { } ) { }; + cloudchor = callPackage ( + { + mkDerivation, + base, + containers, + http-client, + mtl, + servant, + servant-client, + servant-server, + sop-core, + template-haskell, + unordered-containers, + warp, + }: + mkDerivation { + pname = "cloudchor"; + version = "0.1.0.1"; + sha256 = "0yiqw4i08zpyjwp41hwr8fsk8bj2c44dssl6yw2qswqmzwl2jd4i"; + libraryHaskellDepends = [ + base + containers + http-client + mtl + servant + servant-client + servant-server + sop-core + template-haskell + unordered-containers + warp + ]; + description = "Lightweight and efficient choreographic programming for cloud services"; + license = lib.licensesSpdx."MPL-2.0"; + hydraPlatforms = lib.platforms.none; + broken = true; + } + ) { }; + cloudevents-haskell = callPackage ( { mkDerivation, @@ -149332,6 +149729,8 @@ self: { pname = "coercible-subtypes"; version = "1"; sha256 = "02xj06qdqy9i33hkp504qmgpb0qvhliyygib072s2k6z4wmwd1ar"; + revision = "1"; + editedCabalFile = "01zvrzly922rxf1cl9g8fh6hz8963xl1mmr30pbsbxfl1246ilbw"; libraryHaskellDepends = [ base ]; description = "Coercible but only in one direction"; license = lib.licensesSpdx."BSD-3-Clause"; @@ -149349,6 +149748,8 @@ self: { pname = "coercible-subtypes-profunctor"; version = "1"; sha256 = "0riw18jpxvfv6qyzmv3l7g4m6b65g7skcylpmwdp59p05ypfx4vb"; + revision = "1"; + editedCabalFile = "07ngvjv2wp41i363azr9g65kwf147d08jpcc5k1m8g1gn3vgyvwb"; libraryHaskellDepends = [ base coercible-subtypes @@ -160604,7 +161005,6 @@ self: { description = "Utility package for constraints"; license = lib.licenses.bsd3; mainProgram = "readme"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -160882,6 +161282,71 @@ self: { } ) { }; + consumers_2_3_4_0 = callPackage ( + { + mkDerivation, + aeson, + base, + containers, + exceptions, + hpqtypes, + hpqtypes-extras, + HUnit, + lifted-base, + lifted-threads, + log-base, + monad-control, + monad-time, + mtl, + safe-exceptions, + stm, + text, + time, + transformers-base, + }: + mkDerivation { + pname = "consumers"; + version = "2.3.4.0"; + sha256 = "1w4fnq0iwvg8fxmjpjkxzg8ncijp0gvql8l96gj641m60w0qm2ag"; + libraryHaskellDepends = [ + aeson + base + containers + exceptions + hpqtypes + lifted-base + lifted-threads + log-base + monad-control + monad-time + mtl + safe-exceptions + stm + text + time + transformers-base + ]; + testHaskellDepends = [ + base + exceptions + hpqtypes + hpqtypes-extras + HUnit + log-base + monad-control + monad-time + mtl + stm + text + time + transformers-base + ]; + description = "Concurrent PostgreSQL data consumers"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + consumers-metrics-prometheus = callPackage ( { mkDerivation, @@ -164170,8 +164635,8 @@ self: { }: mkDerivation { pname = "coquina"; - version = "0.2.0.0"; - sha256 = "17z0353m7cn308zml3qi31qkh84f3yqh2pph5z9zf863s5qi8n8x"; + version = "0.2.0.1"; + sha256 = "0cx1ywmzjn2z68393ay6yxy8v1dk239w4yhmms8i26lpi1r1kd0i"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -164212,9 +164677,7 @@ self: { ]; description = "Yet another shell monad"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "readme"; - broken = true; } ) { }; @@ -165755,11 +166218,13 @@ self: { { mkDerivation, acc, + aeson, base, bimap, bytestring, containers, enummapset, + hex-text, mtl, nonempty-vector, optics-core, @@ -165780,15 +166245,17 @@ self: { }: mkDerivation { pname = "covenant"; - version = "1.2.0"; - sha256 = "0iml7gzlyjgy64852wvwmi9j08jzsdriniwjw5v71hy8yxjn1r05"; + version = "1.3.0"; + sha256 = "1l9plc5yygmf7x6wr9dlf64ppi957fpfwx3qd5wnxmhj3963fc66"; libraryHaskellDepends = [ acc + aeson base bimap bytestring containers enummapset + hex-text mtl nonempty-vector optics-core @@ -168269,8 +168736,8 @@ self: { }: mkDerivation { pname = "cretheus"; - version = "1.1.0"; - sha256 = "0w85lv8gb987fhpv67shk7p12j80jw8axx9fmz18kkswhg88vs6g"; + version = "1.2.0"; + sha256 = "1fv1rn3r9sg1nshc8ckncy3f5v4d4grqcpy5fz86wyg3kg6asl3b"; libraryHaskellDepends = [ aeson base @@ -173994,6 +174461,7 @@ self: { data-default-class, foldable1-classes-compat, generic-optics, + generic-random, hashable, hspec, hspec-megaparsec, @@ -174005,6 +174473,7 @@ self: { optparse-applicative, ordered-containers, parser-combinators, + pretty-simple, prettyprinter, QuickCheck, random, @@ -174016,10 +174485,11 @@ self: { }: mkDerivation { pname = "cuddle"; - version = "1.0.0.0"; - sha256 = "04x8n5m1rmm8byd3nvh6pzkvgpy568dhvhq5yydcqcam2nj6nncd"; + version = "1.1.2.0"; + sha256 = "0cipqiw0rq2g3vcsmyi9q5cd3n0gimn7jjn2mh5afvdq940gvpk7"; isLibrary = true; isExecutable = true; + enableSeparateDataOutput = true; libraryHaskellDepends = [ base base16-bytestring @@ -174060,22 +174530,25 @@ self: { testHaskellDepends = [ base bytestring + cborg + containers data-default-class + generic-random hspec hspec-megaparsec HUnit megaparsec + pretty-simple prettyprinter QuickCheck + random string-qq text tree-diff ]; description = "CDDL Generator and test utilities"; license = lib.licensesSpdx."Apache-2.0"; - hydraPlatforms = lib.platforms.none; mainProgram = "cuddle"; - broken = true; } ) { }; @@ -176590,6 +177063,49 @@ self: { } ) { }; + dani-sqlite = callPackage ( + { + mkDerivation, + base, + base16-bytestring, + bytestring, + directory, + HUnit, + sqlite, + tasty, + tasty-hunit, + temporary, + text, + }: + mkDerivation { + pname = "dani-sqlite"; + version = "0.1.0.0"; + sha256 = "04md1gf6s09xw2jbwx5nkn7vx9j9z9807bc8g5iy9gnjfxjx8s33"; + libraryHaskellDepends = [ + base + bytestring + text + ]; + librarySystemDepends = [ sqlite ]; + testHaskellDepends = [ + base + base16-bytestring + bytestring + directory + HUnit + tasty + tasty-hunit + temporary + text + ]; + doHaddock = false; + description = "Low-level binding to Sqlite3"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + broken = true; + } + ) { inherit (pkgs) sqlite; }; + danibot = callPackage ( { mkDerivation, @@ -176766,8 +177282,8 @@ self: { }: mkDerivation { pname = "dap"; - version = "0.3.0.0"; - sha256 = "1svn07322j8y77sdnlqsr4rq2w2790ypnvihk34ij86i5vs9jyhn"; + version = "0.3.1.0"; + sha256 = "0il9qcd7xss5vc9g9f5rni8bb8i5wzi8m6w6faq2357igf37n00v"; libraryHaskellDepends = [ aeson aeson-pretty @@ -176809,8 +177325,6 @@ self: { ]; description = "A debug adaptor protocol library"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -178071,7 +178585,6 @@ self: { { mkDerivation, base, - deepseq, quickcheck-classes-base, tasty, tasty-quickcheck, @@ -178079,15 +178592,8 @@ self: { }: mkDerivation { pname = "data-array-byte"; - version = "0.1.0.1"; - sha256 = "002n0af7q08q3fmgsc5b47s1clirxy0lrqglwxzhabg0nfhfrdhv"; - revision = "5"; - editedCabalFile = "06xfi70zgpv77nqrrnk649vdzji6cgp40a69i41kw05p7xaa1whc"; - libraryHaskellDepends = [ - base - deepseq - template-haskell - ]; + version = "0.1.0.2"; + sha256 = "1g9lb22yls3fjv4jvm7qm0bydl7hpdrx0rjpbr2lazz2m9qdkxam"; testHaskellDepends = [ base quickcheck-classes-base @@ -182335,12 +182841,13 @@ self: { unordered-containers, vector, vector-algorithms, + zlib, zstd, }: mkDerivation { pname = "dataframe"; - version = "0.3.4.0"; - sha256 = "0n33zjgfkrnr9j4sg93w2iz743m3yw0hk6nnpy3081ibj24426vj"; + version = "0.4.0.0"; + sha256 = "191yk3bxp66yilxpcdsyb02nlrfcm785724d5b03lv029zqhmxf9"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -182368,6 +182875,7 @@ self: { unordered-containers vector vector-algorithms + zlib zstd ]; executableHaskellDepends = [ @@ -182446,8 +182954,8 @@ self: { }: mkDerivation { pname = "dataframe-persistent"; - version = "0.1.0.0"; - sha256 = "0drpha9bkhp10ipbbh02mfs5r77awi8nfw9zrxahz2fqrysrs3dx"; + version = "0.2.0.0"; + sha256 = "0zm6k82vx41pn2yg30j1p0ghrai39yz450cam5298ln18b8c87w8"; libraryHaskellDepends = [ base bytestring @@ -185356,8 +185864,8 @@ self: { }: mkDerivation { pname = "debug-print"; - version = "0.2.1.0"; - sha256 = "1mgl8sc69fbpcx3hrb8b1dcsgs2zzflms5ryf3zbs8j91yvpx02s"; + version = "0.2.2.0"; + sha256 = "03h6c832k6m5prrvgg0qb08x3yiv39gk2zm1kccyfb6qryjgkzip"; libraryHaskellDepends = [ aeson base @@ -188053,7 +188561,6 @@ self: { ]; description = "Dependent finite maps (partial dependent products)"; license = lib.licensesSpdx."BSD-3-Clause"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -188083,7 +188590,6 @@ self: { ]; description = "Dependent map that uses semigroup mappend"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -188131,7 +188637,6 @@ self: { ]; description = "Dependent sum type"; license = lib.licenses.publicDomain; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -188161,7 +188666,6 @@ self: { ]; description = "JSON instances for DSum, DMap, and Some"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -188197,7 +188701,6 @@ self: { ]; description = "Template Haskell code to generate instances of classes in some package"; license = lib.licenses.publicDomain; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -188677,8 +189180,6 @@ self: { ]; description = "Derive HasField instances with Template Haskell"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -191864,8 +192365,8 @@ self: { }: mkDerivation { pname = "dhscanner-ast"; - version = "1.1.2"; - sha256 = "0a98wz9b1d4qpl6d06s48djkgrccgriqd29sz8zk3fcrz0b24r5a"; + version = "1.1.3"; + sha256 = "0xkr9d945r4g7xdfr3mjl6263ykjjlqwl6g2rklwj1917ir59war"; libraryHaskellDepends = [ aeson base @@ -191928,8 +192429,8 @@ self: { }: mkDerivation { pname = "dhscanner-kbgen"; - version = "1.0.12"; - sha256 = "1zmnc4ih9pk12wz7mxrxf0y6wrirvdngk3ch4w0605czwh8522i3"; + version = "1.0.13"; + sha256 = "0p1rahl6bnznbgqm380nvavpq01rh8amarb9fcgp6lv19wisdxdx"; libraryHaskellDepends = [ aeson base @@ -193093,8 +193594,8 @@ self: { }: mkDerivation { pname = "diagrams-lib"; - version = "1.5.0.1"; - sha256 = "0s09qkhlp0w7ga20i482icw48y0l8rgqb38818ny64h3ivh8s5hm"; + version = "1.5.1"; + sha256 = "1albqhf0p9m2z2glh1zmq7ixyd8cfmg1wshlkzw0xbk5yalkb4kb"; libraryHaskellDepends = [ active adjunctions @@ -196048,7 +196549,7 @@ self: { } ) { }; - directory_1_3_9_0 = callPackage ( + directory_1_3_10_0 = callPackage ( { mkDerivation, base, @@ -196059,10 +196560,8 @@ self: { }: mkDerivation { pname = "directory"; - version = "1.3.9.0"; - sha256 = "1k34iqdkh9d5vjd7wihhjjc6388hfbh7sjwp3msziibz2534i8i0"; - revision = "2"; - editedCabalFile = "0sw1gfa9374z4gy03hya4lpswcyg42gvrvs03r60v03a3ih88rzd"; + version = "1.3.10.0"; + sha256 = "1xz5ffxd0hn42481bgkgnshwqmshjq7b9cihw9q8zy6qkhglzrw0"; libraryHaskellDepends = [ base file-io @@ -196098,8 +196597,8 @@ self: { }: mkDerivation { pname = "directory-contents"; - version = "0.2.0.2"; - sha256 = "0ih1zvy39h43dw412r3353bzfh2czs5pf51x97fzjlx0n4ckc493"; + version = "0.2.0.3"; + sha256 = "0prf85wyd3x9k2wsy6fi43kz1wnnb0g6sp392bfb7f9kyxgq0niw"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -196127,9 +196626,7 @@ self: { ]; description = "Recursively build, navigate, and operate on a tree of directory contents"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "readme"; - broken = true; } ) { }; @@ -199634,8 +200131,8 @@ self: { }: mkDerivation { pname = "djot"; - version = "0.1.2.3"; - sha256 = "0jcccq9y95byqxm13aghcz59sqbv1qai7488bw5ma57dz96kppdm"; + version = "0.1.2.4"; + sha256 = "10k5j5ah051jhiykic95mn3lr5vhc5jc8pvpgqicy3jq1rcf5am1"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -199744,7 +200241,7 @@ self: { } ) { }; - dl-fedora_2_1_1 = callPackage ( + dl-fedora_2_2 = callPackage ( { mkDerivation, base, @@ -199770,8 +200267,8 @@ self: { }: mkDerivation { pname = "dl-fedora"; - version = "2.1.1"; - sha256 = "1qj8k9di8v5m0n9fy1ysb7iwnq50bnh22gml50wgps0ycl8qcvh1"; + version = "2.2"; + sha256 = "0qli1a1cnrk3fl1wa2g4lyix5ja2qnhwnv75d0nfggln8b8yz55q"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -201887,6 +202384,8 @@ self: { pname = "doctest-parallel"; version = "0.4"; sha256 = "1y907fg2y7ayddwv38rjv6nyc18w682dxwkq3msqnlkddglqlxfx"; + revision = "1"; + editedCabalFile = "14727y7lzskg9qazpc1p2fsj35fbqdm4g54hii3q0626y62ff7mj"; libraryHaskellDepends = [ base base-compat @@ -206183,6 +206682,8 @@ self: { ]; description = "Haskell bindings for duckdb"; license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -208624,6 +209125,37 @@ self: { } ) { }; + e9571-config-reader-haskell = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + directory, + }: + mkDerivation { + pname = "e9571-config-reader-haskell"; + version = "0.1.0.2"; + sha256 = "0sklk9wpx5h13031img03whzxxsg6nb4zf2l7hww6iba367pyldj"; + isLibrary = true; + isExecutable = true; + enableSeparateDataOutput = true; + libraryHaskellDepends = [ + aeson + base + bytestring + directory + ]; + executableHaskellDepends = [ + aeson + base + ]; + description = "Automatically read config.json from the current directory"; + license = lib.licensesSpdx."MIT"; + mainProgram = "simple-example"; + } + ) { }; + each = callPackage ( { mkDerivation, @@ -209707,8 +210239,8 @@ self: { }: mkDerivation { pname = "ecstatic"; - version = "0.1.0.0"; - sha256 = "1l7qhn5lzh39w1lscdc4lm6r6rxniidns98s4943vc6vyafyrzmw"; + version = "0.1.0.1"; + sha256 = "0gmf4w8hblq7zfb6zy6vmpxb0wj8v64h1knmmv3prn5ws7rf0s25"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -211477,8 +212009,8 @@ self: { }: mkDerivation { pname = "egison"; - version = "4.1.3"; - sha256 = "1azi22pbrc3v14zbrkdblx3sdc5qyn7agf0gvkaxxk98587kidrq"; + version = "4.2.1"; + sha256 = "056rbb9nl00dbfr97k4865i0djkbqsqgqxpg0f1l9phrif5308vl"; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; @@ -211534,7 +212066,6 @@ self: { ]; description = "Programming language with non-linear pattern-matching against non-free data"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -211585,6 +212116,52 @@ self: { } ) { }; + egison-pattern-src_0_2_2_0 = callPackage ( + { + mkDerivation, + base, + containers, + free, + megaparsec, + mtl, + parser-combinators, + prettyprinter, + recursion-schemes, + tasty, + tasty-discover, + tasty-hunit, + text, + }: + mkDerivation { + pname = "egison-pattern-src"; + version = "0.2.2.0"; + sha256 = "17dmdn3yfgr45cdc6fz2ljs9ihl7hyppv14ix93g9kpxyrw05kcm"; + libraryHaskellDepends = [ + base + containers + free + megaparsec + mtl + parser-combinators + prettyprinter + recursion-schemes + text + ]; + testHaskellDepends = [ + base + megaparsec + mtl + tasty + tasty-hunit + text + ]; + testToolDepends = [ tasty-discover ]; + description = "Manipulating Egison patterns: abstract syntax, parser, and pretty-printer"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + } + ) { }; + egison-pattern-src-haskell-mode = callPackage ( { mkDerivation, @@ -211599,8 +212176,8 @@ self: { }: mkDerivation { pname = "egison-pattern-src-haskell-mode"; - version = "0.2.1.2"; - sha256 = "1v76k77p8d86sp8lpd9h7gqdd9srbbiq8sd3bvvdvn7sj44gzw9m"; + version = "0.2.2.0"; + sha256 = "1rc4n52idnhqqd8sfacx1xbqabsczqcdfanx9j8sf9g9f7ww8nss"; libraryHaskellDepends = [ base egison-pattern-src @@ -211670,6 +212247,52 @@ self: { } ) { }; + egison-pattern-src-th-mode_0_2_2_0 = callPackage ( + { + mkDerivation, + base, + egison-pattern-src, + haskell-src-exts, + haskell-src-meta, + mtl, + pretty, + tasty, + tasty-discover, + tasty-hunit, + template-haskell, + text, + }: + mkDerivation { + pname = "egison-pattern-src-th-mode"; + version = "0.2.2.0"; + sha256 = "0rb568hfcr58iccm30ymx11rl5r84zsp10y2af7y5hyxms58d8qs"; + libraryHaskellDepends = [ + base + egison-pattern-src + haskell-src-exts + haskell-src-meta + mtl + pretty + template-haskell + text + ]; + testHaskellDepends = [ + base + egison-pattern-src + haskell-src-exts + mtl + tasty + tasty-hunit + template-haskell + text + ]; + testToolDepends = [ tasty-discover ]; + description = "Parser and pretty printer for Egison pattern expressions to use with TH"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + } + ) { }; + egison-quote = callPackage ( { mkDerivation, @@ -211692,7 +212315,6 @@ self: { ]; description = "A quasi quotes for using Egison expression in Haskell code"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -211728,7 +212350,6 @@ self: { ]; description = "A tutorial program for the Egison programming language"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; mainProgram = "egison-tutorial"; } ) { }; @@ -213963,8 +214584,8 @@ self: { }: mkDerivation { pname = "elm-street"; - version = "0.2.2.1"; - sha256 = "0hn3fxpmrwb162r8diijg0dp3rpz241nizdcbclq8friii13c3m4"; + version = "0.2.2.2"; + sha256 = "17b44glmry1cm04jwqgsxvi2kq8jmgccwlinq4r95gs0qlchzllx"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -213995,8 +214616,6 @@ self: { doHaddock = false; description = "Crossing the road between Haskell and Elm"; license = lib.licensesSpdx."MPL-2.0"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -217489,6 +218108,8 @@ self: { pname = "enummapset"; version = "0.7.3.0"; sha256 = "0w3hvypj14j7k8kfzrahyv7v35yj60jjyjv4klvnbw05a10hbj3l"; + revision = "1"; + editedCabalFile = "1815z4vq9k5jab7x95s0qjkmfdrks6ivn2jqrhnm18ljwz60xax8"; libraryHaskellDepends = [ aeson base @@ -222683,6 +223304,282 @@ self: { } ) { }; + eventium-core = callPackage ( + { + mkDerivation, + aeson, + base, + containers, + contravariant, + hspec, + hspec-discover, + http-api-data, + HUnit, + path-pieces, + template-haskell, + text, + transformers, + uuid, + x-sum-type-boilerplate, + }: + mkDerivation { + pname = "eventium-core"; + version = "0.1.0"; + sha256 = "0jrfx6azvan38aqqb5f4dzapzlgkxaj3la6yqkmafs2fdpbqwm7b"; + libraryHaskellDepends = [ + aeson + base + containers + contravariant + http-api-data + path-pieces + template-haskell + text + transformers + uuid + x-sum-type-boilerplate + ]; + testHaskellDepends = [ + aeson + base + containers + contravariant + hspec + http-api-data + HUnit + path-pieces + template-haskell + text + transformers + uuid + x-sum-type-boilerplate + ]; + testToolDepends = [ hspec-discover ]; + description = "Core module for eventium"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + eventium-memory = callPackage ( + { + mkDerivation, + base, + containers, + eventium-core, + eventium-test-helpers, + hspec, + hspec-discover, + HUnit, + mtl, + safe, + stm, + }: + mkDerivation { + pname = "eventium-memory"; + version = "0.1.0"; + sha256 = "197axw6mfbgf9bq9rjd0lpflvmqxm16sk72bxcsppn2vhx0pa4na"; + libraryHaskellDepends = [ + base + containers + eventium-core + mtl + safe + stm + ]; + testHaskellDepends = [ + base + containers + eventium-core + eventium-test-helpers + hspec + HUnit + mtl + safe + stm + ]; + testToolDepends = [ hspec-discover ]; + description = "In-memory implementations for eventium"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + eventium-postgresql = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + eventium-core, + eventium-sql-common, + eventium-test-helpers, + hspec, + hspec-discover, + HUnit, + mtl, + persistent, + persistent-postgresql, + text, + utf8-string, + }: + mkDerivation { + pname = "eventium-postgresql"; + version = "0.1.0"; + sha256 = "0cri25a2r0v2mkk9why8r7pwqh6m8j0dwivcccpi51924ih3jsc3"; + libraryHaskellDepends = [ + aeson + base + bytestring + eventium-core + eventium-sql-common + mtl + persistent + text + ]; + testHaskellDepends = [ + aeson + base + bytestring + eventium-core + eventium-sql-common + eventium-test-helpers + hspec + HUnit + mtl + persistent + persistent-postgresql + text + utf8-string + ]; + testToolDepends = [ hspec-discover ]; + description = "Postgres implementations for eventium"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + eventium-sql-common = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + eventium-core, + mtl, + persistent, + persistent-template, + text, + uuid, + }: + mkDerivation { + pname = "eventium-sql-common"; + version = "0.1.0"; + sha256 = "0px9qz53rrq1a7wzgxgk0ykkgpkzmqh1gdm5xcq931fnl9kp2irh"; + libraryHaskellDepends = [ + aeson + base + bytestring + eventium-core + mtl + persistent + persistent-template + text + uuid + ]; + description = "Common library for SQL event stores"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + eventium-sqlite = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + eventium-core, + eventium-sql-common, + eventium-test-helpers, + hspec, + hspec-discover, + HUnit, + mtl, + persistent, + persistent-sqlite, + text, + uuid, + }: + mkDerivation { + pname = "eventium-sqlite"; + version = "0.1.0"; + sha256 = "0lfpcbqsjmmbi7ld5kqpria0fl8cpvqyqqg7laazd5cwzm4pmwvz"; + libraryHaskellDepends = [ + aeson + base + bytestring + eventium-core + eventium-sql-common + mtl + persistent + text + uuid + ]; + testHaskellDepends = [ + aeson + base + bytestring + eventium-core + eventium-sql-common + eventium-test-helpers + hspec + HUnit + mtl + persistent + persistent-sqlite + text + uuid + ]; + testToolDepends = [ hspec-discover ]; + description = "SQLite implementations for eventium"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + eventium-test-helpers = callPackage ( + { + mkDerivation, + aeson, + aeson-casing, + base, + eventium-core, + extra, + hspec, + monad-logger, + text, + }: + mkDerivation { + pname = "eventium-test-helpers"; + version = "0.1.0"; + sha256 = "1qf7llq1hm30q54h7gm7gpfd1vfrjymr825fhvp9v51cwavqkdrz"; + libraryHaskellDepends = [ + aeson + aeson-casing + base + eventium-core + extra + hspec + monad-logger + text + ]; + description = "Common module used for eventium tests"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + eventlog-live = callPackage ( { mkDerivation, @@ -222826,6 +223723,7 @@ self: { ]; description = "Stream eventlog data to the OpenTelemetry Collector"; license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; mainProgram = "eventlog-live-otelcol"; } ) { }; @@ -228229,6 +229127,8 @@ self: { pname = "fake"; version = "0.1.2"; sha256 = "03v224sag70w1ibymw1cmi3lwby25wl0254p2gzy7s330fmlbymr"; + revision = "1"; + editedCabalFile = "06z2n0n0xld5pgdb3zwgb217c8q76fpvg735viniq47l1iar6jks"; libraryHaskellDepends = [ base containers @@ -229062,8 +229962,8 @@ self: { pname = "fast-digits"; version = "0.3.2.0"; sha256 = "1kwgqxfsm4y7f8cr4zzbwyd9fk6v10hykgqc271k41zf0h6k0pq8"; - revision = "1"; - editedCabalFile = "1rp001n3i9i0xgvi1p0rzsinxmsj89x5xn541vfd0y09ihcl8yyc"; + revision = "2"; + editedCabalFile = "0nmg3jb70xsis90hkxx77za2ws81sqdyapdxh5903hk1pd8jvlcj"; libraryHaskellDepends = [ base ghc-bignum @@ -233672,8 +234572,8 @@ self: { pname = "fgl"; version = "5.8.3.0"; sha256 = "1hb3mgqqz67qwfw2893bslj4mkhs4g0y51c6zpc6r2h6caqibjm4"; - revision = "1"; - editedCabalFile = "13yn7h8rwmdjwscli9cpn44dp5pm2c0km7b3v1cmfq4na16pczsh"; + revision = "2"; + editedCabalFile = "1syrd35vp1cas3x8hfss2mwskbhn0j97mzf97ab8aszc4m9asa59"; libraryHaskellDepends = [ array base @@ -235571,8 +236471,8 @@ self: { }: mkDerivation { pname = "fingertree"; - version = "0.1.6.2"; - sha256 = "1aww2c2alnkaaigh0xx2cvx6s8qddzlfy1xcwf0fddnf9p2psqgj"; + version = "0.1.6.3"; + sha256 = "1f52vgydk1yyyzvyzpy6wcgpba9adgv938m6p0cp3rfzv1gsxq47"; libraryHaskellDepends = [ base deepseq @@ -242805,8 +243705,8 @@ self: { }: mkDerivation { pname = "fortran-src"; - version = "0.16.8"; - sha256 = "152c71a1al7gxk7kzs73nyi237z74nqgf0i8xk98zs5v9cm1h3hk"; + version = "0.16.9"; + sha256 = "15gmfc6n9bn7k72ajj8xnayknnm7y5sci1np5zy58mdmc6wz4q03"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -242897,6 +243797,7 @@ self: { base, bytestring, containers, + Diff, either, filepath, fortran-src, @@ -242911,10 +243812,8 @@ self: { }: mkDerivation { pname = "fortran-src-extras"; - version = "0.5.0"; - sha256 = "0shzrz76j8kwmbkkqgar19c96glijvb5i4r88pn1pjp78342g695"; - revision = "1"; - editedCabalFile = "033snsxq8k221vjmr2ccrw8mhc5kjp1rjslgsa8nmj133mv1ca8c"; + version = "0.5.5"; + sha256 = "187s4vw04l0jpcw85w52p38bfs0cb9nz2r1za4sm8ajq39f8jmqh"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -242922,6 +243821,7 @@ self: { base bytestring containers + Diff either filepath fortran-src @@ -242935,6 +243835,7 @@ self: { base bytestring containers + Diff fortran-src GenericPretty optparse-applicative @@ -242947,6 +243848,7 @@ self: { base bytestring containers + Diff fortran-src GenericPretty hspec @@ -243648,8 +244550,8 @@ self: { }: mkDerivation { pname = "fp-ieee"; - version = "0.1.0.5"; - sha256 = "1alrzx3y39j4bxjgvvx4mj8a3hiifixv4wxy7222lnz6mx18n8pb"; + version = "0.1.0.6"; + sha256 = "19lqi192b6a7s6jq49zniw59sn2v24nnw9713s9rb5wyw0j5jymi"; libraryHaskellDepends = [ base ghc-bignum @@ -243670,8 +244572,6 @@ self: { ]; description = "IEEE 754-2019 compliant operations"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -244693,8 +245593,8 @@ self: { }: mkDerivation { pname = "freckle-env"; - version = "0.0.1.2"; - sha256 = "101rp0kzjhhhj08a77ysn1d2kadyg9fpjc758w0jmg72cp211vl2"; + version = "0.0.1.3"; + sha256 = "09jc6qy4pwzfaagxl9sq4sk13326cddkc81p69k6wxi9zhxaj5x5"; libraryHaskellDepends = [ base dotenv @@ -244726,8 +245626,8 @@ self: { }: mkDerivation { pname = "freckle-exception"; - version = "0.0.0.0"; - sha256 = "1yxgrg0vqr9qhldww6fz1j9y5cj2rc3kbd40w59cq540plmcmylp"; + version = "0.0.0.2"; + sha256 = "1vdx8q2n3alq3k9m5dc9fc7xrmgja8pm58bz5xilj1ws92kv8mnx"; libraryHaskellDepends = [ aeson annotated-exception @@ -244787,8 +245687,8 @@ self: { }: mkDerivation { pname = "freckle-http"; - version = "0.3.0.0"; - sha256 = "13b32m9da2vm0740bb134y4xj0gk0cz2njadwybnjddkc0il19n8"; + version = "0.3.0.1"; + sha256 = "1b5dxyaq7d4fmcgmm1ap90419yphw9y585ipf1bs48vjfjpxszp3"; libraryHaskellDepends = [ aeson annotated-exception @@ -244869,8 +245769,8 @@ self: { }: mkDerivation { pname = "freckle-kafka"; - version = "0.0.0.3"; - sha256 = "0l123k59jrcpl9hw3ciis22z7y0lrgsi99362zg5slrlmn8fs9nb"; + version = "0.0.0.4"; + sha256 = "10cd415iw6yaz936jk3fzjgmxh8gxx49im7lvr7lz4aw2jdz5wxy"; libraryHaskellDepends = [ aeson annotated-exception @@ -245063,8 +245963,8 @@ self: { }: mkDerivation { pname = "freckle-prelude"; - version = "0.0.4.0"; - sha256 = "11qhlk66435qw2qkdmansd6x416ibck4xhd5298jciy53snhbhz8"; + version = "0.0.4.1"; + sha256 = "1477qiydm81nkavxrbh83pl3v0mbwnzf1592yb9yvi66qm3w0kwv"; libraryHaskellDepends = [ base containers @@ -247603,6 +248503,8 @@ self: { ]; description = "Abstract interface for the file system"; license = lib.licensesSpdx."Apache-2.0"; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -248394,6 +249296,8 @@ self: { ]; description = "The Fudgets Library"; license = "unknown"; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { @@ -249824,8 +250728,8 @@ self: { }: mkDerivation { pname = "fused-effects"; - version = "1.1.2.5"; - sha256 = "1jpa9n06pph20hr73rx1shljdk78w4nnv285qsf28iz9mx6ggqvg"; + version = "1.1.2.6"; + sha256 = "0a7px1ss7iwkrg9bmcdl1jw5wdclng0ka2p5zm816dw36ky52jdz"; libraryHaskellDepends = [ base transformers @@ -249913,6 +250817,45 @@ self: { } ) { }; + fused-effects-logger = callPackage ( + { + mkDerivation, + base, + bytestring, + directory, + filepath, + fused-effects, + ghc-prim, + hspec, + hspec-discover, + monad-logger, + }: + mkDerivation { + pname = "fused-effects-logger"; + version = "0.0.1.1"; + sha256 = "197bqlsbm29bbj5j6xivj3c7ciq75g48g28lbzammw05a3dxhlg5"; + libraryHaskellDepends = [ + base + bytestring + fused-effects + monad-logger + ]; + testHaskellDepends = [ + base + bytestring + directory + filepath + fused-effects + ghc-prim + hspec + monad-logger + ]; + testToolDepends = [ hspec-discover ]; + description = "Logger effect for the `fused-effects` library"; + license = lib.licenses.gpl3Only; + } + ) { }; + fused-effects-mwc-random = callPackage ( { mkDerivation, @@ -252013,7 +252956,6 @@ self: { ]; description = "Automatically spin up and spin down local daemons"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -252057,7 +252999,6 @@ self: { ]; description = "Manage PostgreSQL servers with gargoyle"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -252089,7 +253030,6 @@ self: { ]; description = "Connect to gargoyle-managed postgresql instances"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -252125,7 +253065,6 @@ self: { ]; description = "Manage PostgreSQL servers with gargoyle and nix"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { inherit (pkgs) libpq; }; @@ -254402,6 +255341,8 @@ self: { pname = "generic-data"; version = "1.1.0.2"; sha256 = "1dfs728nbkilzfmdk6gnjk7wdk1habqn35pb071zcmcp8ll0lzpj"; + revision = "1"; + editedCabalFile = "0f2aijk70cb01p8yzbg5jq4gawnaryg8qnb1jx4xx92mfmn673p8"; libraryHaskellDepends = [ ap-normalize base @@ -255567,8 +256508,8 @@ self: { }: mkDerivation { pname = "generics-eot"; - version = "0.4.0.1"; - sha256 = "0s6zhs6l1xcig66757664f1bchzlm4f1ijvg5dsnacq05jbdxrlv"; + version = "0.4.1.0"; + sha256 = "02l69k9h12wn1a07y010ybcb9jlla9gdnj49xf1qynyipsq5jl03"; libraryHaskellDepends = [ base ]; testHaskellDepends = [ base @@ -255586,8 +256527,6 @@ self: { testToolDepends = [ markdown-unlit ]; description = "A library for generic programming that aims to be easy to understand"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -257263,23 +258202,19 @@ self: { mkDerivation, base, genvalidity, - pretty-show, QuickCheck, sydtest, sydtest-discover, - validity, }: mkDerivation { pname = "genvalidity-sydtest"; - version = "1.0.0.0"; - sha256 = "11v66s8srcfigb4jkvz7nm0ynczg8mdslw4vn98qyv2j85sp6l45"; + version = "1.0.1.0"; + sha256 = "12znjdl04lfy6sksj458x1qmd7fpkcc1la6vqdgm7dh94zfjpd3h"; libraryHaskellDepends = [ base genvalidity - pretty-show QuickCheck sydtest - validity ]; testHaskellDepends = [ base @@ -258736,7 +259671,7 @@ self: { } ) { }; - ghc_9_12_2 = + ghc_9_14_1 = callPackage ( { @@ -258757,11 +259692,13 @@ self: { ghc-boot, ghc-boot-th, ghc-heap, + ghc-internal, ghci, happy, hpc, os-string, process, + rts, semaphore-compat, stm, time, @@ -258770,8 +259707,8 @@ self: { }: mkDerivation { pname = "ghc"; - version = "9.12.2"; - sha256 = "0l5rrnfv933m37dziqaf5iv4nqirig1mfaj037by94s486ggx5f7"; + version = "9.14.1"; + sha256 = "0025pjn1llszyq56zsfsxz5wm23lj2hiz451rjnqikzy3fwmyxdz"; setupHaskellDepends = [ base Cabal @@ -258793,10 +259730,12 @@ self: { ghc-boot ghc-boot-th ghc-heap + ghc-internal ghci hpc os-string process + rts semaphore-compat stm time @@ -258875,7 +259814,7 @@ self: { } ) { }; - ghc-boot_9_12_1 = callPackage ( + ghc-boot_9_14_1 = callPackage ( { mkDerivation, base, @@ -258892,8 +259831,8 @@ self: { }: mkDerivation { pname = "ghc-boot"; - version = "9.12.1"; - sha256 = "10yylnkjn628pbdqs2zvvxh3208xrjav8l7mqz7ck7gb9pvx44z4"; + version = "9.14.1"; + sha256 = "0h2grj17s4czimvxnpn224adrmxa3g2nc82zbhm3ga70lzqyaiaj"; setupHaskellDepends = [ base Cabal @@ -258918,14 +259857,23 @@ self: { } ) { }; - ghc-boot-th_9_10_3 = callPackage ( - { mkDerivation, base }: + ghc-boot-th_9_14_1 = callPackage ( + { + mkDerivation, + base, + ghc-internal, + pretty, + }: mkDerivation { pname = "ghc-boot-th"; - version = "9.10.3"; - sha256 = "0iizi093swkdblngqi11v6v4rrf93wp4sqnpmisaxkb5kghf3wpj"; - libraryHaskellDepends = [ base ]; - description = "Shared functionality between GHC and the @template-haskell@ library"; + version = "9.14.1"; + sha256 = "1r3cmk180nbnlm51xw5n8l8vsg8pzafj15mz6rhfigq85rbc3jsf"; + libraryHaskellDepends = [ + base + ghc-internal + pretty + ]; + description = "Shared functionality between GHC and the template-haskell library"; license = lib.licenses.bsd3; hydraPlatforms = lib.platforms.none; } @@ -259057,8 +260005,8 @@ self: { { mkDerivation, base }: mkDerivation { pname = "ghc-compat"; - version = "0.5.0.0"; - sha256 = "0kjn374x52drq4v3l90h82nkilm81fy1bv08gicykg0nc619lmp4"; + version = "0.5.4.0"; + sha256 = "0lfny2dyq1r58wbzrwsz3kw9kyb0p0jcqkzih41lk8ychn7zf7d6"; libraryHaskellDepends = [ base ]; description = "GHC compatibility for MicroHs"; license = lib.licensesSpdx."Apache-2.0"; @@ -259478,7 +260426,6 @@ self: { testHaskellDepends = [ base ]; description = "A step-through machine-interface debugger for GHC Haskell"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; mainProgram = "ghc-debug-adapter"; } ) { }; @@ -259663,6 +260610,30 @@ self: { } ) { }; + ghc-eventlog-loopback = callPackage ( + { + mkDerivation, + base, + bytestring, + ghc-events, + }: + mkDerivation { + pname = "ghc-eventlog-loopback"; + version = "0.1.0.0"; + sha256 = "17v8zi52vnvn30q54jjsf6mcgswk5b4l0hajwrc7dnbpk9lrjfkq"; + libraryHaskellDepends = [ + base + bytestring + ]; + testHaskellDepends = [ + base + ghc-events + ]; + description = "Let an application read its own eventlog"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + ghc-events = callPackage ( { mkDerivation, @@ -259703,6 +260674,43 @@ self: { } ) { }; + ghc-events_0_21_0_0 = callPackage ( + { + mkDerivation, + base, + binary, + bytestring, + containers, + text, + vector, + }: + mkDerivation { + pname = "ghc-events"; + version = "0.21.0.0"; + sha256 = "0g48fhm9iz53syxck9c788j6bc55811326iyac5kfda8ar7bsy2h"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base + binary + bytestring + containers + text + vector + ]; + executableHaskellDepends = [ + base + bytestring + containers + ]; + testHaskellDepends = [ base ]; + description = "Library and tool for parsing .eventlog files from GHC"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + mainProgram = "ghc-events"; + } + ) { }; + ghc-events-analyze = callPackage ( { mkDerivation, @@ -260150,21 +261158,19 @@ self: { } ) { }; - ghc-experimental_9_1201_0 = callPackage ( + ghc-experimental_9_1401_0 = callPackage ( { mkDerivation, base, ghc-internal, - ghc-prim, }: mkDerivation { pname = "ghc-experimental"; - version = "9.1201.0"; - sha256 = "10rk2vvf6sh1wbg6hkcb9lnnvxysyjjgz24dhdz7k12gwnlgnf7i"; + version = "9.1401.0"; + sha256 = "118m1lrazip7zgivg42ijiz1n7ipbqilvpn93bz6hc68j339av0n"; libraryHaskellDepends = [ base ghc-internal - ghc-prim ]; description = "Experimental features of GHC's standard library"; license = lib.licensesSpdx."BSD-3-Clause"; @@ -260182,8 +261188,8 @@ self: { pname = "ghc-gc-hook"; version = "0.2.1.0"; sha256 = "0d98j3wyrwq6rgfdcky5ag3rxx1kzawvhnncr9nab058n2zksi7x"; - revision = "1"; - editedCabalFile = "1i3sz12zqcbqfps8wx3rwbdcjbvd654pixj92n2pl6h709xbcc2y"; + revision = "2"; + editedCabalFile = "0fyinix4wpl6d3x6hs43f1s7pgy6snfssa7dd4k0f8z28pg948ls"; libraryHaskellDepends = [ base clock @@ -260247,26 +261253,22 @@ self: { } ) { }; - ghc-heap_9_12_1 = callPackage ( + ghc-heap_9_14_1 = callPackage ( { mkDerivation, base, containers, ghc-internal, - ghc-prim, rts, }: mkDerivation { pname = "ghc-heap"; - version = "9.12.1"; - sha256 = "02g1r4hxz7w1a82mb9z7zzjad54hl9m4k1i59d1adsr8cc1cg75p"; - revision = "1"; - editedCabalFile = "0rk36kpkmlfyfh1lqbmg60c9wg96arx6fgqp2pgj80qlp9gkzasy"; + version = "9.14.1"; + sha256 = "14lalg1vbm44ga1f6klcl3827l9p0p47jdy9k8i1fzz36za7sray"; libraryHaskellDepends = [ base containers ghc-internal - ghc-prim rts ]; description = "Functions for walking GHC's heap"; @@ -260608,22 +261610,12 @@ self: { } ) { }; - ghc-internal_9_1201_0 = callPackage ( - { - mkDerivation, - ghc-bignum, - ghc-prim, - rts, - }: + ghc-internal_9_1401_0 = callPackage ( + { mkDerivation }: mkDerivation { pname = "ghc-internal"; - version = "9.1201.0"; - sha256 = "046jam2fw5y8wqlkpnwigi2sjwgf45f572xs3nk228h6wxgfsl9y"; - libraryHaskellDepends = [ - ghc-bignum - ghc-prim - rts - ]; + version = "9.1401.0"; + sha256 = "0cm61xppbqdc6g3z746dbsvbk96g687lrk3ncz0ysmm03h6rbr42"; description = "Basic libraries"; license = lib.licensesSpdx."BSD-3-Clause"; hydraPlatforms = lib.platforms.none; @@ -260722,6 +261714,71 @@ self: { } ) { }; + ghc-lib_9_8_5_20250214 = callPackage ( + { + mkDerivation, + alex, + array, + base, + binary, + bytestring, + containers, + deepseq, + directory, + exceptions, + filepath, + ghc-lib-parser, + ghc-prim, + happy, + hpc, + parsec, + pretty, + process, + rts, + semaphore-compat, + stm, + time, + transformers, + unix, + }: + mkDerivation { + pname = "ghc-lib"; + version = "9.8.5.20250214"; + sha256 = "1f0q8y22k8qwqjax4bvn1cbg2whxmcnfydp6izw54rk4yqyx5b0c"; + enableSeparateDataOutput = true; + libraryHaskellDepends = [ + array + base + binary + bytestring + containers + deepseq + directory + exceptions + filepath + ghc-lib-parser + ghc-prim + hpc + parsec + pretty + process + rts + semaphore-compat + stm + time + transformers + unix + ]; + libraryToolDepends = [ + alex + happy + ]; + description = "The GHC API, decoupled from GHC versions"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + ghc-lib_9_10_3_20250912 = callPackage ( { mkDerivation, @@ -260853,6 +261910,73 @@ self: { } ) { }; + ghc-lib_9_14_1_20251220 = callPackage ( + { + mkDerivation, + alex, + array, + base, + binary, + bytestring, + containers, + deepseq, + directory, + exceptions, + filepath, + ghc-lib-parser, + ghc-prim, + happy, + hpc, + os-string, + parsec, + pretty, + process, + rts, + semaphore-compat, + stm, + time, + transformers, + unix, + }: + mkDerivation { + pname = "ghc-lib"; + version = "9.14.1.20251220"; + sha256 = "19g9xy1l02sg50mg7fy8x7i5z1hxm4bz4iwqp1kmfrgnzc3355qj"; + enableSeparateDataOutput = true; + libraryHaskellDepends = [ + array + base + binary + bytestring + containers + deepseq + directory + exceptions + filepath + ghc-lib-parser + ghc-prim + hpc + os-string + parsec + pretty + process + rts + semaphore-compat + stm + time + transformers + unix + ]; + libraryToolDepends = [ + alex + happy + ]; + description = "The GHC API, decoupled from GHC versions"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + ghc-lib-parser_9_6_7_20250325 = callPackage ( { mkDerivation, @@ -260910,7 +262034,64 @@ self: { } ) { }; - ghc-lib-parser_9_8_5_20250214 = callPackage ( + ghc-lib-parser_9_8_5_20250214 = callPackage ( + { + mkDerivation, + alex, + array, + base, + binary, + bytestring, + containers, + deepseq, + directory, + exceptions, + filepath, + ghc-internal, + ghc-prim, + happy, + parsec, + pretty, + process, + time, + transformers, + unix, + }: + mkDerivation { + pname = "ghc-lib-parser"; + version = "9.8.5.20250214"; + sha256 = "1l07lkc4d9ryxy26fr7mry4691m0f3p0wi6b6l1jzr968hrs06cb"; + enableSeparateDataOutput = true; + libraryHaskellDepends = [ + array + base + binary + bytestring + containers + deepseq + directory + exceptions + filepath + ghc-internal + ghc-prim + parsec + pretty + process + time + transformers + unix + ]; + libraryToolDepends = [ + alex + happy + ]; + description = "The GHC API, decoupled from GHC versions"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + ghc-lib-parser = callPackage ( { mkDerivation, alex, @@ -260926,6 +262107,7 @@ self: { ghc-internal, ghc-prim, happy, + os-string, parsec, pretty, process, @@ -260935,8 +262117,8 @@ self: { }: mkDerivation { pname = "ghc-lib-parser"; - version = "9.8.5.20250214"; - sha256 = "1l07lkc4d9ryxy26fr7mry4691m0f3p0wi6b6l1jzr968hrs06cb"; + version = "9.12.2.20250421"; + sha256 = "1lscfnbpmyv0fahl9y33kwiypnp45iljljax69dxhlr9zdijv7x4"; enableSeparateDataOutput = true; libraryHaskellDepends = [ array @@ -260950,6 +262132,7 @@ self: { filepath ghc-internal ghc-prim + os-string parsec pretty process @@ -260963,11 +262146,10 @@ self: { ]; description = "The GHC API, decoupled from GHC versions"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; } ) { }; - ghc-lib-parser = callPackage ( + ghc-lib-parser_9_14_1_20251220 = callPackage ( { mkDerivation, alex, @@ -260983,6 +262165,7 @@ self: { ghc-internal, ghc-prim, happy, + hpc, os-string, parsec, pretty, @@ -260993,8 +262176,8 @@ self: { }: mkDerivation { pname = "ghc-lib-parser"; - version = "9.12.2.20250421"; - sha256 = "1lscfnbpmyv0fahl9y33kwiypnp45iljljax69dxhlr9zdijv7x4"; + version = "9.14.1.20251220"; + sha256 = "02fwk78h78zrs6j36s6nqfc8d8b77h62xgfxgb2g1vjcnz850dw1"; enableSeparateDataOutput = true; libraryHaskellDepends = [ array @@ -261008,6 +262191,7 @@ self: { filepath ghc-internal ghc-prim + hpc os-string parsec pretty @@ -261022,6 +262206,7 @@ self: { ]; description = "The GHC API, decoupled from GHC versions"; license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; } ) { }; @@ -261162,6 +262347,62 @@ self: { } ) { }; + ghc-lib-parser-ex_9_14_2_0 = callPackage ( + { + mkDerivation, + base, + bytestring, + containers, + directory, + extra, + filepath, + ghc-lib-parser, + optparse-applicative, + tasty, + tasty-hunit, + time, + uniplate, + }: + mkDerivation { + pname = "ghc-lib-parser-ex"; + version = "9.14.2.0"; + sha256 = "0bjivirfssdbflwka19nwb6w6w85kcr1hk2a6ifml8x2drgkzm2h"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base + bytestring + containers + ghc-lib-parser + uniplate + ]; + executableHaskellDepends = [ + base + directory + extra + filepath + optparse-applicative + time + ]; + testHaskellDepends = [ + base + bytestring + containers + directory + extra + filepath + ghc-lib-parser + tasty + tasty-hunit + uniplate + ]; + description = "Programming with GHC parse trees"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + mainProgram = "ghc-lib-parser-ex-build-tool"; + } + ) { }; + ghc-magic-dict-compat = callPackage ( { mkDerivation, @@ -262033,6 +263274,121 @@ self: { } ) { }; + ghc-stack-annotations = callPackage ( + { mkDerivation, base }: + mkDerivation { + pname = "ghc-stack-annotations"; + version = "0.1.0.0"; + sha256 = "1b5xm1zlvw3kv45y2dksisc4lhfbvk7df7sb7n1ypxmdvzwi010a"; + libraryHaskellDepends = [ base ]; + description = "RTS Callstack annotation library"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + + ghc-stack-profiler = callPackage ( + { + mkDerivation, + base, + binary, + bytestring, + ghc-heap, + ghc-internal, + ghc-stack-profiler-core, + ghc-trace-events, + text, + }: + mkDerivation { + pname = "ghc-stack-profiler"; + version = "0.1.0.0"; + sha256 = "0l5qbabpcn0ywr3q12bmbbvq0j5shsn5jf7sd1frq8crfhy546ni"; + libraryHaskellDepends = [ + base + binary + bytestring + ghc-heap + ghc-internal + ghc-stack-profiler-core + ghc-trace-events + text + ]; + description = "RTS Callstack profiler for GHC"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + + ghc-stack-profiler-core = callPackage ( + { + mkDerivation, + base, + binary, + bytestring, + containers, + text, + transformers, + }: + mkDerivation { + pname = "ghc-stack-profiler-core"; + version = "0.1.0.0"; + sha256 = "17chnk3kw9dbf63j0hhx2js3i871kkqm8mpvkgcg7in5rm27v0ra"; + revision = "1"; + editedCabalFile = "0ypr0v6r3h5y1iwgi9yp3w6hm4rsf765qmrhprbhlhwp4yd2b2yc"; + libraryHaskellDepends = [ + base + binary + bytestring + containers + text + transformers + ]; + description = "Thread sample types and serialisation logic for `ghc-stack-profiler`"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + + ghc-stack-profiler-speedscope = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + containers, + extra, + ghc-events, + ghc-stack-profiler-core, + hs-speedscope, + machines, + optparse-applicative, + text, + }: + mkDerivation { + pname = "ghc-stack-profiler-speedscope"; + version = "0.1.0.0"; + sha256 = "01x0rphwn5hlp2j0d75wqmzn0m1qi6x51vaqp34nv1ig63qrc1zy"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson + base + bytestring + containers + extra + ghc-events + ghc-stack-profiler-core + hs-speedscope + machines + optparse-applicative + text + ]; + executableHaskellDepends = [ base ]; + description = "Convert eventlog messages from `ghc-stack-profiler` into a speedscope json"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + mainProgram = "ghc-stack-profiler-speedscope"; + broken = true; + } + ) { }; + ghc-stdin = callPackage ( { mkDerivation, @@ -262654,7 +264010,7 @@ self: { } ) { }; - ghc-typelits-extra_0_5_1 = callPackage ( + ghc-typelits-extra_0_5_2 = callPackage ( { mkDerivation, base, @@ -262672,8 +264028,8 @@ self: { }: mkDerivation { pname = "ghc-typelits-extra"; - version = "0.5.1"; - sha256 = "0aikpiwcmsb71r2fbjik4pwyniks2rfikn6bgz0djnfbxmgy691k"; + version = "0.5.2"; + sha256 = "03l0gb3imz53pqnnqaqgxsvqxzv0jqv9syjfdvlfqah6kib6acii"; libraryHaskellDepends = [ base containers @@ -262859,7 +264215,7 @@ self: { } ) { }; - ghc-typelits-natnormalise_0_9_1 = callPackage ( + ghc-typelits-natnormalise_0_9_3 = callPackage ( { mkDerivation, base, @@ -262875,8 +264231,8 @@ self: { }: mkDerivation { pname = "ghc-typelits-natnormalise"; - version = "0.9.1"; - sha256 = "190982vj945ppi83fd1j21y9snqrr4v8vbg2hnq5c0rgqch15g6k"; + version = "0.9.3"; + sha256 = "0q5s6sz212xp88cwliizxz32jk1rk1b853riaypw7kvim7ssv90v"; libraryHaskellDepends = [ base containers @@ -264721,6 +266077,33 @@ self: { } ) { }; + gherkin = callPackage ( + { + mkDerivation, + base, + HUnit, + parsec, + text, + }: + mkDerivation { + pname = "gherkin"; + version = "0.0.0.2"; + sha256 = "0kqxch8b1d829ixfsj2xl2xy0h6l6l48h5zp347min8rxs3k680c"; + libraryHaskellDepends = [ + base + parsec + text + ]; + testHaskellDepends = [ + base + HUnit + text + ]; + description = "Parser for a language similar to Cucumber's Gherkin"; + license = "unknown"; + } + ) { }; + ghost-buster = callPackage ( { mkDerivation, @@ -269576,9 +270959,7 @@ self: { ]; description = "Determine which Git repositories need actions to be taken"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "git-all"; - broken = true; } ) { }; @@ -269692,8 +271073,8 @@ self: { }: mkDerivation { pname = "git-annex"; - version = "10.20251114"; - sha256 = "0rl72ygqgzq97ri86k9asinv14s56g06q2w1nlnb4sx3a91sw7as"; + version = "10.20251215"; + sha256 = "17xn1mf6f785yc71ig7ayvhbvrrv2ysgjj2qdk17bw70xzhwbmxq"; configureFlags = [ "-fassistant" "-f-benchmark" @@ -270333,7 +271714,6 @@ self: { filepath, gitlib, gitlib-libgit2, - lifted-async, logging, old-locale, optparse-applicative, @@ -270348,10 +271728,8 @@ self: { }: mkDerivation { pname = "git-monitor"; - version = "3.1.1.5"; - sha256 = "0jqmcldnl1hd0za33jw4490qgx9ngqbh7pyy47y1pb9j1hvci9jj"; - revision = "1"; - editedCabalFile = "18s9vigsi5z5j2m5q956nj4h84bwgfh8v010dz4jahhrlkavg1ra"; + version = "3.2.2"; + sha256 = "1x1q8pl871hhxnaig9mfdxzwgjzsn70yc5drn534h0zzk52zj5d1"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -270362,7 +271740,6 @@ self: { filepath gitlib gitlib-libgit2 - lifted-async logging old-locale optparse-applicative @@ -275007,6 +276384,38 @@ self: { } ) { }; + gloss-relative = callPackage ( + { + mkDerivation, + base, + bytestring, + containers, + gloss, + gloss-rendering, + mtl, + OpenGL, + }: + mkDerivation { + pname = "gloss-relative"; + version = "0.1.3.0"; + sha256 = "1z1ya44029k6apc1bbpcf90dhr5npxnikw1ix7xq6mrh413yrbiq"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base + bytestring + containers + gloss + gloss-rendering + mtl + OpenGL + ]; + executableHaskellDepends = [ base ]; + description = "Painless relative-sized pictures in Gloss"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + gloss-rendering = callPackage ( { mkDerivation, @@ -279919,35 +281328,6 @@ self: { ) { }; google-oauth2-jwt = callPackage ( - { - mkDerivation, - base, - base64-bytestring, - bytestring, - HsOpenSSL, - RSA, - text, - unix-time, - }: - mkDerivation { - pname = "google-oauth2-jwt"; - version = "0.3.3.1"; - sha256 = "1c3z6pi04xk7gi7fyhiq3i102g7vnyygp5vyfm4yj5xfq4npqjg1"; - libraryHaskellDepends = [ - base - base64-bytestring - bytestring - HsOpenSSL - RSA - text - unix-time - ]; - description = "Get a signed JWT for Google Service Accounts"; - license = lib.licenses.bsd3; - } - ) { }; - - google-oauth2-jwt_0_3_3_2 = callPackage ( { mkDerivation, base, @@ -279973,7 +281353,6 @@ self: { ]; description = "Get a signed JWT for Google Service Accounts"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -280947,8 +282326,6 @@ self: { ]; description = "A Haskell Vault KVv2 secret engine client"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -282631,6 +284008,7 @@ self: { ]; description = "Native Haskell implementation of the gRPC framework"; license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; } ) { }; @@ -284103,7 +285481,6 @@ self: { testToolDepends = [ markdown-unlit ]; description = "A simple interface for generating persistent data and linking its dependencies"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -284281,8 +285658,8 @@ self: { }: mkDerivation { pname = "graphwiz"; - version = "1.0.0"; - sha256 = "0ssddsg7wv007ll6jazhncdvs6pd42pc8nfvg4md1a2xhrzacv03"; + version = "2.0.0"; + sha256 = "1lh6rggylnwsyadbiq895lnykjyiv230x8bp5fvww9vi0b2fjwyy"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -284299,6 +285676,7 @@ self: { executableHaskellDepends = [ base lens + text text-builder ]; testHaskellDepends = [ @@ -284322,9 +285700,7 @@ self: { testToolDepends = [ tasty-autocollect ]; description = "Monadic DOT graph builder DSL"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; mainProgram = "example"; - broken = true; } ) { }; @@ -290441,6 +291817,52 @@ self: { } ) { }; + haal = callPackage ( + { + mkDerivation, + base, + containers, + hspec, + mtl, + process, + QuickCheck, + random, + vector, + }: + mkDerivation { + pname = "haal"; + version = "0.1.0.0"; + sha256 = "09kahyxrvdp3nyidjqjivxbqlhnkpq7fk8rkn7y0v0dlfj9zqmnz"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base + containers + mtl + random + vector + ]; + executableHaskellDepends = [ + base + containers + mtl + process + ]; + testHaskellDepends = [ + base + containers + hspec + mtl + QuickCheck + random + ]; + description = "A Haskell library for Active Automata Learning"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + broken = true; + } + ) { }; + haar = callPackage ( { mkDerivation, @@ -292027,6 +293449,8 @@ self: { pname = "hackage-repo-tool"; version = "0.1.1.5"; sha256 = "0zm5hxx9hbbapp7ncrv600kvij1f7k3k48a2d9zdpa9snxfl3c3j"; + revision = "1"; + editedCabalFile = "0qqhb4zihq2z6w2zdblpk3da91kjvbzgba4z2jllsr73x4kj5cgw"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -292102,7 +293526,7 @@ self: { } ) { }; - hackage-revdeps_0_2 = callPackage ( + hackage-revdeps_0_3 = callPackage ( { mkDerivation, alfred-margaret, @@ -292118,13 +293542,12 @@ self: { tar, text, time, + zlib, }: mkDerivation { pname = "hackage-revdeps"; - version = "0.2"; - sha256 = "1xzfyaq666gydpzbq61v7a9n96gh039jrfn8vjhca5v4v22yhxsj"; - revision = "1"; - editedCabalFile = "1753nlx4yk2jrpj1wgl4lnwmw0nf33da7kd4d1lqrgy9fr98aqvy"; + version = "0.3"; + sha256 = "19kfd0xan723y6h8n9vww78nfd1hi6ch1mr655s9fignv8fdm94h"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -292137,6 +293560,7 @@ self: { tar text time + zlib ]; executableHaskellDepends = [ ansi-terminal @@ -292194,6 +293618,8 @@ self: { pname = "hackage-security"; version = "0.6.3.2"; sha256 = "1yb8hz4h4wmmj2smr31nmfjfpfqrv3xcn3x92c59s8fmis39g3xz"; + revision = "1"; + editedCabalFile = "0bglycgf2l1dxilprs5s3bc4gznvilqs48kvv7m11y5wzip4g8jx"; libraryHaskellDepends = [ base base16-bytestring @@ -292259,6 +293685,8 @@ self: { pname = "hackage-security-HTTP"; version = "0.1.1.3"; sha256 = "0v9hpnzh3if7fxcah51gkhla962xnhf64hj7lrs83rx3azv3i1qx"; + revision = "1"; + editedCabalFile = "0arl3hmdzfay8na6scbwjlv1dnr4a7r8ka9iajx4qw3l4jpgamdw"; libraryHaskellDepends = [ base bytestring @@ -299241,8 +300669,8 @@ self: { }: mkDerivation { pname = "happy-dot"; - version = "1.0.0.0"; - sha256 = "1m7i6akv2009g1q5jhrv14fkq12kq5zkk11g8f0zsgflljd4w5a2"; + version = "1.0.0.1"; + sha256 = "17ifxw2i98aywl5wk7dlbngl8dvxr3flabrxdrvl8960n982yzch"; libraryHaskellDepends = [ array base @@ -299268,8 +300696,6 @@ self: { ]; description = "Parser for dot made with happy"; license = lib.licenses.gpl3Only; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -301044,20 +302470,20 @@ self: { base64-bytestring, bytestring, containers, - cryptonite, + crypton, hspec, memory, QuickCheck, }: mkDerivation { pname = "hash-tree"; - version = "0.0.0"; - sha256 = "0nxnjpwd6cw5m064jmgylscxfc5xhhm0abzdknprasmh6ln4525j"; + version = "0.0.1"; + sha256 = "0dixldpjd2mm4r9cvklg6xsh1jx3kadab8scas7g97jiq9cwilhq"; libraryHaskellDepends = [ base bytestring containers - cryptonite + crypton memory ]; testHaskellDepends = [ @@ -301065,7 +302491,7 @@ self: { base64-bytestring bytestring containers - cryptonite + crypton hspec memory QuickCheck @@ -305902,6 +307328,135 @@ self: { } ) { }; + haskell-opentimestamps = callPackage ( + { + mkDerivation, + aeson, + base, + base16-bytestring, + binary, + bitcoind-rpc, + bytes, + bytestring, + cereal, + containers, + cryptonite, + directory, + filepath, + haskoin-core, + hspec, + http-client, + http-conduit, + memory, + mtl, + process, + QuickCheck, + random, + servant, + text, + time, + }: + mkDerivation { + pname = "haskell-opentimestamps"; + version = "0.5.5.1"; + sha256 = "04dzai6q93gzqjx3jqhgnzsy6fmsalyamylqsnmxg09i0zgbyk66"; + libraryHaskellDepends = [ + aeson + base + base16-bytestring + binary + bitcoind-rpc + bytes + bytestring + cereal + containers + cryptonite + filepath + haskoin-core + http-client + http-conduit + memory + mtl + servant + text + time + ]; + testHaskellDepends = [ + base + base16-bytestring + binary + bitcoind-rpc + bytes + bytestring + containers + directory + filepath + haskoin-core + hspec + memory + process + QuickCheck + random + text + time + ]; + description = "Haskell implementation of OpenTimestamps"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + haskell-opentimestamps-client = callPackage ( + { + mkDerivation, + base, + base16, + bytestring, + containers, + cryptonite, + directory, + filepath, + haskell-opentimestamps, + memory, + optparse-applicative, + temporary, + text, + time, + }: + mkDerivation { + pname = "haskell-opentimestamps-client"; + version = "0.4.1.0"; + sha256 = "0w6avx3jsj875ljddc82pzqqckgbc113c1mj3ghp473palzjigni"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base + base16 + bytestring + containers + cryptonite + directory + filepath + haskell-opentimestamps + memory + temporary + text + time + ]; + executableHaskellDepends = [ + base + bytestring + cryptonite + memory + optparse-applicative + ]; + description = "Haskell implementation of a basic OpenTimestamps client"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + mainProgram = "haskell-opentimestamps-client-exe"; + } + ) { }; + haskell-overridez = callPackage ( { mkDerivation, @@ -311338,8 +312893,8 @@ self: { }: mkDerivation { pname = "hasktorch"; - version = "0.2.1.7"; - sha256 = "1ypzkgmwlf31mjqdrdq7fb7imniaqy7k8h4ii92dcpj7r2gdlb2x"; + version = "0.2.1.8"; + sha256 = "02zxfiqip3r12k39a9hp53sdb59x3gxp2jv9iw77miz9cdy9ky7y"; setupHaskellDepends = [ base Cabal @@ -315352,7 +316907,6 @@ self: { description = "Library for checking for weak/compromised passwords"; license = lib.licensesSpdx."BSD-3-Clause"; mainProgram = "readme"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -322516,8 +324070,8 @@ self: { }: mkDerivation { pname = "heptapod"; - version = "1.1.0.0"; - sha256 = "0s7fq0rh0aax7rfqd49li64n9kw86l8i75mzrkqrpd945xb3zkn9"; + version = "1.1.0.1"; + sha256 = "19453ljazkgssj53ws2xlaln6kvr2fv1yh0crjx4zr17vl7pgc7x"; libraryHaskellDepends = [ base bytestring @@ -327152,7 +328706,6 @@ self: { ]; description = "Tools for working on (di)graphs"; license = lib.licenses.gpl3Only; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -332490,8 +334043,8 @@ self: { }: mkDerivation { pname = "hledger"; - version = "1.50.3"; - sha256 = "0qiii5gdsw0x1dkxsws481mx49fg2013l6y0vsza281ziryzwcm2"; + version = "1.51.1"; + sha256 = "05hpsb3iqr5pxfq0nghs2zf51bmfx43czx8n18vm60sbqby9dw7b"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -332853,8 +334406,8 @@ self: { pname = "hledger-iadd"; version = "1.3.22"; sha256 = "077v7jgqhmpkg8m68bg4qi0jxl4zkg17aqk5n58ni3s2h71lkwlv"; - revision = "1"; - editedCabalFile = "16ac7v90dd0lwf9dwiylc8w0zq1al45ah2nlr177kvglfsxjvv12"; + revision = "2"; + editedCabalFile = "0jnczff457f3n4sgz16iiyfsdhr2dhxdvxpb3dls24n7452vf2mw"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -332934,8 +334487,8 @@ self: { pname = "hledger-interest"; version = "1.6.7"; sha256 = "1jirygghw82zi8z160j45qzfcj1l89vckqr7hrv78h3f3pim6np4"; - revision = "3"; - editedCabalFile = "0f7aqbiy8s4137wa37awgjx5xmlj9x18zc10292hgsbyrzvnisdq"; + revision = "4"; + editedCabalFile = "1h3jx1jj4spgj34mhxydg24lwv95m39f8ndy222849s5nsh6lg0n"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -333045,8 +334598,8 @@ self: { }: mkDerivation { pname = "hledger-lib"; - version = "1.50.3"; - sha256 = "1z0k0mp64vnlz3k66csz7i3vpns3lhy2mg8k6p2lznivr4hfzph1"; + version = "1.51.1"; + sha256 = "1zhg7fxclkyz5iwbxg97ha1d0lvbqxbwwfp9szb1d7gqnnibp458"; libraryHaskellDepends = [ aeson aeson-pretty @@ -333312,8 +334865,8 @@ self: { }: mkDerivation { pname = "hledger-ui"; - version = "1.50.3"; - sha256 = "1wm2v7z57z16wb0a068bwrdwhaaq8rf8mzhl347z60nb3y0ihnk5"; + version = "1.51.1"; + sha256 = "19vm8gj0zkkcd07b4xr1rpcl8cvsb2xb821kk6r2xkylvn164daa"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -333448,8 +335001,8 @@ self: { }: mkDerivation { pname = "hledger-web"; - version = "1.50.3"; - sha256 = "0p5hd9rg99ilv9gnd3k1xcnp6m4ndfin1v4ah898b741ib5chj4s"; + version = "1.51.1"; + sha256 = "1fxkdaibjp7sigdhdchrpw9lbjlq5l75jrqgya4l7vgyhbfmd8k8"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -333673,8 +335226,8 @@ self: { }: mkDerivation { pname = "hlibsass"; - version = "0.1.10.1"; - sha256 = "0gfbw6d48dqhc6gm9qwxfn4w6j3zs2xgf7c0kwxmgn4464y93dwy"; + version = "0.1.10.3"; + sha256 = "1016x1gjmvq26a5gackf8x4206rv9lfb89hpn1197y0zavnqga63"; configureFlags = [ "-fexternallibsass" ]; setupHaskellDepends = [ base @@ -337025,8 +338578,8 @@ self: { }: mkDerivation { pname = "hmp3-ng"; - version = "2.17.1"; - sha256 = "03dgsy25rsy3yxisr71nrc7gbwh3k6ms3sbsbf4gh4i66pjv8gz3"; + version = "2.17.2"; + sha256 = "1ybpn7gw7f1n6jpynvp9l36jz9h5iky6zhch7g303adc08n6hr95"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -343422,7 +344975,7 @@ self: { } ) { }; - hpack_0_39_0 = callPackage ( + hpack_0_39_1 = callPackage ( { mkDerivation, aeson, @@ -343460,8 +345013,8 @@ self: { }: mkDerivation { pname = "hpack"; - version = "0.39.0"; - sha256 = "0cjjjw5zr0j64350i7kc6g5k6f2nkffwi206vbgwmblmxjqmq02p"; + version = "0.39.1"; + sha256 = "1brb4cw8746djnaisc6qjsphdylbyc8z7ym9hzzpxqqj0frx9hlr"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -344950,12 +346503,96 @@ self: { text-show time transformers-base - unordered-containers + unordered-containers + uuid-types + vector + ]; + description = "Haskell bindings to libpqtypes"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { inherit (pkgs) libpq; }; + + hpqtypes_1_14_0_0 = callPackage ( + { + mkDerivation, + aeson, + async, + base, + bytestring, + containers, + exceptions, + HUnit, + libpq, + lifted-base, + monad-control, + mtl, + QuickCheck, + random, + readline, + resource-pool, + scientific, + stm, + test-framework, + test-framework-hunit, + text, + text-show, + time, + transformers, + transformers-base, + uuid-types, + vector, + }: + mkDerivation { + pname = "hpqtypes"; + version = "1.14.0.0"; + sha256 = "0zjrnscpnc20433q54kjrmhdcmfvw40vkp044jhhmlnsmhj8bqwf"; + libraryHaskellDepends = [ + aeson + async + base + bytestring + containers + exceptions + lifted-base + monad-control + mtl + resource-pool + stm + text + text-show + time + transformers + transformers-base + uuid-types + vector + ]; + libraryPkgconfigDepends = [ libpq ]; + testHaskellDepends = [ + aeson + base + bytestring + exceptions + HUnit + lifted-base + monad-control + mtl + QuickCheck + random + readline + resource-pool + scientific + test-framework + test-framework-hunit + text + text-show + time + transformers-base uuid-types vector ]; description = "Haskell bindings to libpqtypes"; license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; } ) { inherit (pkgs) libpq; }; @@ -344964,7 +346601,6 @@ self: { mkDerivation, base, effectful-core, - exceptions, hpqtypes, resource-pool, tasty, @@ -344973,19 +346609,18 @@ self: { }: mkDerivation { pname = "hpqtypes-effectful"; - version = "1.0.2.0"; - sha256 = "1jlnxijnny18krmw97zy53d074pvpfi14zgyxiclxbc1ix0jdg3k"; + version = "1.1.0.0"; + sha256 = "196i0byfhnjzp757nljsh8fr4ia1h93dkpaks2prsrgyrs0wxzmj"; + revision = "1"; + editedCabalFile = "1jxxd9gvwdpjb6kyyqacfnk4si57qv5zjrcx6nq62xm0lynhx4xr"; libraryHaskellDepends = [ base effectful-core - exceptions hpqtypes ]; testHaskellDepends = [ base effectful-core - exceptions - hpqtypes resource-pool tasty tasty-hunit @@ -344993,6 +346628,8 @@ self: { ]; description = "Adaptation of the hpqtypes library for the effectful ecosystem"; license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -345058,6 +346695,69 @@ self: { } ) { }; + hpqtypes-extras_1_19_0_0 = callPackage ( + { + mkDerivation, + base, + base16-bytestring, + bytestring, + containers, + crypton, + deepseq, + exceptions, + extra, + hpqtypes, + log-base, + memory, + mtl, + tasty, + tasty-bench, + tasty-hunit, + text, + text-show, + uuid-types, + }: + mkDerivation { + pname = "hpqtypes-extras"; + version = "1.19.0.0"; + sha256 = "0i2rrmbhm35kpfr4w6w4hqkrb2plnyi4rz1l11gdy3mp9938rwgc"; + libraryHaskellDepends = [ + base + base16-bytestring + bytestring + containers + crypton + exceptions + extra + hpqtypes + log-base + memory + mtl + text + text-show + ]; + testHaskellDepends = [ + base + containers + exceptions + hpqtypes + log-base + tasty + tasty-hunit + text + uuid-types + ]; + benchmarkHaskellDepends = [ + base + deepseq + tasty-bench + ]; + description = "Extra utilities for hpqtypes library"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + hprotoc = callPackage ( { mkDerivation, @@ -346320,6 +348020,7 @@ self: { bytestring, cabal-doctest, clock, + derive-storable, doctest, libasapo-consumer, libasapo-producer, @@ -346330,8 +348031,8 @@ self: { }: mkDerivation { pname = "hs-asapo"; - version = "0.9.2"; - sha256 = "1adggnrf6i0vm7gq343ja6cvcll1mz4cq0ljlhda1y1c9iqpwhc9"; + version = "0.10.0"; + sha256 = "1j5951l4391ans7w9y2389hdrrb8i3pvpbjz0693pdd9bkpnvda2"; setupHaskellDepends = [ base cabal-doctest @@ -346340,6 +348041,7 @@ self: { base bytestring clock + derive-storable text time timerep @@ -352209,6 +353911,7 @@ self: { base, Cabal-syntax, cvss, + network-uri, osv, pandoc-types, safe, @@ -352219,12 +353922,13 @@ self: { }: mkDerivation { pname = "hsec-core"; - version = "0.2.0.2"; - sha256 = "0aj2mv8b59vqp220b5dm1jx5xac9rhv7axj7dbmmfxgcqks3rvfz"; + version = "0.3.0.0"; + sha256 = "1hjd985lkxxncidwxzjcfpmvjsar0hrcvq08367mykaqnbb5f5bb"; libraryHaskellDepends = [ base Cabal-syntax cvss + network-uri osv pandoc-types safe @@ -352233,6 +353937,7 @@ self: { ]; testHaskellDepends = [ base + Cabal-syntax cvss tasty tasty-hunit @@ -352312,7 +354017,9 @@ self: { ]; description = "Synchronize with the Haskell security advisory database"; license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; mainProgram = "hsec-sync"; + broken = true; } ) { }; @@ -352338,25 +354045,24 @@ self: { filepath, hedgehog, hsec-core, + lens, lucid, mtl, + network-uri, optparse-applicative, osv, pandoc, pandoc-types, parsec, - pathwalk, pretty, pretty-simple, prettyprinter, process, refined, resourcet, - safe, tasty, tasty-golden, tasty-hedgehog, - tasty-hunit, template-haskell, text, time, @@ -352368,8 +354074,8 @@ self: { }: mkDerivation { pname = "hsec-tools"; - version = "0.2.0.2"; - sha256 = "02vnhw6dlp5iq7pznnljlw6ilbvf4zhz6hn96m4y6y5naxafv1iy"; + version = "0.3.0.1"; + sha256 = "0v3jl34pkmnvchhdz07v6m50wz5s9wf7xbbs19cgxf7kiybbw7yj"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -352390,19 +354096,19 @@ self: { file-embed filepath hsec-core + lens lucid mtl + network-uri osv pandoc pandoc-types parsec - pathwalk pretty prettyprinter process refined resourcet - safe template-haskell text time @@ -352418,6 +354124,7 @@ self: { Cabal-syntax filepath hsec-core + network-uri optparse-applicative text transformers @@ -352432,13 +354139,13 @@ self: { directory hedgehog hsec-core + network-uri osv pretty-simple prettyprinter tasty tasty-golden tasty-hedgehog - tasty-hunit text time toml-parser @@ -354926,18 +356633,14 @@ self: { mkDerivation, base, bytestring, - text, }: mkDerivation { pname = "hsmrc"; - version = "0.1.1"; - sha256 = "11xydr0l8gr049gwaqc6dzk0ql9rwql3l34r35my69gz3aq39bfv"; - revision = "1"; - editedCabalFile = "18p39bw5lwmx634y2icmm1sv35r4332qgsjz3bh673w8nyvid174"; + version = "0.1.5"; + sha256 = "08fdrfg8m6plc5zp9wbg4smmwl3zy96l88cry9gsi5pfp47kbf1x"; libraryHaskellDepends = [ base bytestring - text ]; description = "Library for Marc21 bibliographic records"; license = lib.licenses.bsd3; @@ -355567,8 +357270,8 @@ self: { }: mkDerivation { pname = "hspec"; - version = "2.11.14"; - sha256 = "13zzcrjc6537f848c7b39bn61iwlniiymzjsbn5kfrx6hhxlgb6i"; + version = "2.11.16"; + sha256 = "1brjn0awqrmjz75a69nskx19f19b9y32hcnd2f3lif5sv5df1zgs"; libraryHaskellDepends = [ base hspec-core @@ -355619,8 +357322,8 @@ self: { }: mkDerivation { pname = "hspec-api"; - version = "2.11.14"; - sha256 = "1cgbqnk2dayys12xm7klcxljivkrs6cv522vv7vdlpyslhhayw28"; + version = "2.11.16"; + sha256 = "00k1ihl2lbp1md7qzjhhl96ax5vabzh3q5lfbs88svzwprpmkrr5"; libraryHaskellDepends = [ base hspec-core @@ -355775,16 +357478,13 @@ self: { silently, stm, temporary, - tf-random, time, transformers, }: mkDerivation { pname = "hspec-core"; - version = "2.11.14"; - sha256 = "0hnbvcjkylims4xcmajhmwaicnalgi5a93ayk47gvc5z02pgs299"; - revision = "1"; - editedCabalFile = "0s41xy88mkbxhbf93gdxb23vxr4vaip58519j2c8slz6cmvs0mq5"; + version = "2.11.16"; + sha256 = "0kj2kljczp6y02w2sd9bcgpa5cdisx7sc5a57wrz99h1p6968a7m"; libraryHaskellDepends = [ ansi-terminal array @@ -355802,7 +357502,6 @@ self: { quickcheck-io random stm - tf-random time transformers ]; @@ -355827,7 +357526,6 @@ self: { silently stm temporary - tf-random time transformers ]; @@ -355894,8 +357592,8 @@ self: { }: mkDerivation { pname = "hspec-discover"; - version = "2.11.14"; - sha256 = "1bj3nln0cblrhwy7rjnr9qk068mkmn5wzxkh5sr32vm20nr1frwd"; + version = "2.11.16"; + sha256 = "1b4g26bxadzaypr6ib7a75ycapg8k927pfq8g0y2pm111lgcyv5x"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -356569,16 +358267,13 @@ self: { quickcheck-io, random, stm, - tf-random, time, transformers, }: mkDerivation { pname = "hspec-meta"; - version = "2.11.14"; - sha256 = "1mi1sfmxqf01dxkw8c56ywiclnl1pk6m5g1cj53w3mq8j7mywqz5"; - revision = "2"; - editedCabalFile = "0iylscmcm5052sqa3xaikiqrlfaqs9cn82r777g43l6wgbzzsxi4"; + version = "2.11.16"; + sha256 = "0rk9d4xrzjsz986ylx133iyakb4s7m64pgvkv2x5k8xf4mgd192y"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -356598,7 +358293,6 @@ self: { quickcheck-io random stm - tf-random time transformers ]; @@ -356619,7 +358313,6 @@ self: { quickcheck-io random stm - tf-random time transformers ]; @@ -357230,6 +358923,42 @@ self: { } ) { }; + hspec-tidy-formatter = callPackage ( + { + mkDerivation, + base, + hedgehog, + hspec, + hspec-api, + hspec-core, + hspec-discover, + hspec-hedgehog, + markdown-unlit, + }: + mkDerivation { + pname = "hspec-tidy-formatter"; + version = "0.1.1.0"; + sha256 = "031ssdyv4b69iy11rx4yrjx2155kgmdaprbd5i33jggsiqspgp9p"; + libraryHaskellDepends = [ + base + hspec-api + ]; + testHaskellDepends = [ + base + hedgehog + hspec + hspec-core + hspec-hedgehog + ]; + testToolDepends = [ + hspec-discover + markdown-unlit + ]; + description = "A custom hspec formatter for easy-to-read terminal output"; + license = lib.licensesSpdx."MIT"; + } + ) { }; + hspec-tmp-proc = callPackage ( { mkDerivation, @@ -357422,8 +359151,8 @@ self: { }: mkDerivation { pname = "hspec-yesod"; - version = "0.2.0.1"; - sha256 = "1kil6gggr1q2wnngkgb5a47ay2drdqk9lz0fxa68lhiq814i7a8z"; + version = "0.2.1.0"; + sha256 = "005a0i6z1mg9wm8xvm014jzagcr7pji754phagj42nidi545p31f"; libraryHaskellDepends = [ aeson attoparsec @@ -358372,8 +360101,6 @@ self: { ]; description = "SSH protocol implementation"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -360406,7 +362133,6 @@ self: { ]; description = "HTML to Hamlet converter"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "html2hamlet"; } ) { }; @@ -364274,6 +366000,8 @@ self: { ]; description = "Library for HTTP/2 over TLS"; license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -367910,9 +369638,7 @@ self: { testToolDepends = [ doctest-discover ]; description = "SIMD-based JSON semi-indexer"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; mainProgram = "hw-json-simd"; - broken = true; } ) { }; @@ -377283,6 +379009,37 @@ self: { } ) { }; + immortal-queue_0_2_0_0 = callPackage ( + { + mkDerivation, + async, + base, + immortal, + stm, + tasty, + tasty-hunit, + }: + mkDerivation { + pname = "immortal-queue"; + version = "0.2.0.0"; + sha256 = "1gd7abv6ssa3364hkph8qw7yv250yzw77adp5wxs70dvqnxhlp3v"; + libraryHaskellDepends = [ + async + base + immortal + ]; + testHaskellDepends = [ + base + stm + tasty + tasty-hunit + ]; + description = "Build a pool of queue-processing worker threads"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + } + ) { }; + immortal-worker = callPackage ( { mkDerivation, @@ -380343,15 +382100,14 @@ self: { containers, QuickCheck, tasty, - tasty-bench, tasty-expected-failure, tasty-inspection-testing, tasty-quickcheck, }: mkDerivation { pname = "infinite-list"; - version = "0.1.2"; - sha256 = "0v5xidhffcdn8z65nky22rhm89pbji03gp51mzqcgrzfinyjdbkb"; + version = "0.1.3"; + sha256 = "1nwmv9warxnabmjkrd905pkyx7ics3vhgryh2hmgyqganzmixmrn"; libraryHaskellDepends = [ base ]; testHaskellDepends = [ base @@ -380362,10 +382118,6 @@ self: { tasty-inspection-testing tasty-quickcheck ]; - benchmarkHaskellDepends = [ - base - tasty-bench - ]; description = "Infinite lists"; license = lib.licensesSpdx."BSD-3-Clause"; } @@ -380687,6 +382439,39 @@ self: { } ) { }; + ini_0_5_1 = callPackage ( + { + mkDerivation, + attoparsec, + base, + hspec, + QuickCheck, + text, + unordered-containers, + }: + mkDerivation { + pname = "ini"; + version = "0.5.1"; + sha256 = "1vv3ymk41izp5cs3s6sy28k4v8cv56zcanxhdngwqli9qnd97r1i"; + libraryHaskellDepends = [ + attoparsec + base + text + unordered-containers + ]; + testHaskellDepends = [ + base + hspec + QuickCheck + text + unordered-containers + ]; + description = "Configuration files in the INI format"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + } + ) { }; + ini-qq = callPackage ( { mkDerivation, @@ -382642,6 +384427,7 @@ self: { mkDerivation, base, ghc-bignum, + QuickCheck, smallcheck, tasty, tasty-hunit, @@ -382650,14 +384436,15 @@ self: { }: mkDerivation { pname = "integer-roots"; - version = "1.0.3.0"; - sha256 = "0l6pygfrlyvrbxshz6s1zd6w3q2hl1dc18y08mg0a334ky87za9k"; + version = "1.0.4.0"; + sha256 = "09k5i7qyh00c7hw69mn7236rxfy4rwilx1lnq5msd12zzs3q4355"; libraryHaskellDepends = [ base ghc-bignum ]; testHaskellDepends = [ base + QuickCheck smallcheck tasty tasty-hunit @@ -382892,81 +384679,106 @@ self: { { mkDerivation, aeson, + aeson-casing, aeson-pretty, base, base64-bytestring, bytestring, containers, + exceptions, haskeline, + hspec, http-client, http-client-tls, http-conduit, + http-types, JuicyPixels, + kan-extensions, + louter, megaparsec, - openai-servant-gen, + mtl, optparse-applicative, persistent, persistent-sqlite, process, - servant, - servant-client, sixel, + stm, temporary, text, time, transformers, vector, + wai, + wai-extra, + warp, xml-conduit, yaml, }: mkDerivation { pname = "intelli-monad"; - version = "0.1.0.2"; - sha256 = "1i6widwlw62cl63bc1lvx1961d4c2x4p4bjhlkyj3g98yhbspjq7"; + version = "0.1.2.0"; + sha256 = "0wzrx34d905s76rwh6z1dib9wzi6nbkf5ln8yczg9y5qp57gycw7"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ aeson + aeson-casing aeson-pretty base base64-bytestring bytestring containers + exceptions haskeline http-client http-client-tls http-conduit + http-types JuicyPixels + kan-extensions + louter megaparsec - openai-servant-gen + mtl optparse-applicative persistent persistent-sqlite process - servant - servant-client sixel + stm temporary text time transformers vector + wai + wai-extra + warp xml-conduit yaml ]; executableHaskellDepends = [ aeson base - openai-servant-gen + louter persistent-sqlite process text transformers ]; - testHaskellDepends = [ base ]; - description = "Type level prompt with openai"; + testHaskellDepends = [ + aeson + base + bytestring + hspec + text + time + transformers + vector + ]; + description = "Type level prompt with LLMs via louter"; license = lib.licensesSpdx."MIT"; hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -384858,8 +386670,8 @@ self: { }: mkDerivation { pname = "io-classes"; - version = "1.8.0.1"; - sha256 = "0ivhs0wpl2i8fw5g2ch3ck5adzwsp1dlfl1j3vy872i3cfygcbdi"; + version = "1.9.0.0"; + sha256 = "1qgj52m078j3cr0pfijvp6r7a793n0ssaqy6nyfy1bv9qxs761hz"; libraryHaskellDepends = [ array async @@ -385075,8 +386887,8 @@ self: { }: mkDerivation { pname = "io-sim"; - version = "1.8.0.1"; - sha256 = "1xv0j1l46n0wv76sll796avrvl3aaxnf0dsqjkp66fw0yprdbh5n"; + version = "1.9.0.0"; + sha256 = "0b8iav4s1dmnngg2ihbn6ycfhmgg7giv2krqbb5fdk1gpvw7c5rw"; libraryHaskellDepends = [ base containers @@ -404231,6 +406043,7 @@ self: { formatting, http-conduit, http-directory, + http-types, koji, pretty-simple, rpm-nvr, @@ -404245,8 +406058,8 @@ self: { }: mkDerivation { pname = "koji-tool"; - version = "1.3"; - sha256 = "0ibbkl0lvgfwh16hihgqbc9gsgxdlz2w1ra7kfjs9cmx5l8w1gpg"; + version = "1.3.1"; + sha256 = "1qpryk2mzmmyn210mh82hg7d0is5k9x95dxlw634i5za1h7m5h5k"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -404257,6 +406070,7 @@ self: { formatting http-conduit http-directory + http-types koji pretty-simple rpm-nvr @@ -404697,6 +406511,7 @@ self: { bytestring, containers, hspec, + hspec-discover, hspec-expectations, http-client, http-types, @@ -404714,8 +406529,8 @@ self: { }: mkDerivation { pname = "krank"; - version = "0.3.0"; - sha256 = "01ncfknvm4mndzam3q9m15p51cz8cwjds12zc74rl1p49rdp5pis"; + version = "0.3.1"; + sha256 = "1svz54msp5dsk6lxa1id748hhr0ww3ci79raaj1x5c7bn5x980zq"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -404752,6 +406567,7 @@ self: { bytestring containers hspec + hspec-discover hspec-expectations http-client http-types @@ -404765,6 +406581,7 @@ self: { text unordered-containers ]; + testToolDepends = [ hspec-discover ]; description = "Krank checks issue tracker link status in your source code"; license = lib.licensesSpdx."BSD-3-Clause"; hydraPlatforms = lib.platforms.none; @@ -405011,8 +406828,8 @@ self: { pname = "ktx-codec"; version = "0.0.2.1"; sha256 = "0cigkpvgx12py0i942sci359xsj87pa0bhgmmamhigynimbfspzr"; - revision = "4"; - editedCabalFile = "0pqsxvgrjs48aqkbm8vq13ad5ab4kjpiw416p2sj134imxlylr62"; + revision = "5"; + editedCabalFile = "0djld1sps7a3qj1a4gfb69k70xgb1psjnc7a6nkksgpiwjf1m951"; libraryHaskellDepends = [ base binary @@ -405156,8 +406973,8 @@ self: { }: mkDerivation { pname = "kubernetes-api-client"; - version = "0.6.1.1"; - sha256 = "0f3sfs6z9xwf7811s7mbh03a4jsyfcvjx1lvycs7gv1ak1jhm27z"; + version = "0.6.1.2"; + sha256 = "1y3q9pfvs0pjpkqxzjyqdhmcfq7n1kwh87jybcypanqk3f3cgjxj"; libraryHaskellDepends = [ aeson attoparsec @@ -408255,6 +410072,7 @@ self: { description = "A strange and unnecessary selective test-running library"; license = lib.licenses.bsd3; hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -408857,10 +410675,8 @@ self: { }: mkDerivation { pname = "language-c"; - version = "0.10.0"; - sha256 = "0m3dphd0r0n763a5rrg0z4fmiaqn7nkjq15l4vif332zrmgipb37"; - revision = "1"; - editedCabalFile = "1ffvpasi3yj59fffwdjx6c8wjby5pv42fmfzm7pisnpczmv5hsx6"; + version = "0.10.1"; + sha256 = "08x4hm0dbrqdl8mmwg3bbfja03w122lyv8qdilh90kvfwmyqf9cv"; libraryHaskellDepends = [ array base @@ -412996,8 +414812,8 @@ self: { }: mkDerivation { pname = "launchdarkly-server-sdk"; - version = "4.4.1"; - sha256 = "0vilcx17zkqr2v2bs2qs9s2d7s9yrp5vkvw9ifan0527x8a35hdg"; + version = "4.5.1"; + sha256 = "1rwz5qm7vbznr6gi8pwajzm6qp2y6qac3ir9gp9nh1d2ngjl8q70"; libraryHaskellDepends = [ aeson attoparsec @@ -413706,8 +415522,8 @@ self: { }: mkDerivation { pname = "layoutz"; - version = "0.1.1.0"; - sha256 = "0jmahwgbf64axjqd13r6b51aqarxby6qv9k93hfvrdim3rwnjdw7"; + version = "0.2.0.0"; + sha256 = "0pzrmffr2bkj9c923apcgzwq864jsk016pi7njphfmykk9dazazg"; libraryHaskellDepends = [ base ]; testHaskellDepends = [ base @@ -419796,6 +421612,7 @@ self: { description = "Bindings to the Librato API"; license = lib.licenses.mit; hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -420460,7 +422277,6 @@ self: { inline-c, inline-c-cpp, libtorch-ffi-helper, - optparse-applicative, process, safe-exceptions, sysinfo, @@ -420473,8 +422289,8 @@ self: { }: mkDerivation { pname = "libtorch-ffi"; - version = "2.0.1.9"; - sha256 = "0i6l98wf2rg7zd2bvxwdfzwp61hxlhwjasg0q4i3b10k6x5i9wzz"; + version = "2.0.1.10"; + sha256 = "0glsbpb2916qmdc8gs9cwvhqjg4j3ra8z6jyr0bakffyiw536p43"; setupHaskellDepends = [ base bytestring @@ -420494,7 +422310,6 @@ self: { inline-c inline-c-cpp libtorch-ffi-helper - optparse-applicative safe-exceptions sysinfo template-haskell @@ -420528,8 +422343,8 @@ self: { }: mkDerivation { pname = "libtorch-ffi-helper"; - version = "2.0.0.2"; - sha256 = "1gzxl84x953k06i6ygrqsch0nkjxpx8bmv4myrz9ws5x2gwqckfa"; + version = "2.0.0.3"; + sha256 = "00q2jay3d3q86iz78xflr9xdszph51g149myfpryqrrkgklv50h6"; libraryHaskellDepends = [ base ghc @@ -430280,8 +432095,8 @@ self: { }: mkDerivation { pname = "logging-effect-colors"; - version = "0.1.0.0"; - sha256 = "1rdcxp7nfy8sajqrw5wz5j531dn86pkwa70g1kgsvgb1wqm6zlbb"; + version = "0.1.1.1"; + sha256 = "14mri7f3vbvcv0swd1s0s1gvdpfhdhr1q0hid8pmwjnhfq2yiwqz"; libraryHaskellDepends = [ ansi-terminal base @@ -430291,8 +432106,6 @@ self: { ]; description = "Log messages in color"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -432369,6 +434182,93 @@ self: { } ) { }; + louter = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + conduit, + conduit-extra, + containers, + hspec, + http-client, + http-client-tls, + http-types, + mtl, + optparse-applicative, + QuickCheck, + random, + regex-tdfa, + scientific, + text, + transformers, + unordered-containers, + vector, + wai, + warp, + yaml, + }: + mkDerivation { + pname = "louter"; + version = "0.1.1.1"; + sha256 = "1qpas47s0bprx52fd6ljm4v790bwcprdks7sjf8gsj3nd58widhx"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson + base + bytestring + conduit + conduit-extra + containers + http-client + http-client-tls + http-types + mtl + regex-tdfa + scientific + text + transformers + unordered-containers + vector + wai + warp + ]; + executableHaskellDepends = [ + aeson + base + bytestring + conduit + containers + http-client + http-client-tls + http-types + mtl + optparse-applicative + random + text + transformers + unordered-containers + vector + wai + warp + yaml + ]; + testHaskellDepends = [ + aeson + base + bytestring + hspec + QuickCheck + text + unordered-containers + ]; + description = "Multi-protocol LLM router and client library"; + license = lib.licensesSpdx."MIT"; + } + ) { }; + lowgl = callPackage ( { mkDerivation, @@ -432563,6 +434463,44 @@ self: { } ) { }; + lr-acts_0_2 = callPackage ( + { + mkDerivation, + base, + criterion, + data-default, + groups, + hspec, + QuickCheck, + }: + mkDerivation { + pname = "lr-acts"; + version = "0.2"; + sha256 = "1slvw3czssj93ag08qiy4qakw7k7m40kcll0sq5ilffbhfaxgh6b"; + libraryHaskellDepends = [ + base + data-default + groups + ]; + testHaskellDepends = [ + base + data-default + groups + hspec + QuickCheck + ]; + benchmarkHaskellDepends = [ + base + criterion + data-default + groups + ]; + description = "Left and right actions, semidirect products and torsors"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + lrucache = callPackage ( { mkDerivation, @@ -432602,8 +434540,8 @@ self: { }: mkDerivation { pname = "lrucaching"; - version = "0.3.4"; - sha256 = "1vnhg506kn231rxa85igxamv4gyxa6fk0i94ycdv0898zrr4j31n"; + version = "0.3.5"; + sha256 = "0bqqg0lfpiychj5wp6fmzhj9id4q11qv1wx4nn2bsimk13m25h96"; libraryHaskellDepends = [ base base-compat @@ -432623,8 +434561,6 @@ self: { ]; description = "LRU cache"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -432650,7 +434586,6 @@ self: { ]; description = "Combine lrucaching and haxl"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -432880,8 +434815,8 @@ self: { }: mkDerivation { pname = "lsm-tree"; - version = "1.0.0.0"; - sha256 = "1vm9314pa5b8w3kwyncmnh1kqq61kxfidcw52iv6728456dda4m4"; + version = "1.0.0.1"; + sha256 = "1b7w7w4i9ylsvi7ww5d9xry0r2gpr7i17r79fpizpgv11rz2lzvh"; libraryHaskellDepends = [ base binary @@ -437707,8 +439642,6 @@ self: { ]; description = "Simple Makefile parser and generator"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -439557,8 +441490,8 @@ self: { }: mkDerivation { pname = "mappings"; - version = "0.3.2.0"; - sha256 = "0xmdcrc3bs0lvlp9jia5bfvppj0zcgdaic1zr7p5c3gnlw16d739"; + version = "0.3.3.0"; + sha256 = "1rb17pgzdx3w9maqnllm5xwic0jvna42cnnikhqm02qlysd4ryhy"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -441338,6 +443271,8 @@ self: { pname = "matchable-th"; version = "0.2.1"; sha256 = "0yxm9r33x0cis2fq3n9hpi0g457ai616x8525pyvh3iz6gfs2whz"; + revision = "1"; + editedCabalFile = "01bfw95c5g6hf3dkysnj3w8m6znb42ld29q5679nhwxnigfc3gml"; libraryHaskellDepends = [ base bifunctors @@ -445009,6 +446944,25 @@ self: { } ) { }; + megaparsec-csv = callPackage ( + { + mkDerivation, + base, + megaparsec, + }: + mkDerivation { + pname = "megaparsec-csv"; + version = "0.1"; + sha256 = "0az3dr8f3pcb0wyc0j3hadn20sx9x0slqk7cpwhfavj9fac5cp5m"; + libraryHaskellDepends = [ + base + megaparsec + ]; + description = "A megaparsec library for CSV files"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + megaparsec-tests = callPackage ( { mkDerivation, @@ -451113,8 +453067,8 @@ self: { }: mkDerivation { pname = "minici"; - version = "0.1.8"; - sha256 = "0fady7w644gcrjd9yy7ngbi1dj2rp87lnzmxjr307w8kdb2aqdcj"; + version = "0.1.9"; + sha256 = "1d5l07x2bqzicz14j9l604gnk6vhbbagkm7rff52fj2vvsif69sc"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -452047,6 +454001,8 @@ self: { ]; description = "High-level Haskell bindings for the MiniSat SAT solver"; license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -453446,8 +455402,8 @@ self: { }: mkDerivation { pname = "mlkem"; - version = "0.1.0.0"; - sha256 = "0gvphqi5afipffr8xkl7km786lshqzrmkabf0dvii8bcmafiaf63"; + version = "0.1.1.0"; + sha256 = "1l77dqysiq797ci3168z708qz7i986yvmvisssfdr36rwnsz7nrl"; libraryHaskellDepends = [ base basement @@ -454325,25 +456281,32 @@ self: { containers, gigaparsec, hspec, + hspec-discover, text, }: mkDerivation { pname = "mmzk-env"; - version = "0.1.2.0"; - sha256 = "1midm7qq8n4kpp2dhpfa7bzgp9fbhx76325yxx73slkmlgppvc2r"; + version = "0.2.1.0"; + sha256 = "0fxilcn5y4fvafq681jphagirm6kk94f3i6rdxjxfam1d8sv4r4r"; + isLibrary = true; + isExecutable = true; libraryHaskellDepends = [ base containers gigaparsec text ]; + executableHaskellDepends = [ + base + containers + ]; testHaskellDepends = [ base containers - gigaparsec hspec text ]; + testToolDepends = [ hspec-discover ]; description = "Read environment variables into a user-defined data type"; license = lib.licensesSpdx."MIT"; hydraPlatforms = lib.platforms.none; @@ -454702,15 +456665,18 @@ self: { } ) { }; - mockcat_0_6_0_0 = callPackage ( + mockcat_1_1_0_0 = callPackage ( { mkDerivation, async, base, + containers, hashable, hspec, + inspection-testing, mtl, QuickCheck, + stm, template-haskell, text, transformers, @@ -454720,11 +456686,13 @@ self: { }: mkDerivation { pname = "mockcat"; - version = "0.6.0.0"; - sha256 = "1bh8mwxc2l3l647anwkyw0wry3cscgf6dk00xz2mwjshsr7gl8p4"; + version = "1.1.0.0"; + sha256 = "1k6cgj01dq3pmy4a084zf2qna139yq17wby2wqaqap693khkg7q0"; libraryHaskellDepends = [ base + containers mtl + stm template-haskell text transformers @@ -454734,10 +456702,13 @@ self: { testHaskellDepends = [ async base + containers hashable hspec + inspection-testing mtl QuickCheck + stm template-haskell text transformers @@ -454745,7 +456716,7 @@ self: { unliftio-core unordered-containers ]; - description = "Mock library for test in Haskell"; + description = "Declarative mocking with a single arrow `~>`"; license = lib.licenses.mit; hydraPlatforms = lib.platforms.none; } @@ -456800,8 +458771,8 @@ self: { }: mkDerivation { pname = "monad-effect"; - version = "0.2.1.0"; - sha256 = "0yrkn1vdz069r8cvxkfpdmrw6gpb4rlxipry9zx3si42qkznn2ay"; + version = "0.2.3.1"; + sha256 = "0fd5rvwp5y0hrdis8rp42lpnpplrllzwh9lrm7iwb933nvg19ljb"; libraryHaskellDepends = [ async base @@ -457103,8 +459074,8 @@ self: { pname = "monad-ideals"; version = "0.1.1.0"; sha256 = "04wgb39kj7j3v9df5g8ij7n7fndhjic93y88k0wxpmzd9ywd6zdf"; - revision = "1"; - editedCabalFile = "021gfnffc7m5i3k6wr5ksxyd2bck6hg7h2spbk9wxn46zcdi9z7c"; + revision = "2"; + editedCabalFile = "0f306a2slxfkwjqblvlliknah5d2ys9hrn1i6i56xbrwf315nznm"; libraryHaskellDepends = [ base bifunctor-classes-compat @@ -458386,6 +460357,60 @@ self: { } ) { }; + monad-schedule_1_6 = callPackage ( + { + mkDerivation, + base, + base-compat, + free, + generic-arbitrary, + HUnit, + operational, + QuickCheck, + stm, + test-framework, + test-framework-hunit, + test-framework-quickcheck2, + time, + time-domain, + transformers, + }: + mkDerivation { + pname = "monad-schedule"; + version = "1.6"; + sha256 = "1krmb4xc9kxncbgbi448k7mvj6nlygg5fvgnahjzrvd6nbnnswc6"; + libraryHaskellDepends = [ + base + base-compat + free + operational + stm + time-domain + transformers + ]; + testHaskellDepends = [ + base + base-compat + free + generic-arbitrary + HUnit + operational + QuickCheck + stm + test-framework + test-framework-hunit + test-framework-quickcheck2 + time + time-domain + transformers + ]; + description = "A new, simple, composable concurrency abstraction"; + license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + maintainers = [ lib.maintainers.turion ]; + } + ) { }; + monad-skeleton = callPackage ( { mkDerivation, base }: mkDerivation { @@ -459623,8 +461648,8 @@ self: { }: mkDerivation { pname = "monatone"; - version = "0.1.0.0"; - sha256 = "1i4fk1x40x2zmkpyfmps1jnjbzvamhxg97a6a1vpfwjd2hca32w1"; + version = "0.2.1.1"; + sha256 = "1rq1c2d8ymhfa0dyiqasa1bjixqxss3av4h2zha836qd43l7xm5b"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -459639,6 +461664,7 @@ self: { file-io filepath mtl + temporary text unordered-containers ]; @@ -460395,7 +462421,6 @@ self: { ]; description = "A monoidal map with the right group instance"; license = lib.licensesSpdx."BSD-3-Clause"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -460687,6 +462712,36 @@ self: { } ) { }; + monoidmap_0_0_5_0 = callPackage ( + { + mkDerivation, + base, + containers, + deepseq, + groups, + monoid-subclasses, + monoidmap-internal, + nothunks, + }: + mkDerivation { + pname = "monoidmap"; + version = "0.0.5.0"; + sha256 = "1vl97smpnss8kfns1bdkaw1adgpy57g7m0inhk4wi97hq9nnqpaf"; + libraryHaskellDepends = [ + base + containers + deepseq + groups + monoid-subclasses + monoidmap-internal + nothunks + ]; + description = "Monoidal map type"; + license = lib.licensesSpdx."Apache-2.0"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + monoidmap-aeson = callPackage ( { mkDerivation, @@ -460849,6 +462904,67 @@ self: { } ) { }; + monoidmap-internal_0_1_0_1 = callPackage ( + { + mkDerivation, + base, + containers, + deepseq, + groups, + hspec, + hspec-discover, + monoid-subclasses, + nothunks, + pretty-show, + QuickCheck, + quickcheck-classes, + quickcheck-groups, + quickcheck-monoid-subclasses, + quickcheck-quid, + tasty-bench, + tasty-hunit, + text, + }: + mkDerivation { + pname = "monoidmap-internal"; + version = "0.1.0.1"; + sha256 = "1z1w34qyrihlsdnd1ijqfjj7475yi74n8z7ywkmfdagwxfjdw2yv"; + libraryHaskellDepends = [ + base + containers + deepseq + groups + monoid-subclasses + nothunks + ]; + testHaskellDepends = [ + base + containers + groups + hspec + monoid-subclasses + pretty-show + QuickCheck + quickcheck-classes + quickcheck-groups + quickcheck-monoid-subclasses + quickcheck-quid + text + ]; + testToolDepends = [ hspec-discover ]; + benchmarkHaskellDepends = [ + base + containers + deepseq + tasty-bench + tasty-hunit + ]; + description = "Internal support for monoidmap"; + license = lib.licensesSpdx."Apache-2.0"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + monoidmap-quickcheck = callPackage ( { mkDerivation, @@ -462395,8 +464511,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql"; - version = "0.28.1"; - sha256 = "0i4ax49plhms3rxb4b8p5w97r01i8baqjjnkzg0if0xsvsp1hs3s"; + version = "0.28.2"; + sha256 = "0ia6hky3l9mlkxsmlfxgvqp45qm3b9dxl3xpxnbzxnf7j0h01ylk"; enableSeparateDataOutput = true; libraryHaskellDepends = [ aeson @@ -462440,7 +464556,6 @@ self: { ]; description = "Morpheus GraphQL"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -462471,8 +464586,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-app"; - version = "0.28.1"; - sha256 = "1fdxz6fny43nrb2cfd57br61v0kc9ijl039p8951xbv3b2c8fjrh"; + version = "0.28.2"; + sha256 = "0d1jx5sn096qh4hyl7qjgpf40jw02f94sbd0l8p4wi77pr6a1l9k"; enableSeparateDataOutput = true; libraryHaskellDepends = [ aeson @@ -462587,8 +464702,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-client"; - version = "0.28.1"; - sha256 = "18kifpxqbnvbw4842d1v1wgfsjic0w91rc2ly02kgj302a2lhgp0"; + version = "0.28.2"; + sha256 = "02j1ix47fdp5wmrqcpcc1lx0jwb98pzhcc96j5972y94i38dgdmn"; enableSeparateDataOutput = true; libraryHaskellDepends = [ aeson @@ -462665,8 +464780,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-code-gen"; - version = "0.28.1"; - sha256 = "0nlqhfb5h6rhkg7f85cz8q6jskijqf1ddqic5hcfd5d8myfh6xkr"; + version = "0.28.2"; + sha256 = "1ibrdk4d612ka2jyzjv5p3423gj4d1j5wr7hyr5w61nghnsrqq0a"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -462704,9 +464819,7 @@ self: { ]; description = "Morpheus GraphQL CLI"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "morpheus"; - broken = true; } ) { }; @@ -462726,8 +464839,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-code-gen-utils"; - version = "0.28.1"; - sha256 = "0ficavdkml1cbw9rkdgljpgcfsx819116djc86fbdhxglaz1afpd"; + version = "0.28.2"; + sha256 = "09jjswzg0i4fcqwjag0plmn7v0n8mq29rkj1bynf5iq9zv7yb8db"; libraryHaskellDepends = [ base bytestring @@ -462770,8 +464883,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-core"; - version = "0.28.1"; - sha256 = "0z47wcqhpm2mz0v5168s9pd03f40as1kl8mnyvzp29c15wf2qmay"; + version = "0.28.2"; + sha256 = "1ndc5a5nw2lcxan81h1362m93x24s5aa6lqvsn2ap8casxw8kwhc"; enableSeparateDataOutput = true; libraryHaskellDepends = [ aeson @@ -462840,8 +464953,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-server"; - version = "0.28.1"; - sha256 = "1pghahv73d8cjqmxi7xndlq8g68f0ap5gn3yk9ww25zjp8vwwsgw"; + version = "0.28.2"; + sha256 = "1yrb4db39qgjhwrs05qggnsmp4g784kafxba7k2iir2k9yalibkz"; enableSeparateDataOutput = true; libraryHaskellDepends = [ aeson @@ -462902,8 +465015,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-subscriptions"; - version = "0.28.1"; - sha256 = "10bvy586a0ldyfld2xhzprsrgd7rdvcwpcnbg460l0hqmzgpkcr2"; + version = "0.28.2"; + sha256 = "1abs20208fsg9yrgy1725l2is5vbsdii09mlxyzr0qy6vv6lfacn"; libraryHaskellDepends = [ aeson base @@ -462939,8 +465052,8 @@ self: { }: mkDerivation { pname = "morpheus-graphql-tests"; - version = "0.28.1"; - sha256 = "161qazf4g7plkx68rnf56sjzrdx5j9k31kdwpynmpb117ylvvrmf"; + version = "0.28.2"; + sha256 = "0hn7w9pji4dil6rhfyp6046kgbxmxb45clpvi8wz3i62ymfjy8kb"; libraryHaskellDepends = [ aeson base @@ -463733,13 +465846,15 @@ self: { aeson-pretty, base, bytestring, + deriving-aeson, libmpd, optparse-applicative, + text, }: mkDerivation { pname = "mpd-current-json"; - version = "2.1.0.0"; - sha256 = "0ici761fvhcl82gnsrzmab529rfwx990qv6qappk4wqvn0d1dvm2"; + version = "3.0.0.0"; + sha256 = "184466w92jif7266izbpb4l3i6arsg2199c70yfngsw7fvyhy2hr"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -463747,7 +465862,9 @@ self: { aeson-pretty base bytestring + deriving-aeson libmpd + text ]; executableHaskellDepends = [ aeson @@ -465886,7 +468003,7 @@ self: { } ) { }; - mtl_2_3_1 = callPackage ( + mtl_2_3_2 = callPackage ( { mkDerivation, base, @@ -465894,10 +468011,8 @@ self: { }: mkDerivation { pname = "mtl"; - version = "2.3.1"; - sha256 = "19ywdksxkv4gfbf05xgpjbnnxd81mgxjnyl2h2vlqapyc35z2y11"; - revision = "1"; - editedCabalFile = "0vby474291gzarkv5y6aqb520g3k5nr6fpfim0qyzqhmfdnnjxsk"; + version = "2.3.2"; + sha256 = "1dk4zn2kgi9lxk3x0bhinn5a9dh06by8p5hq1wm7m4nkmi7sk6iz"; libraryHaskellDepends = [ base transformers @@ -469913,8 +472028,8 @@ self: { }: mkDerivation { pname = "musig2"; - version = "0.1.0"; - sha256 = "02398ib1jxb41ksxf1mxzqfbj53dz1gfz87a05fym3jywf2yf2ml"; + version = "0.1.1"; + sha256 = "11fpnflz39g97wmlvysyw0v1d9c99mh2qas7x4fsmyyfgmyg66xp"; libraryHaskellDepends = [ base base16-bytestring @@ -472328,6 +474443,19 @@ self: { } ) { }; + nacre = callPackage ( + { mkDerivation, base }: + mkDerivation { + pname = "nacre"; + version = "0.1.0.0"; + sha256 = "1n7mwndnmial3g59j2lx0f8qypnh2ccxsch8lgmjv5cc3cid5is6"; + libraryHaskellDepends = [ base ]; + testHaskellDepends = [ base ]; + description = "Domain-specific languages for describing composable web services"; + license = lib.licensesSpdx."BSD-3-Clause"; + } + ) { }; + nagios-check = callPackage ( { mkDerivation, @@ -473317,8 +475445,8 @@ self: { }: mkDerivation { pname = "nanopass"; - version = "0.0.3.1"; - sha256 = "0rjxfmh3a2rcfi21gcmjkv34mvhv7rdmncajynnxwjqvkxyc6m1y"; + version = "0.0.3.2"; + sha256 = "1zdpvbmmrkylmnzv2jj9j5avqg8mizs50wikad1y8z0ili2a1ndk"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -480491,10 +482619,8 @@ self: { { mkDerivation, base }: mkDerivation { pname = "newtype"; - version = "0.2.2.0"; - sha256 = "1b7bamnd0p8vmxvlg39g5d4a2av49kx10rdyz04ixa28pg8zy01s"; - revision = "3"; - editedCabalFile = "0yll88ydchd2gqcvdk28fchf2vygpd42ky2bigg4ga08jan2nacx"; + version = "0.2.2.1"; + sha256 = "0skwr7r2gf0v06fd98asxyhjrash83migfy5n3pngpih40fwgw3v"; libraryHaskellDepends = [ base ]; description = "A typeclass and set of functions for working with newtypes"; license = lib.licenses.bsd3; @@ -482338,7 +484464,6 @@ self: { description = "Lightweight dependency management with Nix"; license = lib.licenses.bsd3; mainProgram = "nix-thunk"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -482465,8 +484590,8 @@ self: { }: mkDerivation { pname = "nix-tree"; - version = "0.7.0"; - sha256 = "1h7klpr5km134f6393gjwnfwgpppvar56w8n7ksjw8aawy7czi0c"; + version = "0.8.0"; + sha256 = "03afl69w88gp0q30cfg8n5h6nhslwc2vcj52bjlxc2zxgwyb8plz"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -487864,6 +489989,7 @@ self: { data-default, extra, free, + Glob, hspec, hspec-discover, microlens, @@ -487876,6 +490002,7 @@ self: { shake, stm, text, + time, toml-reader, transformers, unliftio, @@ -487883,10 +490010,8 @@ self: { }: mkDerivation { pname = "nvfetcher"; - version = "0.7.0.0"; - sha256 = "0idcca3g1rfm8rc7zy68pdbhv4s0npdzdb47ixj0hk2pr8rg51ak"; - revision = "1"; - editedCabalFile = "0pkcsb97x64fnrrs93l73k1yydrnswh8drwdab90c4ac9wjjxvk8"; + version = "0.8.0.0"; + sha256 = "06r92h6i1npgvlbw40rqpnam5rjr8kxrl32ss7gxp0hrf7anii87"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -487900,6 +490025,7 @@ self: { data-default extra free + Glob microlens microlens-th neat-interpolation @@ -487924,6 +490050,7 @@ self: { data-default extra free + Glob microlens microlens-th neat-interpolation @@ -487949,6 +490076,7 @@ self: { data-default extra free + Glob hspec microlens microlens-th @@ -487960,6 +490088,7 @@ self: { shake stm text + time toml-reader transformers unliftio @@ -488699,8 +490828,8 @@ self: { pname = "oasis-xrd"; version = "1.0"; sha256 = "105m258yqfdmp1n7gd824gsry07xqlhfnpla2kb7sn36nckqr3a0"; - revision = "1"; - editedCabalFile = "1jwvncyyn8njzhjdgqwakqfddp34h26abnhypzbdsgn4nyxad1qs"; + revision = "2"; + editedCabalFile = "1zqkp6igqf36ddgkg7l4p2zm09wpn6wfqn6f762p770l0s613l04"; libraryHaskellDepends = [ aeson base @@ -492231,14 +494360,20 @@ self: { mkDerivation, base, containers, + directory, + filepath, ghc, + process, safe, + tasty, + tasty-golden, + text, time, }: mkDerivation { pname = "om-plugin-imports"; - version = "0.4.0.1.9.12"; - sha256 = "0jywx9qz6xws3504z6gby42zzz9d4qj9v62xfg9zmp0faypbbdh6"; + version = "0.4.0.2.9.12"; + sha256 = "0fl0vmj7dvidyqx0qrcpchkjb2n76kgch32q6ysqsfzv6jyyw5cn"; libraryHaskellDepends = [ base containers @@ -492246,6 +494381,19 @@ self: { safe time ]; + testHaskellDepends = [ + base + containers + directory + filepath + ghc + process + safe + tasty + tasty-golden + text + time + ]; description = "Plugin-based explicit import generation"; license = lib.licensesSpdx."MIT"; hydraPlatforms = lib.platforms.none; @@ -494559,8 +496707,8 @@ self: { }: mkDerivation { pname = "opencascade-hs"; - version = "0.6.0.0"; - sha256 = "0bi2hyz863hmrw06qjlxmwkncmzbqf5kq54cfy5ky2f3p8r0kdx9"; + version = "0.6.1.0"; + sha256 = "16ird3yvscnjfnpfjxsvzlc7g2h7frylw7dqqf10xr2d0hx1icpw"; libraryHaskellDepends = [ base resourcet @@ -497304,8 +499452,8 @@ self: { }: mkDerivation { pname = "opt-env-conf-test"; - version = "0.0.0.2"; - sha256 = "0smdlkf74vkdxfddl4zmc5kh6dlx2l4v00c0f6l3gn9180kc8p4m"; + version = "0.0.0.3"; + sha256 = "04fa7a5cllqc8i50lnba57nknk36wfbwqawcf3i84daz87k7zs0g"; libraryHaskellDepends = [ aeson base @@ -498046,8 +500194,8 @@ self: { }: mkDerivation { pname = "optparse-declarative"; - version = "0.4.2"; - sha256 = "0a8b4aa5zvj36nj81kfylxcqfp9ahi5lnak61wvwv9bw68r2a2jn"; + version = "0.4.3"; + sha256 = "1hwxah2imnjglqxq4nldlnarxqrxbrhik5pkd9n79gsf1b9zy408"; libraryHaskellDepends = [ base exceptions @@ -498055,8 +500203,6 @@ self: { ]; description = "Declarative command line option parser"; license = lib.licensesSpdx."MIT"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -503242,12 +505388,13 @@ self: { } ) { }; - pandoc_3_8_2_1 = callPackage ( + pandoc_3_8_3 = callPackage ( { mkDerivation, aeson, aeson-pretty, array, + asciidoc, attoparsec, base, base64-bytestring, @@ -503328,14 +505475,15 @@ self: { }: mkDerivation { pname = "pandoc"; - version = "3.8.2.1"; - sha256 = "1vcdsg9d53bripgizwf2plaxiqlz3yslid78rdv5pn125m9qdhnf"; + version = "3.8.3"; + sha256 = "0208kyybr90mxpv6x4cnrsd4s1010bafg9gf098j9a3lvw3fmynf"; configureFlags = [ "-f-trypandoc" ]; enableSeparateDataOutput = true; libraryHaskellDepends = [ aeson aeson-pretty array + asciidoc attoparsec base base64-bytestring @@ -503659,7 +505807,7 @@ self: { } ) { }; - pandoc-cli_3_8_2_1 = callPackage ( + pandoc-cli_3_8_3 = callPackage ( { mkDerivation, base, @@ -503675,8 +505823,8 @@ self: { }: mkDerivation { pname = "pandoc-cli"; - version = "3.8.2.1"; - sha256 = "0c6bi9837mcarr7n888zl3hl0makx8ghw51r30v3isdjjvf3x2p3"; + version = "3.8.3"; + sha256 = "106f8hac5s0xm815k9az28insvkdmw37ybb1yjavb8v9ib1f1h2v"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -504155,9 +506303,7 @@ self: { ]; description = "Pandoc filter formatting Haskell code fragments using GHC lexer"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "pandoc-filter-indent"; - broken = true; } ) { }; @@ -504571,7 +506717,7 @@ self: { } ) { }; - pandoc-lua-engine_0_5_0_1 = callPackage ( + pandoc-lua-engine_0_5_0_2 = callPackage ( { mkDerivation, aeson, @@ -504608,8 +506754,8 @@ self: { }: mkDerivation { pname = "pandoc-lua-engine"; - version = "0.5.0.1"; - sha256 = "1hcscazl4s2cm6wmimjjqax53rbwqij7cphs72f04sqry54802fn"; + version = "0.5.0.2"; + sha256 = "0vxvg0x4ym9sryr2yvbm4bpig18j4b3xzzmb4crkbdm8as17ak88"; libraryHaskellDepends = [ aeson base @@ -505407,6 +507553,65 @@ self: { } ) { }; + pandoc-types_1_23_1_1 = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + containers, + criterion, + deepseq, + HUnit, + QuickCheck, + syb, + template-haskell, + test-framework, + test-framework-hunit, + test-framework-quickcheck2, + text, + transformers, + }: + mkDerivation { + pname = "pandoc-types"; + version = "1.23.1.1"; + sha256 = "17zhzimkk27s0mx4h752jzhxqqr7nklj1mnrkx86faq816qx1hc9"; + libraryHaskellDepends = [ + aeson + base + bytestring + containers + deepseq + QuickCheck + syb + text + transformers + ]; + testHaskellDepends = [ + aeson + base + bytestring + containers + HUnit + QuickCheck + syb + template-haskell + test-framework + test-framework-hunit + test-framework-quickcheck2 + text + ]; + benchmarkHaskellDepends = [ + base + criterion + text + ]; + description = "Types for representing a structured document"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + pandoc-unlit = callPackage ( { mkDerivation, @@ -510668,7 +512873,6 @@ self: { ]; description = "Data structures for describing changes to other data structures"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -511326,6 +513530,7 @@ self: { description = "A toy pathfinding library"; license = lib.licenses.bsd3; hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -511532,6 +513737,64 @@ self: { } ) { }; + patrol_1_2_0_0 = callPackage ( + { + mkDerivation, + aeson, + base, + bytestring, + case-insensitive, + containers, + exceptions, + hspec, + http-client, + http-client-tls, + http-types, + network-uri, + text, + time, + uuid, + }: + mkDerivation { + pname = "patrol"; + version = "1.2.0.0"; + sha256 = "1d7xvcxn37xas8iy8z271dbk6w21ps3j7br417fgd7xj18nnrkiy"; + libraryHaskellDepends = [ + aeson + base + bytestring + case-insensitive + containers + exceptions + http-client + http-client-tls + http-types + network-uri + text + time + uuid + ]; + testHaskellDepends = [ + aeson + base + bytestring + case-insensitive + containers + exceptions + hspec + http-client + http-types + network-uri + text + time + uuid + ]; + description = "Sentry SDK"; + license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + patronscraper = callPackage ( { mkDerivation, @@ -512618,8 +514881,8 @@ self: { }: mkDerivation { pname = "pcre2"; - version = "2.2.2"; - sha256 = "0nbf4cf5mvcw7m1c9ncf58hqbdkqnr4k6m8py9v772nzmipr8hcw"; + version = "2.2.3"; + sha256 = "1km01vfjm83yv2cc83xyri2fy9c2wk3h7lf6l5g3qzyp19vch52p"; libraryHaskellDepends = [ base containers @@ -514252,6 +516515,8 @@ self: { pname = "perceptual-hash"; version = "0.1.4.7"; sha256 = "151s5bqhl89ism9v4h93z0x8g0rcschx58ddvzj09xxxdbnf3rmk"; + revision = "2"; + editedCabalFile = "0r16n50ak4k4l21shwd5l0i2iiw2yf93a7qjjv8yfll9mhss87wk"; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; @@ -515528,6 +517793,137 @@ self: { } ) { }; + persistent_2_18_0_0 = callPackage ( + { + mkDerivation, + aeson, + attoparsec, + attoparsec-aeson, + base, + base64-bytestring, + blaze-html, + bytestring, + conduit, + containers, + criterion, + deepseq, + fast-logger, + file-embed, + hspec, + http-api-data, + lift-type, + megaparsec, + monad-logger, + mtl, + path-pieces, + QuickCheck, + quickcheck-instances, + replace-megaparsec, + resource-pool, + resourcet, + scientific, + semigroupoids, + shakespeare, + silently, + template-haskell, + text, + th-lift-instances, + time, + transformers, + unliftio, + unliftio-core, + unordered-containers, + vault, + vector, + }: + mkDerivation { + pname = "persistent"; + version = "2.18.0.0"; + sha256 = "19qj5kqjvyqfj6zzrncwkdfz08gp50xl9p3mnqyhrfgldzp2fxjp"; + libraryHaskellDepends = [ + aeson + attoparsec + attoparsec-aeson + base + base64-bytestring + blaze-html + bytestring + conduit + containers + deepseq + fast-logger + http-api-data + lift-type + megaparsec + monad-logger + mtl + path-pieces + replace-megaparsec + resource-pool + resourcet + scientific + semigroupoids + silently + template-haskell + text + th-lift-instances + time + transformers + unliftio + unliftio-core + unordered-containers + vault + vector + ]; + testHaskellDepends = [ + aeson + attoparsec + base + base64-bytestring + blaze-html + bytestring + conduit + containers + deepseq + fast-logger + hspec + http-api-data + megaparsec + monad-logger + mtl + path-pieces + QuickCheck + quickcheck-instances + resource-pool + resourcet + scientific + shakespeare + silently + template-haskell + text + th-lift-instances + time + transformers + unliftio + unliftio-core + unordered-containers + vector + ]; + benchmarkHaskellDepends = [ + base + criterion + deepseq + file-embed + template-haskell + text + ]; + description = "Type-safe, multi-backend data serialization"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + maintainers = [ lib.maintainers.psibi ]; + } + ) { }; + persistent-audit = callPackage ( { mkDerivation, @@ -516383,6 +518779,86 @@ self: { } ) { }; + persistent-mysql_2_13_1_6 = callPackage ( + { + mkDerivation, + aeson, + base, + blaze-builder, + bytestring, + conduit, + containers, + fast-logger, + hspec, + http-api-data, + HUnit, + monad-logger, + mysql, + mysql-simple, + path-pieces, + persistent, + persistent-qq, + persistent-test, + QuickCheck, + quickcheck-instances, + resource-pool, + resourcet, + text, + time, + transformers, + unliftio-core, + }: + mkDerivation { + pname = "persistent-mysql"; + version = "2.13.1.6"; + sha256 = "0dxcpdr4r7czvxx1pv3hhkb7vv49q2y90sb6ba7aicaqhj6zr909"; + libraryHaskellDepends = [ + aeson + base + blaze-builder + bytestring + conduit + containers + monad-logger + mysql + mysql-simple + persistent + resource-pool + resourcet + text + transformers + unliftio-core + ]; + testHaskellDepends = [ + aeson + base + bytestring + conduit + containers + fast-logger + hspec + http-api-data + HUnit + monad-logger + mysql + path-pieces + persistent + persistent-qq + persistent-test + QuickCheck + quickcheck-instances + resourcet + text + time + transformers + unliftio-core + ]; + description = "Backend for the persistent library using MySQL database server"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + persistent-mysql-haskell = callPackage ( { mkDerivation, @@ -516790,7 +519266,7 @@ self: { } ) { }; - persistent-postgresql_2_14_0_0 = callPackage ( + persistent-postgresql_2_14_2_0 = callPackage ( { mkDerivation, aeson, @@ -516801,6 +519277,7 @@ self: { conduit, containers, fast-logger, + file-embed, hspec, hspec-expectations, hspec-expectations-lifted, @@ -516831,8 +519308,8 @@ self: { }: mkDerivation { pname = "persistent-postgresql"; - version = "2.14.0.0"; - sha256 = "0fxqg4ia73m9cv9qk4l4nr4y8x0a14wc0kpbj3b2nrwnrbiwyffc"; + version = "2.14.2.0"; + sha256 = "0kg7advrdpqxdm26imbb2jbszpwhqqc80mm41hskicglzxnibxf8"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -516843,6 +519320,7 @@ self: { bytestring conduit containers + file-embed monad-logger mtl persistent @@ -517481,8 +519959,8 @@ self: { }: mkDerivation { pname = "persistent-test"; - version = "2.13.2.0"; - sha256 = "0mzj2k07yhbx8674c1yh6brl8clncqc7ci8295hjazrmr528rc2x"; + version = "2.13.2.1"; + sha256 = "0rlqz60i273ch6dwc15dmc8bc91fpd1c0ljpvcwcsgp7vw9xq85f"; libraryHaskellDepends = [ aeson base @@ -518647,6 +521125,8 @@ self: { pname = "pgp-wordlist"; version = "0.1.0.3"; sha256 = "15g6qh0fb7kjj3l0w8cama7cxgnhnhybw760md9yy7cqfq15cfzg"; + revision = "1"; + editedCabalFile = "182r8sp02hqrafsx4yg9f0rrx3l1mw2lnbc835xml9c6rxwah83k"; libraryHaskellDepends = [ base bytestring @@ -519025,8 +521505,8 @@ self: { }: mkDerivation { pname = "phino"; - version = "0.0.0.49"; - sha256 = "076wv0s4hsqfhqsk1syn4gxbn99ad35a2iqavvjn9k51xs0hgad1"; + version = "0.0.0.59"; + sha256 = "0zdb19daapw22bs4rvcs1pp7i1ch3fjvicsfpmfqwy77fdsn0qqz"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -519056,6 +521536,7 @@ self: { testHaskellDepends = [ aeson base + bytestring containers directory filepath @@ -528198,70 +530679,126 @@ self: { unix ]; testToolDepends = [ hspec-discover ]; - description = "pms-ui-request"; + description = "pms-ui-request"; + license = lib.licensesSpdx."Apache-2.0"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + + pms-ui-response = callPackage ( + { + mkDerivation, + aeson, + async, + base, + bytestring, + conduit, + data-default, + fast-logger, + hspec, + hspec-discover, + lens, + monad-logger, + mtl, + pms-domain-model, + safe-exceptions, + stm, + text, + transformers, + unix, + }: + mkDerivation { + pname = "pms-ui-response"; + version = "0.0.5.0"; + sha256 = "05p16wb90wlj15h442wqfmnypks9bk8pynmfhydyg0f2rbrn6dsa"; + libraryHaskellDepends = [ + aeson + base + bytestring + conduit + data-default + fast-logger + lens + monad-logger + mtl + pms-domain-model + safe-exceptions + stm + text + transformers + ]; + testHaskellDepends = [ + async + base + data-default + hspec + hspec-discover + lens + monad-logger + pms-domain-model + stm + unix + ]; + testToolDepends = [ hspec-discover ]; + description = "pms-ui-response"; license = lib.licensesSpdx."Apache-2.0"; hydraPlatforms = lib.platforms.none; } ) { }; - pms-ui-response = callPackage ( + png-chunk-yaftee = callPackage ( { mkDerivation, - aeson, - async, base, - bytestring, - conduit, - data-default, - fast-logger, - hspec, - hspec-discover, - lens, - monad-logger, - mtl, - pms-domain-model, - safe-exceptions, - stm, - text, - transformers, - unix, + bitarray-bs, + bytestring-ft, + higher-order-open-union, + mono-traversable, + tools-yj, + typelevel-tools-yj, + yaftee, + yaftee-basic-monads, + yaftee-conduit, + yaftee-conduit-bytestring, + yaftee-conduit-bytestring-ft, + yaftee-conduit-mono-traversable, }: mkDerivation { - pname = "pms-ui-response"; - version = "0.0.5.0"; - sha256 = "05p16wb90wlj15h442wqfmnypks9bk8pynmfhydyg0f2rbrn6dsa"; + pname = "png-chunk-yaftee"; + version = "0.1.0.3"; + sha256 = "12zmhplp8x8qkqpwgfl6lzc7ph5q5qx6pmz7hr24gyrd49p1wp4k"; libraryHaskellDepends = [ - aeson base - bytestring - conduit - data-default - fast-logger - lens - monad-logger - mtl - pms-domain-model - safe-exceptions - stm - text - transformers + bitarray-bs + bytestring-ft + higher-order-open-union + mono-traversable + tools-yj + typelevel-tools-yj + yaftee + yaftee-basic-monads + yaftee-conduit + yaftee-conduit-bytestring + yaftee-conduit-bytestring-ft + yaftee-conduit-mono-traversable ]; testHaskellDepends = [ - async base - data-default - hspec - hspec-discover - lens - monad-logger - pms-domain-model - stm - unix + bitarray-bs + bytestring-ft + higher-order-open-union + mono-traversable + tools-yj + typelevel-tools-yj + yaftee + yaftee-basic-monads + yaftee-conduit + yaftee-conduit-bytestring + yaftee-conduit-bytestring-ft + yaftee-conduit-mono-traversable ]; - testToolDepends = [ hspec-discover ]; - description = "pms-ui-response"; - license = lib.licensesSpdx."Apache-2.0"; - hydraPlatforms = lib.platforms.none; + description = "PNG's chunk codec on Yaftee"; + license = lib.licensesSpdx."BSD-3-Clause"; } ) { }; @@ -533890,8 +536427,8 @@ self: { { mkDerivation, base }: mkDerivation { pname = "positive-integer"; - version = "0.1.2.0"; - sha256 = "0m0l02v3ybsilkcvyc82ma57bbha4rhncsf5574b0m3zmxq17kaq"; + version = "0.1.2.1"; + sha256 = "0wy9w5nnp86v0j2klhrdp4g7ml4prryp79aq6zwzna4jmw8qsvqz"; libraryHaskellDepends = [ base ]; description = "Type of positive integers"; license = lib.licenses.mit; @@ -534240,8 +536777,8 @@ self: { }: mkDerivation { pname = "posplyu"; - version = "0.1.1"; - sha256 = "07pafmfqk8i4g3zp0yq6gylfjb0jmbqla9kdvkfi068cm26m3ryq"; + version = "0.1.2"; + sha256 = "1kbp6d1a34gldzw9nxjkw5sij9ysl6mjgnqpm8ghnmkpfvnr1a2q"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ @@ -535926,8 +538463,8 @@ self: { }: mkDerivation { pname = "postgresql-simple-interval"; - version = "1.0.1.0"; - sha256 = "1qwcywyiw9y5bnvzb0ji32q3yh5fs5nxiw17gr4q4yk0wi01rw92"; + version = "1.0.1.1"; + sha256 = "1m1bjmzaini8l7q8d9rsfzdhpjpg4kn1jahy9vsfk38z0w9v6bv3"; libraryHaskellDepends = [ attoparsec base @@ -536067,8 +538604,8 @@ self: { }: mkDerivation { pname = "postgresql-simple-named"; - version = "0.0.5.0"; - sha256 = "0kay1xy0jkgnrc81qqklmfzd60g3wg4ymqm75s97z82d3iif7jr0"; + version = "0.0.6.0"; + sha256 = "032brrdssw05dmmm349i0v2x3qrw256g8rwnxss2lq5frxy97spi"; libraryHaskellDepends = [ base bytestring @@ -537737,8 +540274,8 @@ self: { }: mkDerivation { pname = "ppad-aead"; - version = "0.2.0"; - sha256 = "1s14bplwjfavg50xfyy65r2f8lg4man31jc83m3l32k6h4jvg983"; + version = "0.3.1"; + sha256 = "13hkgnsxclxsimidxra7bn5dqp5hl0ckw1zgmyx25iha6bwcbig3"; libraryHaskellDepends = [ base bytestring @@ -537784,8 +540321,8 @@ self: { }: mkDerivation { pname = "ppad-base16"; - version = "0.2.0"; - sha256 = "1bw7zb59wnjmy0pdl8gzqgkmsa5z2sq26xnidszx0h43j00qgqjk"; + version = "0.2.1"; + sha256 = "0dm36k88n4d0l6ddf674q9mjpsx3pydwlyirirlj4mi219cayz4r"; libraryHaskellDepends = [ base bytestring @@ -537816,9 +540353,9 @@ self: { mkDerivation, aeson, base, - base16-bytestring, bytestring, criterion, + ppad-base16, ppad-sha256, tasty, tasty-hunit, @@ -537827,8 +540364,8 @@ self: { }: mkDerivation { pname = "ppad-base58"; - version = "0.2.1"; - sha256 = "0s94985p1d1zh0ip404pgi12bj97naydr525i45aac64w8iis03y"; + version = "0.2.2"; + sha256 = "1z5dcpsjrdijs0d9zcgr52bs2k7jd52n1dg98a38khyqlngchb9j"; libraryHaskellDepends = [ base bytestring @@ -537837,8 +540374,8 @@ self: { testHaskellDepends = [ aeson base - base16-bytestring bytestring + ppad-base16 tasty tasty-hunit tasty-quickcheck @@ -537868,8 +540405,8 @@ self: { }: mkDerivation { pname = "ppad-bech32"; - version = "0.2.3"; - sha256 = "0g8fk0bwx88zr4k4mijd8zn5jhi6gcsn6hvdp8jxb3r4a97a4yyv"; + version = "0.2.4"; + sha256 = "1gandp9vcr56ifygnvh7rxs9v4732l1y29qwvapsvsijsy23wy4v"; libraryHaskellDepends = [ base bytestring @@ -537903,6 +540440,7 @@ self: { deepseq, ppad-base16, ppad-base58, + ppad-fixed, ppad-ripemd160, ppad-secp256k1, ppad-sha256, @@ -537912,12 +540450,13 @@ self: { }: mkDerivation { pname = "ppad-bip32"; - version = "0.2.0"; - sha256 = "1h7i6km0ai3wvyrhfhl31gpaq21vcggrgk0gvr0cjhkmmscd3d5w"; + version = "0.3.2"; + sha256 = "1jdgp6n9sjd4wlm9ah6y33ss868gbzg5f75wd0jagb60lbxsizbk"; libraryHaskellDepends = [ base bytestring ppad-base58 + ppad-fixed ppad-ripemd160 ppad-secp256k1 ppad-sha256 @@ -537929,6 +540468,7 @@ self: { bytestring ppad-base16 ppad-base58 + ppad-fixed tasty tasty-hunit ]; @@ -537938,6 +540478,7 @@ self: { bytestring criterion deepseq + ppad-fixed ppad-secp256k1 ]; description = "BIP32 hierarchical deterministic wallets"; @@ -537969,8 +540510,8 @@ self: { }: mkDerivation { pname = "ppad-bip39"; - version = "0.3.0"; - sha256 = "18bshwr4hpnxk2v73kqxcsjbjffpss41whmd3scm20wq3al2xvva"; + version = "0.3.1"; + sha256 = "1989xkclz8djd4ysa7fl1nb1icimyvk514mqxfncsil6517cxg53"; libraryHaskellDepends = [ base bytestring @@ -538021,8 +540562,8 @@ self: { }: mkDerivation { pname = "ppad-chacha"; - version = "0.2.0"; - sha256 = "1zqrg1af6rlflq74lamxd9f0p8sfhvmhjv3ii89mkckhizr8fqrc"; + version = "0.2.1"; + sha256 = "0vkpm3bvfgr89gyx0sfc7w1hw1xrjmif9008mzwd79pknjqyphvw"; libraryHaskellDepends = [ base bytestring @@ -538048,6 +540589,42 @@ self: { } ) { }; + ppad-fixed = callPackage ( + { + mkDerivation, + base, + criterion, + deepseq, + tasty, + tasty-hunit, + tasty-quickcheck, + weigh, + }: + mkDerivation { + pname = "ppad-fixed"; + version = "0.1.3"; + sha256 = "1dxfpvqiycc60mb4ax5l22hyqgr2rwald3wc7bnwx18klrx7cblv"; + libraryHaskellDepends = [ + base + deepseq + ]; + testHaskellDepends = [ + base + tasty + tasty-hunit + tasty-quickcheck + ]; + benchmarkHaskellDepends = [ + base + criterion + deepseq + weigh + ]; + description = "Large fixed-width words and constant-time arithmetic"; + license = lib.licensesSpdx."MIT"; + } + ) { }; + ppad-hkdf = callPackage ( { mkDerivation, @@ -538064,8 +540641,8 @@ self: { }: mkDerivation { pname = "ppad-hkdf"; - version = "0.3.0"; - sha256 = "194nwcjpdals55wf5khvl393d0q4fzdmx9424s9j2n0z70ry29pw"; + version = "0.3.1"; + sha256 = "0r62xdibpbnk1gv3krw7xpxbl2nh3l18j8x9z374hkhd4z9ii4xi"; libraryHaskellDepends = [ base bytestring @@ -538099,9 +540676,9 @@ self: { mkDerivation, attoparsec, base, - base16-bytestring, bytestring, criterion, + ppad-base16, ppad-sha256, ppad-sha512, primitive, @@ -538110,8 +540687,8 @@ self: { }: mkDerivation { pname = "ppad-hmac-drbg"; - version = "0.1.2"; - sha256 = "0k0mjxcpgrlk4fs9p69sxlaj3v7b5hk8036q06iwwdw184dww7b9"; + version = "0.1.3"; + sha256 = "0bgg3nrc3a62bidjpjdvwjhaai6kp97iqy90f3jzfrwl0iqh6mh0"; libraryHaskellDepends = [ base bytestring @@ -538120,8 +540697,8 @@ self: { testHaskellDepends = [ attoparsec base - base16-bytestring bytestring + ppad-base16 ppad-sha256 ppad-sha512 tasty @@ -538156,8 +540733,8 @@ self: { }: mkDerivation { pname = "ppad-pbkdf"; - version = "0.2.0"; - sha256 = "1zir2zm4bgimrgiv94dzqvn794dhwywl63b4im9sg9c61gh91r9m"; + version = "0.2.1"; + sha256 = "0aw7ps0z1l1b1h1n26w2sariglki38ya7iaa2ahb674a64imwpkz"; libraryHaskellDepends = [ base bytestring @@ -538193,17 +540770,19 @@ self: { bytestring, criterion, ppad-base16, + ppad-fixed, primitive, tasty, tasty-hunit, }: mkDerivation { pname = "ppad-poly1305"; - version = "0.3.0"; - sha256 = "06db9qvi688nyhw8fqk8vqxhl6sddfkrg5ap15xd2lf75rl1v7kw"; + version = "0.4.1"; + sha256 = "1y7jfq4xish527w7p4ykm8bhd1x1r5larmap04ksvqd3g1wxg8md"; libraryHaskellDepends = [ base bytestring + ppad-fixed ]; testHaskellDepends = [ base @@ -538229,9 +540808,9 @@ self: { mkDerivation, aeson, base, - base16-bytestring, bytestring, criterion, + ppad-base16, SHA, tasty, tasty-hunit, @@ -538239,8 +540818,8 @@ self: { }: mkDerivation { pname = "ppad-ripemd160"; - version = "0.1.3"; - sha256 = "0sq6dfxzf5gmbjkp6vdd59sd1pmvf00dr4a9hvq36p6hlsd6nq6v"; + version = "0.1.4"; + sha256 = "0zfhmcy32ik54qh0bblfx2nznmkhapiw81hls7xhqjxlg26rj4lx"; libraryHaskellDepends = [ base bytestring @@ -538248,8 +540827,8 @@ self: { testHaskellDepends = [ aeson base - base16-bytestring bytestring + ppad-base16 tasty tasty-hunit text @@ -538281,8 +540860,8 @@ self: { }: mkDerivation { pname = "ppad-script"; - version = "0.2.1"; - sha256 = "0dgvz2vy3ms52m38pcwccffz4j5gbw3q5pxiymlscc2p9j2wh48j"; + version = "0.2.2"; + sha256 = "1nvkx0hgxvipqn27c7q4cxk7dz0calk4w6f0nhpxphi9w4z5jhqg"; libraryHaskellDepends = [ base bytestring @@ -538308,8 +540887,6 @@ self: { ]; description = "Primitive Script support"; license = lib.licensesSpdx."MIT"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -538319,10 +540896,11 @@ self: { aeson, attoparsec, base, - base16-bytestring, bytestring, criterion, deepseq, + ppad-base16, + ppad-fixed, ppad-hmac-drbg, ppad-sha256, primitive, @@ -538333,11 +540911,12 @@ self: { }: mkDerivation { pname = "ppad-secp256k1"; - version = "0.4.0"; - sha256 = "0wrmbz0s19g7b6qardn7isgmkrl5svw5nf360ksvhwagicv51g7l"; + version = "0.5.2"; + sha256 = "0q0b7maq824rbniv6ag20nn8qvk74fx9fjkz9xhj7pngxgkm8rks"; libraryHaskellDepends = [ base bytestring + ppad-fixed ppad-hmac-drbg ppad-sha256 primitive @@ -538346,8 +540925,9 @@ self: { aeson attoparsec base - base16-bytestring bytestring + ppad-base16 + ppad-fixed ppad-sha256 tasty tasty-hunit @@ -538355,10 +540935,11 @@ self: { ]; benchmarkHaskellDepends = [ base - base16-bytestring bytestring criterion deepseq + ppad-base16 + ppad-fixed weigh ]; description = "Schnorr signatures, ECDSA, and ECDH on the elliptic curve secp256k1"; @@ -538372,9 +540953,9 @@ self: { mkDerivation, aeson, base, - base16-bytestring, bytestring, criterion, + ppad-base16, SHA, tasty, tasty-hunit, @@ -538382,8 +540963,8 @@ self: { }: mkDerivation { pname = "ppad-sha256"; - version = "0.2.3"; - sha256 = "148g4i39rm3vxbfj3mpr9p4s6bly9c667j880rxhrqf7xg96ps3p"; + version = "0.2.4"; + sha256 = "0cbg4hpcfxzxzvp23bzyrwiqzdqb79pmvd4m33fimilmbw1rlk02"; libraryHaskellDepends = [ base bytestring @@ -538391,8 +540972,8 @@ self: { testHaskellDepends = [ aeson base - base16-bytestring bytestring + ppad-base16 tasty tasty-hunit text @@ -538415,9 +540996,9 @@ self: { mkDerivation, aeson, base, - base16-bytestring, bytestring, criterion, + ppad-base16, SHA, tasty, tasty-hunit, @@ -538425,8 +541006,8 @@ self: { }: mkDerivation { pname = "ppad-sha512"; - version = "0.1.3"; - sha256 = "1ppqz56fr2m4jbscjjb31nh33kg80had52mpwyzr7mlgm5xdl6hk"; + version = "0.1.4"; + sha256 = "1rmxd38yfjbjf3v5pn5pvjsb0c7b26pxnd4m3f7fwidqq8x69w4v"; libraryHaskellDepends = [ base bytestring @@ -538434,8 +541015,8 @@ self: { testHaskellDepends = [ aeson base - base16-bytestring bytestring + ppad-base16 tasty tasty-hunit text @@ -538623,6 +541204,8 @@ self: { pname = "pqueue"; version = "1.6.0.0"; sha256 = "1bg9z0m062lggmzkrq29vz75d7mxxmx9ka1862j7qszj9gqmqnw6"; + revision = "1"; + editedCabalFile = "1g2xnsh8h8dddgagpivnbns5h7yzmwyhwcxwya6a0pdlisfi8rdm"; libraryHaskellDepends = [ base deepseq @@ -541178,6 +543761,30 @@ self: { } ) { }; + prettyprinter-compat-ansi-wl-pprint_1_1 = callPackage ( + { + mkDerivation, + base, + prettyprinter, + prettyprinter-ansi-terminal, + text, + }: + mkDerivation { + pname = "prettyprinter-compat-ansi-wl-pprint"; + version = "1.1"; + sha256 = "0cx8kgwpmp00zklddi04kb617q0bcqga9sczfh6brmqphqwnnzd5"; + libraryHaskellDepends = [ + base + prettyprinter + prettyprinter-ansi-terminal + text + ]; + description = "Drop-in compatibility package to migrate from »ansi-wl-pprint« to »prettyprinter«"; + license = lib.licenses.bsd2; + hydraPlatforms = lib.platforms.none; + } + ) { }; + prettyprinter-compat-wl-pprint = callPackage ( { mkDerivation, @@ -541257,6 +543864,8 @@ self: { pname = "prettyprinter-convert-ansi-wl-pprint"; version = "1.1.2"; sha256 = "0kfrwnaldx0cyr3mwx3ys14bl58nfjpxkzrfi6152gvfh8ly44c6"; + revision = "1"; + editedCabalFile = "0iaplakbqcj1pyvr29jjpi1aanrqb7kcncv8gi3k5sc4zgklpsri"; libraryHaskellDepends = [ ansi-terminal ansi-wl-pprint @@ -541834,6 +544443,8 @@ self: { pname = "primitive"; version = "0.9.1.0"; sha256 = "0xixplp2b5sh2sx6hqllhr8bcsd028v7ry2pibdwayrwh50xxd24"; + revision = "1"; + editedCabalFile = "1w1rsak97k5sp1sg25kgxcxwbi90mbdrr9hzm1dyzijvf4n24svm"; libraryHaskellDepends = [ base deepseq @@ -545847,7 +548458,6 @@ self: { prometheus-wai = callPackage ( { mkDerivation, - autoexporter, base, bytestring, containers, @@ -545858,8 +548468,8 @@ self: { }: mkDerivation { pname = "prometheus-wai"; - version = "0.0.0.1"; - sha256 = "1l1xab87n1ll5m8h439mcq7bcy0lf7sw8zf97ld6wy6jlq82ncin"; + version = "0.2.0.0"; + sha256 = "1dpnh98smsgl41hrc3xia1ny12jmpiclg6in5jgsjwalyg2pisx6"; libraryHaskellDepends = [ base bytestring @@ -545869,7 +548479,6 @@ self: { text wai ]; - libraryToolDepends = [ autoexporter ]; license = lib.licenses.mit; } ) { }; @@ -548690,8 +551299,8 @@ self: { }: mkDerivation { pname = "psqueues"; - version = "0.2.8.2"; - sha256 = "0kkr0ya5j0g8z86ihq1h3m7hr88hy6yg0bkrg6vdwmhr6vqlcfzn"; + version = "0.2.8.3"; + sha256 = "0xnh18jd0lad1l97alw813wq66q23gwhr53dx1r0v81wxfdbxg0h"; libraryHaskellDepends = [ base deepseq @@ -554912,6 +557521,58 @@ self: { } ) { }; + quic-simple = callPackage ( + { + mkDerivation, + async, + base, + bytestring, + containers, + crypton, + crypton-x509, + hourglass, + iproute, + memory, + network, + quic, + serialise, + stm, + text, + tls, + }: + mkDerivation { + pname = "quic-simple"; + version = "0.1.1.0"; + sha256 = "1p7002lzga6n4qzab2daqrivm7k725427saxm3hi3rryj7dv9jxg"; + libraryHaskellDepends = [ + async + base + bytestring + crypton + crypton-x509 + hourglass + iproute + memory + network + quic + serialise + stm + tls + ]; + testHaskellDepends = [ + async + base + bytestring + containers + stm + text + ]; + description = "Quick-start wrappers for QUIC"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + quick-generator = callPackage ( { mkDerivation, @@ -565152,8 +567813,8 @@ self: { }: mkDerivation { pname = "recover-rtti"; - version = "0.5.1"; - sha256 = "1k8sxwgbbcx38hlkwvpxa44ifw0mr1k10b01a0pym4n0aha9wp90"; + version = "0.5.2"; + sha256 = "1wq7sg93b4igqm21cjwq3fwdjcma17widnics8467d12bgfq7psx"; libraryHaskellDepends = [ aeson base @@ -567193,7 +569854,6 @@ self: { ]; description = "Higher-order Functional Reactive Programming"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -567393,10 +570053,7 @@ self: { ]; description = "Functional Reactive Web Apps with Reflex"; license = lib.licenses.bsd3; - maintainers = [ - lib.maintainers.alexfmpe - lib.maintainers.maralorn - ]; + maintainers = [ lib.maintainers.maralorn ]; } ) { }; @@ -567674,7 +570331,6 @@ self: { description = "Functional Reactive Web Apps with Reflex"; license = lib.licenses.bsd3; hydraPlatforms = lib.platforms.none; - maintainers = [ lib.maintainers.alexfmpe ]; broken = true; } ) { chrome-test-utils = null; }; @@ -568056,7 +570712,6 @@ self: { ]; description = "Reflex FRP interface for watching files"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -568112,7 +570767,6 @@ self: { description = "Interact with a GADT API in your reflex-dom application"; license = lib.licenses.bsd3; mainProgram = "readme"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -568167,7 +570821,6 @@ self: { license = lib.licensesSpdx."BSD-3-Clause"; hydraPlatforms = lib.platforms.none; mainProgram = "readme"; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -568242,7 +570895,6 @@ self: { ]; description = "A GHCi widget library for use in reflex applications"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; mainProgram = "reflex-ghci"; } ) { }; @@ -568679,8 +571331,8 @@ self: { }: mkDerivation { pname = "reflex-process"; - version = "0.3.3.1"; - sha256 = "1f7lfhhf3c64p3mnixibp5yfwd35k9igdlfayv7qjr13pa5a94x4"; + version = "0.3.3.2"; + sha256 = "1vwlxasym7xnl3za8vl3w7f9xmzsx0pg3zgl41rlajsv80djzhzn"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -568719,7 +571371,6 @@ self: { ]; description = "Reflex FRP interface for running system processes"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "readme"; } ) { }; @@ -568880,8 +571531,8 @@ self: { }: mkDerivation { pname = "reflex-vty"; - version = "0.6.2.0"; - sha256 = "0hl7dy5h6fjmlsxmk142rpp36d6gnhka0k7aa2jci8q7g7i1zs4f"; + version = "0.6.2.1"; + sha256 = "0l3nbfn2ih0wdp4yjv1f4jmxi5nm008azmlpv71yxhpi9dvg2hzm"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -568925,9 +571576,7 @@ self: { ]; description = "Reflex FRP host and widgets for VTY applications"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; mainProgram = "example"; - broken = true; } ) { }; @@ -577141,8 +579790,6 @@ self: { ]; description = "Adaptation of the retry library for the effectful ecosystem"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -578184,6 +580831,97 @@ self: { } ) { }; + rhine_1_6 = callPackage ( + { + mkDerivation, + automaton, + base, + containers, + criterion, + deepseq, + foldable1-classes-compat, + free, + mmorph, + monad-schedule, + MonadRandom, + mtl, + profunctors, + QuickCheck, + random, + selective, + simple-affine-space, + sop-core, + tasty, + tasty-hunit, + tasty-quickcheck, + text, + time, + time-domain, + transformers, + vector-sized, + }: + mkDerivation { + pname = "rhine"; + version = "1.6"; + sha256 = "164zvryd554a1fv2nl3a33a8fid6didx4xh7b0sqs2m49205fizj"; + enableSeparateDataOutput = true; + libraryHaskellDepends = [ + automaton + base + containers + deepseq + foldable1-classes-compat + free + mmorph + monad-schedule + MonadRandom + mtl + profunctors + random + selective + simple-affine-space + sop-core + text + time + time-domain + transformers + vector-sized + ]; + testHaskellDepends = [ + automaton + base + criterion + monad-schedule + mtl + QuickCheck + selective + tasty + tasty-hunit + tasty-quickcheck + text + time + transformers + vector-sized + ]; + benchmarkHaskellDepends = [ + automaton + base + criterion + monad-schedule + mtl + selective + text + time + transformers + vector-sized + ]; + description = "Functional Reactive Programming with type-level clocks"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + maintainers = [ lib.maintainers.turion ]; + } + ) { }; + rhine-bayes = callPackage ( { mkDerivation, @@ -578229,6 +580967,52 @@ self: { } ) { }; + rhine-bayes_1_6 = callPackage ( + { + mkDerivation, + automaton, + base, + log-domain, + mmorph, + monad-bayes, + rhine, + rhine-gloss, + time, + transformers, + }: + mkDerivation { + pname = "rhine-bayes"; + version = "1.6"; + sha256 = "11h3a3jwsk19hw473lkamgplx0mbvcr29cidvcibr3i0vp6lxmmz"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + automaton + base + log-domain + mmorph + monad-bayes + rhine + transformers + ]; + executableHaskellDepends = [ + automaton + base + log-domain + mmorph + monad-bayes + rhine + rhine-gloss + time + transformers + ]; + description = "monad-bayes backend for Rhine"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + mainProgram = "rhine-bayes-gloss"; + } + ) { }; + rhine-gloss = callPackage ( { mkDerivation, @@ -578263,6 +581047,41 @@ self: { } ) { }; + rhine-gloss_1_6 = callPackage ( + { + mkDerivation, + automaton, + base, + gloss, + mmorph, + monad-schedule, + rhine, + transformers, + }: + mkDerivation { + pname = "rhine-gloss"; + version = "1.6"; + sha256 = "1c12032rahdr5dibvv3v09y39bqih6bvyajn3mw6lrls227simqk"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + automaton + base + gloss + mmorph + monad-schedule + rhine + transformers + ]; + executableHaskellDepends = [ base ]; + description = "Gloss backend for Rhine"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + mainProgram = "rhine-gloss-gears"; + maintainers = [ lib.maintainers.turion ]; + } + ) { }; + rhine-terminal = callPackage ( { mkDerivation, @@ -578316,6 +581135,60 @@ self: { } ) { }; + rhine-terminal_1_6 = callPackage ( + { + mkDerivation, + base, + exceptions, + hspec, + monad-schedule, + rhine, + stm, + terminal, + text, + time, + transformers, + }: + mkDerivation { + pname = "rhine-terminal"; + version = "1.6"; + sha256 = "1jgq2rr1yp3fwmbmqjhvq99r7fflmqy83i8ldhsfw32aq0gl92bh"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + base + exceptions + monad-schedule + rhine + terminal + time + transformers + ]; + executableHaskellDepends = [ + base + rhine + terminal + text + time + ]; + testHaskellDepends = [ + base + exceptions + hspec + rhine + stm + terminal + text + time + transformers + ]; + description = "Terminal backend for Rhine"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + mainProgram = "rhine-terminal-simple"; + } + ) { }; + rhythm-game-tutorial = callPackage ( { mkDerivation, @@ -581281,6 +584154,49 @@ self: { } ) { }; + roc-id_0_3_0_0 = callPackage ( + { + mkDerivation, + base, + cabal-doctest, + doctest, + hspec, + MonadRandom, + nonempty-containers, + QuickCheck, + quickcheck-classes, + text, + }: + mkDerivation { + pname = "roc-id"; + version = "0.3.0.0"; + sha256 = "1c570kr3yv9b8j4ly76dxiwx8xs6cg1230dscazmwbjr8vv13046"; + setupHaskellDepends = [ + base + cabal-doctest + ]; + libraryHaskellDepends = [ + base + MonadRandom + nonempty-containers + text + ]; + testHaskellDepends = [ + base + doctest + hspec + MonadRandom + nonempty-containers + QuickCheck + quickcheck-classes + text + ]; + description = "Implementation of the ROC (Taiwan) Uniform ID Number format"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + rock = callPackage ( { mkDerivation, @@ -583181,8 +586097,8 @@ self: { }: mkDerivation { pname = "rounded-hw"; - version = "0.4.0.1"; - sha256 = "0nms0bhjmn5nwhfw0y0iwghhcgzqvgl40p9d41isg63gkvrrf6w1"; + version = "0.4.0.2"; + sha256 = "0bjrk39h8b28229vg0wf1323y6mj4yjmflms1glcmjvb4sh66g7r"; setupHaskellDepends = [ base Cabal @@ -583219,7 +586135,6 @@ self: { ]; description = "Directed rounding for built-in floating types"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; } ) { }; @@ -590323,7 +593238,7 @@ self: { } ) { inherit (pkgs) z3; }; - sbv_13_1 = callPackage ( + sbv_13_3 = callPackage ( { mkDerivation, array, @@ -590363,8 +593278,8 @@ self: { }: mkDerivation { pname = "sbv"; - version = "13.1"; - sha256 = "0f8ylqalxm4nlcdhw77ild18a9hamkvz9m1jz64vhx8xgln4n8ag"; + version = "13.3"; + sha256 = "1aij3wsn25gyn0aicwxm2r1hbqgcwkja98i381mk68a59fkzyjzf"; enableSeparateDataOutput = true; libraryHaskellDepends = [ array @@ -593440,14 +596355,13 @@ self: { scotty, text, transformers, + unliftio, wai, }: mkDerivation { pname = "scotty-resource"; - version = "0.2.0.2"; - sha256 = "1lhaajsx34hlci76wjvab7a1sjd42silxsvf94ncf0pc0rmjqg1n"; - revision = "1"; - editedCabalFile = "11nwgmfc25bifdfwjs6jpjdrm080hdxqmn4vl5w61zza4972ykmp"; + version = "0.4.0.0"; + sha256 = "0pvj4spwn2rrnr1zxd5ff1yp1ja3zaxvfvhrlwm9fgvmip5shaqz"; libraryHaskellDepends = [ base containers @@ -593455,12 +596369,11 @@ self: { scotty text transformers + unliftio wai ]; - description = "[Deprecated] A Better way of modeling web resources"; - license = lib.licenses.asl20; - hydraPlatforms = lib.platforms.none; - broken = true; + description = "A Better way of modeling web resources"; + license = lib.licensesSpdx."Apache-2.0"; } ) { }; @@ -602471,8 +605384,8 @@ self: { }: mkDerivation { pname = "servant-hmac-auth"; - version = "0.1.8"; - sha256 = "1rlzlc85ixx0lksn81gh6qzrzqv0qazmwp5a89ijf47wrpdqs2hb"; + version = "0.1.9"; + sha256 = "0f8yfk2393jy83jp33kr3zmxcw5rwlagjzq5bl282d3pxmw30prq"; libraryHaskellDepends = [ base base64-bytestring @@ -604058,8 +606971,8 @@ self: { }: mkDerivation { pname = "servant-prometheus"; - version = "1.2.0"; - sha256 = "1jgbmrf1g85zsvy446b5ckwr1q3qm8gigybbf8vvd26wa3fxbbjp"; + version = "1.3.0"; + sha256 = "02bp5mfgchb4lix5h3l9c1mnb1g89dcrrh5ilgmyx2yj0rkyglfg"; libraryHaskellDepends = [ base clock @@ -604078,6 +606991,7 @@ self: { hspec hspec-expectations-pretty-diff http-client + http-types prometheus-client servant servant-client @@ -604097,8 +607011,6 @@ self: { ]; description = "Helpers for using prometheus with servant"; license = lib.licensesSpdx."BSD-3-Clause"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -635260,14 +638172,11 @@ self: { tasty, tasty-quickcheck, transformers, - vector, }: mkDerivation { pname = "stable-heap"; - version = "0.2.1.0"; - sha256 = "0053h9yn303h4b98div1lw21mxf0mizc6w268pvzi6hhvhr84hv3"; - revision = "2"; - editedCabalFile = "0ph54yx7ja2yg5jm0x0b6jrj83xbpg96cq6m577xab33gmwi0961"; + version = "0.3.0.0"; + sha256 = "1bk5x0amhck6yrxzczr2gbrb1f0bl0c2ycb6167a5qja6d3z0xhg"; libraryHaskellDepends = [ base ]; testHaskellDepends = [ base @@ -635283,10 +638192,9 @@ self: { heaps mwc-random pqueue - vector ]; description = "Purely functional stable heaps (fair priority queues)"; - license = lib.licenses.mit; + license = lib.licensesSpdx."MIT"; hydraPlatforms = lib.platforms.none; broken = true; } @@ -635586,6 +638494,8 @@ self: { pname = "stack"; version = "3.7.1"; sha256 = "03n8191slbq9zs9h437qda1w24nnf73p7x48x8lqp8sbcn6plaj1"; + revision = "1"; + editedCabalFile = "1rfqqgmxgp7xbsqzln4nz2ywcdmdwh66mryzrh7nnd4iym44556s"; configureFlags = [ "-fdisable-git-info" "-fhide-dependency-versions" @@ -635963,6 +638873,43 @@ self: { } ) { }; + stack-clean-old_0_5_2 = callPackage ( + { + mkDerivation, + base, + directory, + extra, + filemanip, + filepath, + safe, + simple-cmd, + simple-cmd-args, + simple-prompt, + }: + mkDerivation { + pname = "stack-clean-old"; + version = "0.5.2"; + sha256 = "08sk5bgvy4npmshplsz63p8d9l6nw3bkpf5kwwp9mc3hmgq0d5ww"; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + base + directory + extra + filemanip + filepath + safe + simple-cmd + simple-cmd-args + simple-prompt + ]; + description = "Clean away old stack build artifacts"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + mainProgram = "stack-clean-old"; + } + ) { }; + stack-fix = callPackage ( { mkDerivation, @@ -641179,6 +644126,8 @@ self: { pname = "stm-stats"; version = "0.2.0.0"; sha256 = "0i8ky2l8lvh7nymxglvbifp0ylbyjw20p75avzb51zpzx6qkjkqa"; + revision = "1"; + editedCabalFile = "0b4y4wjx5ixn7798hlsdjqxc48drllhx0lrfp0hmpas4sjrw9d30"; libraryHaskellDepends = [ base containers @@ -651155,6 +654104,8 @@ self: { ]; description = "Strict MVars and TVars with invariant checking for IO and IOSim"; license = lib.licensesSpdx."Apache-2.0"; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -652351,8 +655302,8 @@ self: { }: mkDerivation { pname = "string-variants"; - version = "0.3.1.1"; - sha256 = "11fym4b4qzyylmpgfbdw8v9mcpyya0zmzp2nsyn33a53ljig39g8"; + version = "0.3.1.3"; + sha256 = "1dfwm89fiz1zls3cr1wxh78csvw7q04cbzixiyj6szb21jzvr6a1"; libraryHaskellDepends = [ aeson base @@ -655155,6 +658106,133 @@ self: { } ) { }; + substrate-protocol = callPackage ( + { + mkDerivation, + aeson, + async, + base, + bytestring, + containers, + directory, + filepath, + network, + stm, + streaming, + text, + time, + websockets, + }: + mkDerivation { + pname = "substrate-protocol"; + version = "0.1.0.0"; + sha256 = "142rvx9ndkjnha6spf0k11pp37paih9qkd18l2969kyf2vrryzgl"; + libraryHaskellDepends = [ + aeson + async + base + bytestring + containers + directory + filepath + network + stm + streaming + text + time + websockets + ]; + description = "Plexus protocol types and client for Substrate"; + license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + broken = true; + } + ) { }; + + substrate-synapse = callPackage ( + { + mkDerivation, + aeson, + async, + base, + bytestring, + containers, + directory, + filepath, + hashable, + hspec, + mtl, + mustache, + network, + optparse-applicative, + prettyprinter, + process, + scientific, + stm, + streaming, + substrate-protocol, + text, + transformers, + unordered-containers, + vector, + websockets, + yaml, + }: + mkDerivation { + pname = "substrate-synapse"; + version = "0.1.0.0"; + sha256 = "08ixqv76hclaisa366xz09075zy8djylmc1cr1bdxi6d6jp04008"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson + async + base + bytestring + containers + directory + filepath + hashable + mtl + mustache + network + prettyprinter + scientific + stm + streaming + substrate-protocol + text + transformers + unordered-containers + vector + websockets + yaml + ]; + executableHaskellDepends = [ + aeson + base + bytestring + containers + directory + mtl + optparse-applicative + prettyprinter + substrate-protocol + text + ]; + testHaskellDepends = [ + base + hspec + process + text + ]; + description = "Algebraic CLI for Plexus - coalgebraic schema navigation"; + license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + mainProgram = "synapse"; + } + ) { }; + substring-parser = callPackage ( { mkDerivation, @@ -658639,8 +661717,8 @@ self: { }: mkDerivation { pname = "sweet-egison"; - version = "0.1.1.3"; - sha256 = "0b2rvfgj7l10plgri5ia3l07ip71c9c3259k78z140i57pfjlfh7"; + version = "0.1.2.1"; + sha256 = "06g1fyhdmp609iy3j2h948hk1zw552p93lpqkwnfazjv04g2xpzw"; libraryHaskellDepends = [ backtracking base @@ -658665,8 +661743,6 @@ self: { ]; description = "Shallow embedding implementation of non-linear pattern matching"; license = lib.licenses.bsd3; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -659754,22 +662830,30 @@ self: { mtl, persistent, persistent-postgresql, + postgres-options, + postgresql-simple, + random, sydtest, sydtest-discover, sydtest-persistent, + text, tmp-postgres, }: mkDerivation { pname = "sydtest-persistent-postgresql"; - version = "0.2.0.3"; - sha256 = "1srzasbr9f5gqfzsa4qjd65pk3jlpk0gslphynzzbp4kf6gmsvkj"; + version = "0.3.0.0"; + sha256 = "0f3igbwa1sfv8xv2zqckbq9i36k0iw7q9q86bl2pi5pms4dnw3ia"; libraryHaskellDepends = [ base monad-logger mtl persistent-postgresql + postgres-options + postgresql-simple + random sydtest sydtest-persistent + text tmp-postgres ]; testHaskellDepends = [ @@ -660187,6 +663271,62 @@ self: { } ) { }; + sydtest-webdriver-yesod_0_0_1_0 = callPackage ( + { + mkDerivation, + base, + bytestring, + http-client, + http-types, + mtl, + network-uri, + path, + path-io, + sydtest, + sydtest-discover, + sydtest-wai, + sydtest-webdriver, + sydtest-yesod, + text, + wai, + webdriver, + yesod, + }: + mkDerivation { + pname = "sydtest-webdriver-yesod"; + version = "0.0.1.0"; + sha256 = "0qg02xk1mjsav8q07h9yr3y584sw3lslsbz36gbvc4627d1carg7"; + libraryHaskellDepends = [ + base + bytestring + http-client + http-types + mtl + network-uri + sydtest + sydtest-wai + sydtest-webdriver + sydtest-yesod + text + wai + webdriver + yesod + ]; + testHaskellDepends = [ + base + path + path-io + sydtest + sydtest-webdriver + yesod + ]; + testToolDepends = [ sydtest-discover ]; + description = "A webdriver+yesod companion library for sydtest"; + license = "unknown"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + sydtest-yesod = callPackage ( { mkDerivation, @@ -660273,6 +663413,95 @@ self: { } ) { }; + sydtest-yesod_0_3_1_0 = callPackage ( + { + mkDerivation, + base, + binary, + bytestring, + case-insensitive, + conduit, + containers, + cookie, + exceptions, + http-client, + http-client-tls, + http-types, + monad-logger, + mtl, + network, + network-uri, + path, + path-io, + persistent, + persistent-sqlite, + QuickCheck, + sydtest, + sydtest-discover, + sydtest-persistent-sqlite, + sydtest-wai, + text, + time, + wai, + xml-conduit, + yesod, + yesod-core, + yesod-test, + }: + mkDerivation { + pname = "sydtest-yesod"; + version = "0.3.1.0"; + sha256 = "0by106vjxgliqhq7h6858iqhqhlkrbg6ww0hdxwn14j22alsh0q9"; + libraryHaskellDepends = [ + base + binary + bytestring + case-insensitive + containers + cookie + exceptions + http-client + http-client-tls + http-types + mtl + network + network-uri + sydtest + sydtest-wai + text + time + wai + xml-conduit + yesod-core + yesod-test + ]; + testHaskellDepends = [ + base + bytestring + conduit + cookie + http-client + monad-logger + mtl + path + path-io + persistent + persistent-sqlite + QuickCheck + sydtest + sydtest-persistent-sqlite + sydtest-wai + text + yesod + yesod-core + ]; + testToolDepends = [ sydtest-discover ]; + description = "A yesod companion library for sydtest"; + license = "unknown"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + syfco = callPackage ( { mkDerivation, @@ -663853,8 +667082,8 @@ self: { }: mkDerivation { pname = "systranything"; - version = "0.1.3.0"; - sha256 = "17y8zwbrxmbfr8g7gwbsvhxrwf330l6n2xqm6247ia8k5ap4drfy"; + version = "0.1.4.0"; + sha256 = "0jmdiqp7cmysp20j4vf38i5kic5kfcqm89bxgpcch58sj1xkwfyf"; isLibrary = true; isExecutable = true; enableSeparateDataOutput = true; @@ -664811,6 +668040,28 @@ self: { } ) { }; + tagged_0_8_10 = callPackage ( + { + mkDerivation, + base, + deepseq, + template-haskell, + }: + mkDerivation { + pname = "tagged"; + version = "0.8.10"; + sha256 = "0pbcyl88qgcyy1shibr459f6jjqz1xx84n5injii9wyanhg7kvqp"; + libraryHaskellDepends = [ + base + deepseq + template-haskell + ]; + description = "Haskell 98 phantom types to avoid unsafely passing dummy arguments"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + } + ) { }; + tagged-binary = callPackage ( { mkDerivation, @@ -668461,6 +671712,31 @@ self: { } ) { }; + tasty-bench_0_5 = callPackage ( + { + mkDerivation, + base, + containers, + deepseq, + tasty, + }: + mkDerivation { + pname = "tasty-bench"; + version = "0.5"; + sha256 = "080f6nncwr4v0mwpzg3xrkv1n6pvbjxwdsvf2g1lsjip0pbdgmm3"; + libraryHaskellDepends = [ + base + containers + deepseq + tasty + ]; + benchmarkHaskellDepends = [ base ]; + description = "Featherlight benchmark framework"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + tasty-bench-fit = callPackage ( { mkDerivation, @@ -668478,8 +671754,8 @@ self: { pname = "tasty-bench-fit"; version = "0.1.1"; sha256 = "1x1f2r3p5jsl4f8ss21mdszwl5mi7xfshql8578ff2q8nf9ah9iv"; - revision = "1"; - editedCabalFile = "1gf44qval0kd1sfw4awhqf8hlks8j8x062ggbgv6wpbc4djhhc5a"; + revision = "2"; + editedCabalFile = "1lhm4q829pqxa3fa0cwpkj9mdhysrhshhfiydp1zj2d1dppbcb3n"; libraryHaskellDepends = [ base containers @@ -668808,8 +672084,8 @@ self: { }: mkDerivation { pname = "tasty-flaky"; - version = "0.1.2.0"; - sha256 = "1pxjqmsflrgmxhjms8pmyx2jf4bsmrnaxd08q1zxym0by2yafwgd"; + version = "0.1.3.0"; + sha256 = "1jwi5f44h02dd0cc3mavk6cdj1z2zasn0s3dqrg5d0gmbi0pjp93"; libraryHaskellDepends = [ base retry @@ -668930,6 +672206,8 @@ self: { pname = "tasty-golden-extra"; version = "0.1.0.1"; sha256 = "1qfrskhw9qh6w594r9k6x1znz4xr2lma9v16zkdmmdii3wx9ipax"; + revision = "1"; + editedCabalFile = "1qpy9b5kkskwfzjfdvlc21jmi28d8a7fgyd15fd4lisqrd41p2g1"; libraryHaskellDepends = [ aeson aeson-diff @@ -670096,8 +673374,8 @@ self: { }: mkDerivation { pname = "tasty-sugar"; - version = "2.2.3.1"; - sha256 = "1zh2h6n75rsqr6xxdkvsbzb25gmg9zr2f3db3wg8s57zaz9sd2dj"; + version = "2.2.3.2"; + sha256 = "02vl0mwmpg9myz0nnaq4kwl73xla446n0q5zigllaqfgv8razw0n"; libraryHaskellDepends = [ base containers @@ -672406,19 +675684,21 @@ self: { } ) { }; - template-haskell_2_23_0_0 = callPackage ( + template-haskell_2_24_0_0 = callPackage ( { mkDerivation, base, ghc-boot-th, + ghc-internal, }: mkDerivation { pname = "template-haskell"; - version = "2.23.0.0"; - sha256 = "1nflc99kixhgj8h05lvlin8dpxbxngs8j436qxgqaqzx3ijncbdf"; + version = "2.24.0.0"; + sha256 = "18c1mrhi8vcpqbb97fp6n2jzwxb8v1bklrs290mw4h3kvm7drn8q"; libraryHaskellDepends = [ base ghc-boot-th + ghc-internal ]; description = "Support library for Template Haskell"; license = lib.licenses.bsd3; @@ -674406,8 +677686,8 @@ self: { { mkDerivation, base }: mkDerivation { pname = "termbox-bindings-c"; - version = "0.1.0.2"; - sha256 = "1n1z66xwnvrmvb3qd5wx8rwf2v54zvy3bzqrqcwp43jjii4mjqkh"; + version = "0.1.0.3"; + sha256 = "0da1jq7x2bp92k6ffn4v1mv9c13lm73rj0sjpqkjcrpgygajrqxm"; libraryHaskellDepends = [ base ]; description = "termbox bindings"; license = lib.licensesSpdx."BSD-3-Clause"; @@ -676762,7 +680042,7 @@ self: { } ) { }; - texmath_0_13_0_1 = callPackage ( + texmath_0_13_0_2 = callPackage ( { mkDerivation, base, @@ -676785,8 +680065,8 @@ self: { }: mkDerivation { pname = "texmath"; - version = "0.13.0.1"; - sha256 = "1m08i83z1llm3swyjxk56pnyaw2gma4qyq3pmxr3xqzlr6x286x3"; + version = "0.13.0.2"; + sha256 = "1iwb67rnyhq8w4vm0500273iy2pks0h130k65i6x3zbsg15hdlvs"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -676895,6 +680175,8 @@ self: { pname = "text"; version = "2.1.3"; sha256 = "17gqrvcw7hsm64560dypvmvpqfn1zwb772fllwbn9b4x7vj1xfxi"; + revision = "1"; + editedCabalFile = "0lw01f0vgppdxxnkmqv4wilfb47abv590rpsqmca8zbi9wkb352h"; libraryHaskellDepends = [ array base @@ -679899,24 +683181,30 @@ self: { { mkDerivation, base, + containers, + doctest, hspec, template-haskell, + text, }: mkDerivation { pname = "th-cas"; - version = "0.1.0"; - sha256 = "0gv5p5359jmpd9zxsrc8zw2hkpjj9y4fzd61c0bs9ax8nw6v9akc"; + version = "0.2.0"; + sha256 = "0gw9abgnnr6v004fa2ihgm6khw2sax9i6wsk4mrm2l0zf4h345ln"; libraryHaskellDepends = [ base + containers template-haskell + text ]; testHaskellDepends = [ base + doctest hspec template-haskell ]; description = "Compile-time CAS(Computer Algebra System)"; - license = lib.licenses.mit; + license = lib.licensesSpdx."MIT"; } ) { }; @@ -682273,9 +685561,7 @@ self: { ]; description = "Simple, IO-based library for Erlang-style thread supervision"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; mainProgram = "threads-supervisor-example"; - broken = true; } ) { }; @@ -684463,6 +687749,27 @@ self: { } ) { }; + time-domain_1_6 = callPackage ( + { + mkDerivation, + base, + time, + }: + mkDerivation { + pname = "time-domain"; + version = "1.6"; + sha256 = "1ird6llqxa0jsr17q7c4ljlpix42j74d2alxf5nq33xqfjvl14rr"; + libraryHaskellDepends = [ + base + time + ]; + description = "A library for time domains and durations"; + license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + maintainers = [ lib.maintainers.turion ]; + } + ) { }; + time-extras = callPackage ( { mkDerivation, @@ -684796,6 +688103,28 @@ self: { } ) { }; + time-manager_0_3_0 = callPackage ( + { + mkDerivation, + base, + containers, + stm, + }: + mkDerivation { + pname = "time-manager"; + version = "0.3.0"; + sha256 = "0bk2wcdg26s60k4aq7ahy46yr81l19yjzd33y1vcjrdr9clazvwh"; + libraryHaskellDepends = [ + base + containers + stm + ]; + description = "Scalable timer"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + time-out = callPackage ( { mkDerivation, @@ -689602,10 +692931,8 @@ self: { }: mkDerivation { pname = "toml-parser"; - version = "2.0.1.2"; - sha256 = "0fm3anvslylamazr4jgm3y3v3sjh0jv5ydf565cfm1ma9kw4kbhv"; - revision = "1"; - editedCabalFile = "0p6h6yh2x93bgspan1s5hkwg10s834m5gkx1bha9y3ljppffpg2c"; + version = "2.0.2.0"; + sha256 = "1a71imxdzhkjbbsj39jmj1w9hbp3m0wphd1j2x2a5gm9xvjmx2wy"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -689633,7 +692960,7 @@ self: { hspec-discover markdown-unlit ]; - description = "TOML 1.0.0 parser"; + description = "TOML 1.1.0 parser"; license = lib.licensesSpdx."ISC"; } ) { }; @@ -692198,7 +695525,10 @@ self: { mkDerivation, base, brick, + directory, + filepath, fsnotify, + Glob, microlens-platform, mtl, optparse-generic, @@ -692211,14 +695541,17 @@ self: { }: mkDerivation { pname = "trackit"; - version = "0.7.3"; - sha256 = "0hlndixyvscmf2161yv2f4xl7qy2vgrikik3dj2nbq4vvi6v940v"; + version = "0.8"; + sha256 = "02d47f599w0mksyr16i8lxydg3h9dni5dx1lh9y5vw7mfqklz5ff"; isLibrary = false; isExecutable = true; executableHaskellDepends = [ base brick + directory + filepath fsnotify + Glob microlens-platform mtl optparse-generic @@ -701688,6 +705021,8 @@ self: { doHaddock = false; description = "A framework for strongly typed protocols"; license = lib.licensesSpdx."Apache-2.0"; + hydraPlatforms = lib.platforms.none; + broken = true; } ) { }; @@ -702612,8 +705947,8 @@ self: { }: mkDerivation { pname = "typesafe-precure"; - version = "0.12.1.1"; - sha256 = "0gba5l5l4cixyfpxkiy4hyz4zbrq7rxf2cfsj1123ycsa7j4j0ph"; + version = "0.12.2.1"; + sha256 = "1fa72qa3r2cmhqw939mkpl7yvkqalqx4wbz6zic0pfvxpf26bdbs"; libraryHaskellDepends = [ aeson aeson-pretty @@ -703087,6 +706422,80 @@ self: { } ) { }; + typst_0_8_1 = callPackage ( + { + mkDerivation, + aeson, + array, + base, + bytestring, + cassava, + containers, + directory, + filepath, + mtl, + ordered-containers, + parsec, + pretty, + pretty-show, + regex-tdfa, + scientific, + tasty, + tasty-golden, + text, + time, + toml-parser, + typst-symbols, + vector, + xml-conduit, + yaml, + }: + mkDerivation { + pname = "typst"; + version = "0.8.1"; + sha256 = "1234gmz8f4daj06dgfn7h3jrzbvv9dfxbpqsgqlhzm8zna1p7jgr"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson + array + base + bytestring + cassava + containers + directory + filepath + mtl + ordered-containers + parsec + pretty + regex-tdfa + scientific + text + time + toml-parser + typst-symbols + vector + xml-conduit + yaml + ]; + testHaskellDepends = [ + base + bytestring + directory + filepath + pretty-show + tasty + tasty-golden + text + time + ]; + description = "Parsing and evaluating typst syntax"; + license = lib.licensesSpdx."BSD-3-Clause"; + hydraPlatforms = lib.platforms.none; + } + ) { }; + typst-symbols = callPackage ( { mkDerivation, @@ -709483,6 +712892,67 @@ self: { } ) { }; + unordered-containers_0_2_21 = callPackage ( + { + mkDerivation, + base, + bytestring, + ChasingBottoms, + containers, + deepseq, + hashable, + hashmap, + HUnit, + nothunks, + QuickCheck, + random, + tasty, + tasty-bench, + tasty-hunit, + tasty-quickcheck, + template-haskell, + }: + mkDerivation { + pname = "unordered-containers"; + version = "0.2.21"; + sha256 = "1h7rnxdnm2adrgalga1xx32yx7i3blg7s9ak06b62vjl5d9d2aiv"; + revision = "2"; + editedCabalFile = "01anv9bqh3jw56cs9w5yyv93fp6c38fpf6l5rpscblvy6yrizpn5"; + libraryHaskellDepends = [ + base + deepseq + hashable + template-haskell + ]; + testHaskellDepends = [ + base + ChasingBottoms + containers + hashable + HUnit + nothunks + QuickCheck + random + tasty + tasty-hunit + tasty-quickcheck + ]; + benchmarkHaskellDepends = [ + base + bytestring + containers + deepseq + hashable + hashmap + random + tasty-bench + ]; + description = "Efficient hashing-based container types"; + license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; + } + ) { }; + unordered-containers-rematch = callPackage ( { mkDerivation, @@ -711167,8 +714637,6 @@ self: { ]; description = "Parsing & Quasiquoting for RFC 6570 URI Templates"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -714283,6 +717751,8 @@ self: { pname = "validationt"; version = "0.3.0"; sha256 = "14kvkiawsychqq55nm0afpfwxjvxh9izbr35zgp3wg2j0zqzkhnz"; + revision = "1"; + editedCabalFile = "0f3bx0x8w58s8k6kwa3k3373f3fzp8lcaklid7lhc8gq9a67p8s2"; libraryHaskellDepends = [ aeson base @@ -715196,10 +718666,8 @@ self: { }: mkDerivation { pname = "variety"; - version = "0.2.1.0"; - sha256 = "0arz9ggs70xlmzbkk2i8gw90brgxcskxw00sp70nxwi2iggwdqi4"; - revision = "1"; - editedCabalFile = "1igrzy8wgg50xja0p0zh6jyzgrww7y9vxvqyl2dngw68z2bfnyh2"; + version = "0.3.0.0"; + sha256 = "1qzl0fvs5xb9gpffk459qgdq9c0g7qhmx2vnpbqq806pnv6192pn"; libraryHaskellDepends = [ base bytestring @@ -715328,10 +718796,8 @@ self: { }: mkDerivation { pname = "vault"; - version = "0.3.1.5"; - sha256 = "181ksk1yixjg0jiggw5jvm8am8m8c7lim4xaixf8qnaqvxm6namc"; - revision = "10"; - editedCabalFile = "03nw9b08pqhk9ck7lqcixsnh3sxz7zz3jvb3xxfmc2kksrfc4b11"; + version = "0.3.1.6"; + sha256 = "0rlps2qn3y7lrz2ci0927127q6n2rp83j41wq29h24lmpxlv391p"; libraryHaskellDepends = [ base containers @@ -715339,7 +718805,7 @@ self: { unordered-containers ]; description = "a persistent store for values of arbitrary types"; - license = lib.licenses.bsd3; + license = lib.licensesSpdx."BSD-3-Clause"; } ) { }; @@ -718202,7 +721668,6 @@ self: { doHaddock = false; description = "Functor-parametric containers"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -719783,6 +723248,48 @@ self: { } ) { }; + visualize-type-inference = callPackage ( + { + mkDerivation, + alex, + ansi-terminal, + array, + base, + containers, + happy, + mtl, + optparse-applicative, + prettyprinter, + prettyprinter-ansi-terminal, + string-qq, + }: + mkDerivation { + pname = "visualize-type-inference"; + version = "0.0.1.0"; + sha256 = "1p9srrpcpk5hvl6zgf6wsdlzr73gz3d0ychaqpkgz2bljj5gmffh"; + isLibrary = false; + isExecutable = true; + executableHaskellDepends = [ + ansi-terminal + array + base + containers + mtl + optparse-applicative + prettyprinter + prettyprinter-ansi-terminal + string-qq + ]; + executableToolDepends = [ + alex + happy + ]; + description = "Simulate simple constraint-based type inference"; + license = lib.licenses.bsd3; + mainProgram = "visualize-type-inference"; + } + ) { }; + vitrea = callPackage ( { mkDerivation, @@ -720255,8 +723762,8 @@ self: { { mkDerivation, base }: mkDerivation { pname = "void"; - version = "0.7.3"; - sha256 = "05vk3x1r9a2pqnzfji475m5gdih2im1h7rbi2sc67p1pvj6pbbsk"; + version = "0.7.4"; + sha256 = "1ygx4kvffsciaj3jxc99ycbg94h708vrybz6agb4zczdc44pkzv1"; libraryHaskellDepends = [ base ]; description = "A Haskell 98 logically uninhabited data type"; license = lib.licenses.bsd3; @@ -722591,8 +726098,8 @@ self: { }: mkDerivation { pname = "wai-handler-hal"; - version = "0.4.0.2"; - sha256 = "1bf67bl7cqavn0mqnmsh6wfn62iqpzrs7mqgzn8f3lrbkxw5rbny"; + version = "0.5.0.0"; + sha256 = "1v4x1ma31lvhmrwpqlig3xicdyk6q2rpasgc0ynfsl57n9wp5yvd"; libraryHaskellDepends = [ base base64-bytestring @@ -726184,8 +729691,6 @@ self: { ]; description = "A request rate limiting middleware using token buckets"; license = lib.licensesSpdx."Apache-2.0"; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; @@ -726850,7 +730355,7 @@ self: { } ) { }; - warp_3_4_10 = callPackage ( + warp_3_4_11 = callPackage ( { mkDerivation, array, @@ -726889,10 +730394,10 @@ self: { }: mkDerivation { pname = "warp"; - version = "3.4.10"; - sha256 = "1w08v8wgagfmvc2aqy0w5cs6778z7d39xf9zkcc3cyr2la6bz1dj"; + version = "3.4.11"; + sha256 = "0cvw9syvvg492ydw1z28rcjhsinfxb53q47rzk6pqg5098rv0955"; revision = "1"; - editedCabalFile = "0328b9azvwffdgxim117p9gnjpkdxzd5sda0dci33g15aksgiixw"; + editedCabalFile = "04zby3f2d5zg8nvwxj52kqnsq6755d8a3j42lkqrr46i4svigslw"; libraryHaskellDepends = [ array async @@ -726970,6 +730475,7 @@ self: { http-types network recv + stm streaming-commons text time-manager @@ -727292,6 +730798,175 @@ self: { } ) { }; + warpZ = callPackage ( + { + mkDerivation, + array, + async, + auto-update, + base, + bsb-http-chunked, + bytestring, + case-insensitive, + containers, + criterion, + crypton-x509, + directory, + ghc-prim, + hashable, + hspec, + hspec-discover, + http-client, + http-date, + http-types, + http2, + iproute, + lens, + network, + process, + QuickCheck, + recv, + simple-sendfile, + stm, + streaming-commons, + text, + time-manager, + unix, + vault, + wai, + word8, + }: + mkDerivation { + pname = "warpZ"; + version = "3.4.10"; + sha256 = "16kr7sizg12hpl4x52m4qnqjad9a67ln95wrw8l4n00wbqm77f64"; + libraryHaskellDepends = [ + array + async + auto-update + base + bsb-http-chunked + bytestring + case-insensitive + containers + crypton-x509 + ghc-prim + hashable + http-date + http-types + http2 + iproute + lens + network + recv + simple-sendfile + stm + streaming-commons + text + time-manager + unix + vault + wai + word8 + ]; + testHaskellDepends = [ + array + async + auto-update + base + bsb-http-chunked + bytestring + case-insensitive + containers + crypton-x509 + directory + ghc-prim + hashable + hspec + http-client + http-date + http-types + http2 + iproute + network + process + QuickCheck + recv + simple-sendfile + stm + streaming-commons + text + time-manager + unix + vault + wai + word8 + ]; + testToolDepends = [ hspec-discover ]; + benchmarkHaskellDepends = [ + array + auto-update + base + bytestring + case-insensitive + containers + criterion + crypton-x509 + ghc-prim + hashable + http-date + http-types + network + recv + streaming-commons + text + time-manager + unix + vault + wai + word8 + ]; + description = "A fast, light-weight web server for WAI applications"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + broken = true; + } + ) { }; + + warpZ-tls = callPackage ( + { + mkDerivation, + base, + bytestring, + network, + recv, + streaming-commons, + tls, + tls-session-manager, + wai, + warpZ, + }: + mkDerivation { + pname = "warpZ-tls"; + version = "3.4.13"; + sha256 = "0g359zx72lykysa7v6ma8fcrdbaq44ifcscw8kcwi23nki30763g"; + libraryHaskellDepends = [ + base + bytestring + network + recv + streaming-commons + tls + tls-session-manager + wai + warpZ + ]; + description = "HTTP over TLS support for Warp via the TLS package"; + license = lib.licenses.mit; + hydraPlatforms = lib.platforms.none; + } + ) { }; + warped = callPackage ( { mkDerivation, @@ -727531,8 +731206,8 @@ self: { }: mkDerivation { pname = "waterfall-cad"; - version = "0.6.0.0"; - sha256 = "05nx65f1wca9swn8jpq60mwwivbbz9wc44rn0bxcaszw4maqzv3h"; + version = "0.6.1.0"; + sha256 = "1hhybkznqrp4ziab2ww6ai4xmr8p3h75s1kkngk1a81dpkn76a31"; libraryHaskellDepends = [ base filepath @@ -727566,8 +731241,8 @@ self: { }: mkDerivation { pname = "waterfall-cad-examples"; - version = "0.6.0.0"; - sha256 = "0i5yrwnkcp60czv0mmxkcxh1jl7q21q3n0xq4y4dr8bvh4wfbgql"; + version = "0.6.1.0"; + sha256 = "06hqfgxn6x9k4g389zvpb5ll58j0lshn25qqz4n9r36pqr7yqa7a"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -727620,8 +731295,8 @@ self: { }: mkDerivation { pname = "waterfall-cad-svg"; - version = "0.6.0.0"; - sha256 = "1mfxcc62m88saf7n56f8chwfy1n2y1r0y68cfg1jkn7n97yrlxzm"; + version = "0.6.1.0"; + sha256 = "1i8jna60yf4vzipgfxl5zpgb4ig54cym2v3p966gixqw24kc57qb"; libraryHaskellDepends = [ attoparsec base @@ -731359,6 +735034,80 @@ self: { } ) { }; + webgpu-dawn = callPackage ( + { + mkDerivation, + aeson, + base, + base64-bytestring, + binary, + bytestring, + Cabal, + clock, + containers, + directory, + filepath, + hspec, + http-conduit, + mtl, + process, + stm, + temporary, + text, + transformers, + unordered-containers, + vector, + zip-archive, + }: + mkDerivation { + pname = "webgpu-dawn"; + version = "0.1.1.0"; + sha256 = "176mgzpvwi70xly21w9mg3xrv5yz960jk0zd4z260yfynifgsgxk"; + isLibrary = true; + isExecutable = true; + setupHaskellDepends = [ + base + bytestring + Cabal + directory + filepath + http-conduit + process + temporary + zip-archive + ]; + libraryHaskellDepends = [ + aeson + base + base64-bytestring + binary + bytestring + containers + filepath + mtl + stm + text + transformers + unordered-containers + vector + ]; + executableHaskellDepends = [ + base + bytestring + clock + vector + ]; + testHaskellDepends = [ + base + hspec + ]; + description = "Haskell bindings to WebGPU Dawn for GPU computing and graphics"; + license = lib.licensesSpdx."MIT"; + hydraPlatforms = lib.platforms.none; + broken = true; + } + ) { }; + webidl = callPackage ( { mkDerivation, @@ -733312,8 +737061,8 @@ self: { pname = "wherefrom-compat"; version = "0.1.1.1"; sha256 = "125kkv55c38p00hcga7q19jk9p4p9nabal64zfkq79ihjwpf5qy1"; - revision = "1"; - editedCabalFile = "13dw2gim9cj9njng0k0rgl4cvas2digjr74h2iavkzjimzz0iijk"; + revision = "4"; + editedCabalFile = "1yagqxw475jkim3cpqwcaibs8k9cgw2q1xc4qk65kwrhf83qnb09"; libraryHaskellDepends = [ base ]; testHaskellDepends = [ base @@ -733337,8 +737086,8 @@ self: { pname = "wherefrom-compat"; version = "0.2.0.0"; sha256 = "0sy2kyp0sz0vkirlxvyc1s5szhx1f6a8zn0sysl2vbgk0yis3b0d"; - revision = "1"; - editedCabalFile = "1nz7qnhlcg2z8wm85ix1npj4aapdvdps77k1bbw6d5jk6i1rp18w"; + revision = "5"; + editedCabalFile = "1d3wjka3ybwq82zwfzsg46fksbgsv59xbsgdisshgqlgnkc6pwnd"; libraryHaskellDepends = [ base ghc-heap @@ -733374,7 +737123,6 @@ self: { ]; description = "Determine the full path to an executable"; license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.alexfmpe ]; } ) { }; @@ -735109,8 +738857,8 @@ self: { pname = "witherable"; version = "0.5"; sha256 = "1lccj7s6b2x3w1zq15fffwxwj9yqq0z0ra9k06y3rcb5wk0lqhs8"; - revision = "1"; - editedCabalFile = "1pl1m14hhz03rx5j4i4zdi9v0ph65s5rs6qpqdprjdyaxf4bbfl5"; + revision = "2"; + editedCabalFile = "0xb29mh29piqm0i21fz0mm24x06f5sy7yb1jih4pyaaxvwqh8q55"; libraryHaskellDepends = [ base base-orphans @@ -735681,8 +739429,8 @@ self: { }: mkDerivation { pname = "wled-json"; - version = "0.1.0.1"; - sha256 = "1riaw104i6y0jzfahz90a764a8rn15rldlkf94h9kpy747r0bxvf"; + version = "0.1.0.2"; + sha256 = "0ny0cfpxznq34afh5wap09fki9aqjksfvyf6fldph591ngamhmkf"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -739971,8 +743719,8 @@ self: { }: mkDerivation { pname = "xcffib"; - version = "1.11.2"; - sha256 = "0lg9x33ifkr166qkdq7w37dhngb6y1nd987sa6dg4pr3dkg9hrm9"; + version = "1.12.0"; + sha256 = "09fpdj1f5fvvaa1hci6wj7pzffqa8xrcdgvk3sxpsxqj8rpkp0bs"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -741586,8 +745334,8 @@ self: { }: mkDerivation { pname = "xml-conduit"; - version = "1.10.0.1"; - sha256 = "09nwn4yv2z8hv7shfpmv9avpxci21kk0dgbslgaymml0jny0la31"; + version = "1.10.1.0"; + sha256 = "0gzqpxafin6wxaa28axy64vh886na2mvsj8ln4kn635q6wwdm2hi"; setupHaskellDepends = [ base Cabal @@ -741843,6 +745591,8 @@ self: { pname = "xml-conduit-writer"; version = "0.1.1.6"; sha256 = "16zkfivpljkmn5qyyrx1q4wb2p4b9m8f61nl3l3qkngdqb9y9qgy"; + revision = "1"; + editedCabalFile = "10la09sqkh98idh9q1fdb6xj9d5mkr3qdd69qy4z0xqc2py9fxf9"; libraryHaskellDepends = [ base containers @@ -741985,8 +745735,8 @@ self: { }: mkDerivation { pname = "xml-hamlet"; - version = "0.5.0.2"; - sha256 = "109fck1626d74s00ssjffg837584wf7dxpswkil37wqqfy94mw2z"; + version = "0.5.0.3"; + sha256 = "1i8zin20lwyz102lw7q109h3lj40ijksi3288z3rwiqydrmwnh67"; libraryHaskellDepends = [ base containers @@ -744330,7 +748080,6 @@ self: { base, bytestring, criterion, - ghc-byteorder, QuickCheck, tasty, tasty-hunit, @@ -744338,19 +748087,15 @@ self: { }: mkDerivation { pname = "xor"; - version = "0.0.1.3"; - sha256 = "12hqm6imp3qvnnrkds77jsi0zx2dza1h9g88adnxiksv62fybymv"; - revision = "1"; - editedCabalFile = "0n0mdli5qypi9khk42lqqkn464w22vjwx0dg2dg6mvdq0r37qwab"; + version = "0.0.1.4"; + sha256 = "042j22n48v4b7lz3vr32l4hmnaxmdxcl7qi481y5qjr21rmqc9h5"; libraryHaskellDepends = [ base bytestring - ghc-byteorder ]; testHaskellDepends = [ base bytestring - ghc-byteorder QuickCheck tasty tasty-hunit @@ -744360,7 +748105,6 @@ self: { base bytestring criterion - ghc-byteorder ]; description = "Efficient XOR masking"; license = lib.licensesSpdx."GPL-2.0-or-later"; @@ -745533,8 +749277,8 @@ self: { }: mkDerivation { pname = "yaftee-conduit"; - version = "0.1.0.0"; - sha256 = "1rhq31ybi0gjqk8h6jplm1fkchdibm60axq0nqa3j6y8iiyndncr"; + version = "0.1.0.1"; + sha256 = "08rdncmhm75jba21qwh175fj38rsx2sz3svyl5d4q3f9s5lzh8n4"; libraryHaskellDepends = [ base ftcqueue @@ -745620,8 +749364,8 @@ self: { }: mkDerivation { pname = "yaftee-conduit-bytestring-ft"; - version = "0.1.0.0"; - sha256 = "0k2dzyc2zhlndh1drfl6vx5plkciyh1n77jc44zqxpzkfdvl11nf"; + version = "0.1.0.1"; + sha256 = "1q7l4gdlx79kxy5vsmy1r2v08kw0r3a4zwiwixbgvymkbs1fsmkl"; libraryHaskellDepends = [ base bytestring-ft @@ -745660,8 +749404,8 @@ self: { }: mkDerivation { pname = "yaftee-conduit-mono-traversable"; - version = "0.1.0.0"; - sha256 = "0q6kx82cpr4wp1b5hk8igqy15y30cg0xf1wwxnxjs67kn81c717q"; + version = "0.1.0.1"; + sha256 = "11rn7qg6k6jx94703h7bk1c5qrwvzggd8la51p73vnbkj43igqg4"; libraryHaskellDepends = [ base higher-order-open-union @@ -746758,6 +750502,7 @@ self: { ]; description = "A light-weight wrapper with utility functions around HsSyck"; license = lib.licenses.bsd3; + hydraPlatforms = lib.platforms.none; } ) { }; @@ -747380,8 +751125,8 @@ self: { }: mkDerivation { pname = "yamlscript"; - version = "0.2.7.0"; - sha256 = "1j5m98abj23rakhcq3v1gy4j58aq3z0mn5zvw531p26x6fsqgbkv"; + version = "0.2.8.0"; + sha256 = "172bkvr7b6j69d5yyvbiphy9r67hqwqdm4yq6hnxcja46k8zqhqd"; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -750937,8 +754682,8 @@ self: { }: mkDerivation { pname = "yesod-csp"; - version = "0.2.7.0"; - sha256 = "0862yma4yyxgwyvlh4c142l6fm2gjdh00p21vxzfkmf5d0bddjc1"; + version = "0.2.7.1"; + sha256 = "0m85kyh0nfn1c8cjrzanvikg1ihw5q15b8yic4b87chaw1za69dn"; libraryHaskellDepends = [ attoparsec base @@ -750967,8 +754712,6 @@ self: { ]; description = "Add CSP headers to Yesod apps"; license = lib.licenses.mit; - hydraPlatforms = lib.platforms.none; - broken = true; } ) { }; diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index 9578b0c3c8615..4b66ccb6314f4 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -49,7 +49,7 @@ let inherit (haskellLib) overrideCabal; mkDerivationImpl = pkgs.callPackage ./generic-builder.nix { - inherit stdenv; + inherit stdenv haskellLib; nodejs = buildPackages.nodejs-slim; inherit (self) buildHaskellPackages @@ -57,6 +57,10 @@ let ghcWithHoogle ghcWithPackages ; + iserv-proxy = { + build = buildHaskellPackages.iserv-proxy; + host = self.iserv-proxy; + }; inherit (self.buildHaskellPackages) jailbreak-cabal; hscolour = overrideCabal (drv: { isLibrary = false; diff --git a/pkgs/development/haskell-modules/non-hackage-packages.nix b/pkgs/development/haskell-modules/non-hackage-packages.nix index e0cd3a7ac2e9a..c976743b3b6bf 100644 --- a/pkgs/development/haskell-modules/non-hackage-packages.nix +++ b/pkgs/development/haskell-modules/non-hackage-packages.nix @@ -41,6 +41,8 @@ self: super: ghc-settings-edit = self.callPackage ../tools/haskell/ghc-settings-edit { }; + iserv-proxy = self.callPackage ../tools/haskell/iserv-proxy { }; + # Upstream won't upload vaultenv to Hackage: # https://github.com/channable/vaultenv/issues/1 krank:ignore-line vaultenv = self.callPackage ../tools/haskell/vaultenv { }; diff --git a/pkgs/development/interpreters/guile/2.0.nix b/pkgs/development/interpreters/guile/2.0.nix index ef473214c324b..9d207f70c0c70 100644 --- a/pkgs/development/interpreters/guile/2.0.nix +++ b/pkgs/development/interpreters/guile/2.0.nix @@ -90,14 +90,6 @@ builder rec { }) ]; - # Explicitly link against libgcc_s, to work around the infamous - # "libgcc_s.so.1 must be installed for pthread_cancel to work". - - # don't have "libgcc_s.so.1" on darwin - LDFLAGS = lib.optionalString ( - !stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isMusl - ) "-lgcc_s"; - configureFlags = [ "--with-libreadline-prefix" ] @@ -118,6 +110,12 @@ builder rec { env = { NIX_CFLAGS_COMPILE = "-std=gnu17"; + } + // lib.optionalAttrs (!stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isMusl) { + # Explicitly link against libgcc_s, to work around the infamous + # "libgcc_s.so.1 must be installed for pthread_cancel to work". + # don't have "libgcc_s.so.1" on darwin + LDFLAGS = "-lgcc_s"; }; postInstall = '' diff --git a/pkgs/development/interpreters/guile/2.2.nix b/pkgs/development/interpreters/guile/2.2.nix index 146b29407b30d..c48fa78594bdb 100644 --- a/pkgs/development/interpreters/guile/2.2.nix +++ b/pkgs/development/interpreters/guile/2.2.nix @@ -85,7 +85,9 @@ builder rec { # "libgcc_s.so.1 must be installed for pthread_cancel to work". # don't have "libgcc_s.so.1" on clang - LDFLAGS = lib.optionalString (stdenv.cc.isGNU && !stdenv.hostPlatform.isStatic) "-lgcc_s"; + env = lib.optionalAttrs (stdenv.cc.isGNU && !stdenv.hostPlatform.isStatic) { + LDFLAGS = "-lgcc_s"; + }; configureFlags = [ "--with-libreadline-prefix=${lib.getDev readline}" diff --git a/pkgs/development/interpreters/guile/3.0.nix b/pkgs/development/interpreters/guile/3.0.nix index 459f51aff16db..d400a4059cecc 100644 --- a/pkgs/development/interpreters/guile/3.0.nix +++ b/pkgs/development/interpreters/guile/3.0.nix @@ -26,11 +26,11 @@ let in builder rec { pname = "guile"; - version = "3.0.10"; + version = "3.0.11"; src = fetchurl { url = "mirror://gnu/${pname}/${pname}-${version}.tar.xz"; - sha256 = "sha256-vXFoUX/VJjM0RtT3q4FlJ5JWNAlPvTcyLhfiuNjnY4g="; + sha256 = "sha256-gYx50jZlen+pb7NkE3zHtBs73uDWXGF0ygN2lVlXlGA="; }; outputs = [ @@ -100,11 +100,16 @@ builder rec { sha256 = "12wvwdna9j8795x59ldryv9d84c1j3qdk2iskw09306idfsis207"; }); - # Explicitly link against libgcc_s, to work around the infamous - # "libgcc_s.so.1 must be installed for pthread_cancel to work". - - # don't have "libgcc_s.so.1" on clang - LDFLAGS = lib.optionalString (stdenv.cc.isGNU && !stdenv.hostPlatform.isStatic) "-lgcc_s"; + env = { + # Fix build with gcc15 + NIX_CFLAGS_COMPILE = toString [ "-std=gnu17" ]; + } + // lib.optionalAttrs (stdenv.cc.isGNU && !stdenv.hostPlatform.isStatic) { + # Explicitly link against libgcc_s, to work around the infamous + # "libgcc_s.so.1 must be installed for pthread_cancel to work". + # don't have "libgcc_s.so.1" on clang + LDFLAGS = "-lgcc_s"; + }; configureFlags = [ "--with-libreadline-prefix=${lib.getDev readline}" @@ -126,9 +131,6 @@ builder rec { # https://github.com/NixOS/nixpkgs/pull/160051#issuecomment-1046193028 ++ lib.optional (stdenv.hostPlatform.isDarwin) "--disable-lto"; - # Fix build with gcc15 - env.NIX_CFLAGS_COMPILE = toString [ "-std=gnu17" ]; - postInstall = '' wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin" '' diff --git a/pkgs/development/interpreters/lua-5/5.5.darwin.patch b/pkgs/development/interpreters/lua-5/5.5.darwin.patch new file mode 100644 index 0000000000000..33ce03cf8bbb3 --- /dev/null +++ b/pkgs/development/interpreters/lua-5/5.5.darwin.patch @@ -0,0 +1,52 @@ +diff --git a/Makefile b/Makefile +index 388fa17..ce17b93 100644 +--- a/Makefile ++++ b/Makefile +@@ -41,7 +41,7 @@ PLATS= guess aix bsd c89 freebsd generic ios linux macosx mingw posix solaris + # What to install. + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp +-TO_LIB= liblua.a ++TO_LIB= liblua.${pkgversion}.dylib + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -60,6 +60,9 @@ install: dummy + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) + cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) ++ ln -s -f liblua.${pkgversion}.dylib $(INSTALL_LIB)/liblua.${luaversion}.dylib ++ ln -s -f liblua.${luaversion}.dylib $(INSTALL_LIB)/liblua.dylib ++ + + uninstall: + cd src && cd $(INSTALL_BIN) && $(RM) $(TO_BIN) +diff --git a/src/Makefile b/src/Makefile +index acf33e0..42a5435 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -32,7 +32,7 @@ CMCFLAGS= + + PLATS= guess aix bsd c89 freebsd generic ios linux macosx mingw posix solaris + +-LUA_A= liblua.a ++LUA_A= liblua.${pkgversion}.a + CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o + LIB_O= lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o + BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS) +@@ -59,9 +59,14 @@ a: $(ALL_A) + $(LUA_A): $(BASE_O) + $(AR) $@ $(BASE_O) + $(RANLIB) $@ ++ $(CC) -dynamiclib -install_name $(out)/lib/liblua.${pkgversion}.dylib \ ++ -compatibility_version ${pkgversion} -current_version ${pkgversion} \ ++ -o liblua.${pkgversion}.dylib $^ ++ + + $(LUA_T): $(LUA_O) $(LUA_A) +- $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++ $(CC) -fno-common $(MYLDFLAGS) \ ++ -o $@ $(LUA_O) $(LUA_A) -L. -llua.${pkgversion} $(LIBS) + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/pkgs/development/interpreters/lua-5/default.nix b/pkgs/development/interpreters/lua-5/default.nix index fd6ed6d800e17..1147893e5e432 100644 --- a/pkgs/development/interpreters/lua-5/default.nix +++ b/pkgs/development/interpreters/lua-5/default.nix @@ -102,6 +102,21 @@ let in rec { + lua5_5 = callPackage ./interpreter.nix { + self = lua5_5; + version = "5.5.0"; + hash = "sha256-V8zDK7vQBcq3W8xSREBSU1r2kXiduiuQFtXFBkDWiz0="; + makeWrapper = makeBinaryWrapper; + inherit passthruFun; + + patches = lib.optional stdenv.hostPlatform.isDarwin ./5.5.darwin.patch; + }; + + lua5_5_compat = lua5_5.override { + self = lua5_5_compat; + compat = true; + }; + lua5_4 = callPackage ./interpreter.nix { self = lua5_4; version = "5.4.7"; diff --git a/pkgs/development/interpreters/lua-5/interpreter.nix b/pkgs/development/interpreters/lua-5/interpreter.nix index 7142370b89f6c..05272e980b4f9 100644 --- a/pkgs/development/interpreters/lua-5/interpreter.nix +++ b/pkgs/development/interpreters/lua-5/interpreter.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation ( plat = if (stdenv.hostPlatform.isLinux && lib.versionOlder self.luaversion "5.4") then "linux" - else if (stdenv.hostPlatform.isLinux && lib.versionAtLeast self.luaversion "5.4") then + else if (stdenv.hostPlatform.isLinux && self.luaversion == "5.4") then "linux-readline" else if stdenv.hostPlatform.isDarwin then "macosx" diff --git a/pkgs/development/interpreters/lua-5/tests/default.nix b/pkgs/development/interpreters/lua-5/tests/default.nix index 8a14d9b34ec9d..331d27d283c3d 100644 --- a/pkgs/development/interpreters/lua-5/tests/default.nix +++ b/pkgs/development/interpreters/lua-5/tests/default.nix @@ -47,9 +47,11 @@ let ";${lua}/share/lua/5.2/?.lua;${lua}/share/lua/5.2/?/init.lua;${lua}/lib/lua/5.2/?.lua;${lua}/lib/lua/5.2/?/init.lua;./?.lua;"; "5.3" = ";${lua}/share/lua/5.3/?.lua;${lua}/share/lua/5.3/?/init.lua;${lua}/lib/lua/5.3/?.lua;${lua}/lib/lua/5.3/?/init.lua;./?.lua;./?/init.lua;"; - # lua5.4 seems to be smarter about it and dont add the lua separators when nothing left or right + # lua > 5.4 seems to be smarter about it and dont add the lua separators when nothing left or right "5.4" = "${lua}/share/lua/5.4/?.lua;${lua}/share/lua/5.4/?/init.lua;${lua}/lib/lua/5.4/?.lua;${lua}/lib/lua/5.4/?/init.lua;./?.lua;./?/init.lua"; + "5.5" = + "${lua}/share/lua/5.5/?.lua;${lua}/share/lua/5.5/?/init.lua;${lua}/lib/lua/5.5/?.lua;${lua}/lib/lua/5.5/?/init.lua;./?.lua;./?/init.lua"; # luajit versions "2.0" = @@ -80,19 +82,19 @@ lib.recurseIntoAttrs { # checks that lua's setup-hook adds dependencies to LUA_PATH # Prevents the following regressions - # $ env NIX_PATH=nixpkgs=. nix-shell --pure -Q -p luajitPackages.lua luajitPackages.http + # $ env NIX_PATH=nixpkgs=. nix-shell --pure -Q -p luajitPackages.lua luajitPackages.alt-getopt # nix-shell$ luajit - # > require('http.request') - # stdin:1: module 'http.request' not found: + # > require('alt-getopt') + # stdin:1: module 'alt-getopt' not found: checkSetupHook = pkgs.runCommandLocal "test-${lua.name}-setup-hook" { nativeBuildInputs = [ lua ]; - buildInputs = [ lua.pkgs.http ]; + buildInputs = [ lua.pkgs.alt-getopt ]; meta.platforms = lua.meta.platforms; } '' - ${lua}/bin/lua -e "require'http.request'" + ${lua}/bin/lua -e "require'alt_getopt'" touch $out ''; @@ -115,11 +117,11 @@ lib.recurseIntoAttrs { checkPropagatedBuildInputs = pkgs.runCommandLocal "test-${lua.name}-setup-hook" { - buildInputs = [ lua.pkgs.rest-nvim ]; + buildInputs = [ lua.pkgs.luacov ]; } - # `xml2lua` is a propagatedBuildInput of rest-nvim + # `datafile` is a propagatedBuildInput of luacov '' - ${lua}/bin/lua -e "require'xml2lua'" + ${lua}/bin/lua -e "require'datafile'" touch $out ''; diff --git a/pkgs/development/interpreters/luajit/default.nix b/pkgs/development/interpreters/luajit/default.nix index a0f902f5200e4..95211f41f6fb4 100644 --- a/pkgs/development/interpreters/luajit/default.nix +++ b/pkgs/development/interpreters/luajit/default.nix @@ -93,11 +93,25 @@ stdenv.mkDerivation (finalAttrs: { "CROSS=${stdenv.cc.targetPrefix}" "HOST_CC=${buildStdenv.cc}/bin/cc" ] + # LuaJIT's build system needs an explicit target on MinGW, otherwise it can + # emit ELF-specific assembler directives (e.g. .hidden/.type/.size) that the + # PE/COFF toolchain doesn't accept. + ++ lib.optionals stdenv.hostPlatform.isMinGW [ + "TARGET_SYS=Windows" + ] ++ lib.optional enableJITDebugModule "INSTALL_LJLIBD=$(INSTALL_LMOD)" ++ lib.optional stdenv.hostPlatform.isStatic "BUILDMODE=static"; enableParallelBuilding = true; env.NIX_CFLAGS_COMPILE = toString XCFLAGS; + # The LuaJIT build produces `src/luajit.exe` on Windows targets, but the + # upstream install rule expects `src/luajit`. Provide a compatibility copy. + preInstall = lib.optionalString stdenv.hostPlatform.isMinGW '' + if [[ -e src/luajit.exe && ! -e src/luajit ]]; then + cp -p src/luajit.exe src/luajit + fi + ''; + postInstall = '' mkdir -p $out/nix-support cp ${ @@ -152,7 +166,9 @@ stdenv.mkDerivation (finalAttrs: { description = "High-performance JIT compiler for Lua 5.1"; homepage = "https://luajit.org/"; license = lib.licenses.mit; - platforms = lib.platforms.linux ++ lib.platforms.darwin; + # MSYS2 ships LuaJIT for mingw-w64, and nixpkgs consumers (like phosphor) + # need it in Windows cross builds. + platforms = lib.platforms.linux ++ lib.platforms.darwin ++ lib.platforms.windows; badPlatforms = [ "loongarch64-linux" # See https://github.com/LuaJIT/LuaJIT/issues/1278 "riscv64-linux" # See https://github.com/LuaJIT/LuaJIT/issues/628 diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix index 8fc7b5dd07a3e..cab0ea1a22682 100644 --- a/pkgs/development/interpreters/perl/default.nix +++ b/pkgs/development/interpreters/perl/default.nix @@ -12,6 +12,7 @@ let perlOnHostForHost, perlOnTargetForTarget, perlAttr ? null, + tests ? { }, self, # is perlOnHostForTarget }: let @@ -64,6 +65,8 @@ let inherit overrides; self = perlOnBuild; }; + + inherit tests; }; in diff --git a/pkgs/development/interpreters/perl/interpreter.nix b/pkgs/development/interpreters/perl/interpreter.nix index 428009e6b900b..a501b99967253 100644 --- a/pkgs/development/interpreters/perl/interpreter.nix +++ b/pkgs/development/interpreters/perl/interpreter.nix @@ -85,7 +85,8 @@ let in stdenv.mkDerivation ( - rec { + finalAttrs: + { inherit version; pname = "perl"; @@ -296,9 +297,16 @@ stdenv.mkDerivation ( perlOnHostForHost = override pkgsHostHost.${perlAttr}; perlOnTargetForTarget = if lib.hasAttr perlAttr pkgsTargetTarget then (override pkgsTargetTarget.${perlAttr}) else { }; - }; - doCheck = false; # some tests fail, expensive + tests.withCheck = finalAttrs.finalPackage.overrideAttrs (_: { + preCheck = '' + # Weird test failure, can't even understand what it's about + # Disable the test for now + sed -i '/ext\/Pod-Html\/t\/htmldir3.*/d' MANIFEST + ''; + doCheck = true; + }); + }; # TODO: it seems like absolute paths to some coreutils is required. postInstall = '' diff --git a/pkgs/development/libraries/ffmpeg/default.nix b/pkgs/development/libraries/ffmpeg/default.nix index fb761f6f7c7cf..0e82e63014c12 100644 --- a/pkgs/development/libraries/ffmpeg/default.nix +++ b/pkgs/development/libraries/ffmpeg/default.nix @@ -21,17 +21,17 @@ let }; v6 = { - version = "6.1.3"; - hash = "sha256-NQnPOfiNmurY+L9/B7eVQc2JpOi0jhv5g9kVWsTzpis="; + version = "6.1.4"; + hash = "sha256-hqLohRNkoy5jGlaNlCRVoPwwsW7TDgCX1OKsGIM6IYg="; }; v7 = { - version = "7.1.2"; - hash = "sha256-MF/0oSOhxGWuOu6Yat7O68iOvgZ+wKjpQ8zSkwpWXqQ="; + version = "7.1.3"; + hash = "sha256-1w4OSlz88D2pnZVXQcI4uyX+triNK0NXzlsyt7GGSLU="; }; v8 = { - version = "8.0"; - hash = "sha256-okNZ1/m/thFAY3jK/GSV0+WZFnjrMr8uBPsOdH6Wq9E="; + version = "8.0.1"; + hash = "sha256-eA5fP/uZqF5+jDDt4tHArGqyt7zbrLZ21v+Lchr8OS8="; }; in diff --git a/pkgs/development/libraries/ffmpeg/generic.nix b/pkgs/development/libraries/ffmpeg/generic.nix index 7eae647efc8d4..5e2ddb653a941 100644 --- a/pkgs/development/libraries/ffmpeg/generic.nix +++ b/pkgs/development/libraries/ffmpeg/generic.nix @@ -452,6 +452,11 @@ stdenv.mkDerivation ( ] ++ optionals (lib.versionAtLeast version "5.1") [ ./nvccflags-cpp14.patch + (fetchpatch2 { + name = "unbreak-hardcoded-tables.patch"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/1d47ae65bf6df91246cbe25c997b25947f7a4d1d"; + hash = "sha256-ulB5BujAkoRJ8VHou64Th3E94z6m+l6v9DpG7/9nYsM="; + }) ] ++ optionals (lib.versionAtLeast version "6.1" && lib.versionOlder version "6.2") [ (fetchpatch2 { @@ -484,6 +489,8 @@ stdenv.mkDerivation ( url = "https://gitlab.archlinux.org/archlinux/packaging/packages/ffmpeg/-/raw/a02c1a15706ea832c0d52a4d66be8fb29499801a/add-av_stream_get_first_dts-for-chromium.patch"; hash = "sha256-DbH6ieJwDwTjKOdQ04xvRcSLeeLP2Z2qEmqeo8HsPr4="; }) + ] + ++ optionals (lib.versionAtLeast version "7.1" && lib.versionOlder version "8.0") [ (fetchpatch2 { name = "lcevcdec-4.0.0-compat.patch"; url = "https://code.ffmpeg.org/FFmpeg/FFmpeg/commit/fa23202cc7baab899894e8d22d82851a84967848.patch"; @@ -978,7 +985,8 @@ stdenv.mkDerivation ( ]; }; - doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + # tests linking broken with shaderc after https://github.com/NixOS/nixpkgs/pull/477464/changes/5a47b12dfcd1b909ba35778a866394430054319a + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform && !withShaderc; # Fails with SIGABRT otherwise FIXME: Why? checkPhase = diff --git a/pkgs/development/libraries/fmt/default.nix b/pkgs/development/libraries/fmt/default.nix index 281acff35b354..3b9a89e670f42 100644 --- a/pkgs/development/libraries/fmt/default.nix +++ b/pkgs/development/libraries/fmt/default.nix @@ -99,7 +99,7 @@ in }; fmt_12 = generic { - version = "12.0.0"; - hash = "sha256-AZDmIeU1HbadC+K0TIAGogvVnxt0oE9U6ocpawIgl6g="; + version = "12.1.0"; + hash = "sha256-ZmI1Dv0ZabPlxa02OpERI47jp7zFfjpeWCy1WyuPYZ0="; }; } diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix index 8d1c548944fcd..45116f2db9ec7 100644 --- a/pkgs/development/libraries/gettext/default.nix +++ b/pkgs/development/libraries/gettext/default.nix @@ -36,8 +36,6 @@ stdenv.mkDerivation rec { "info" ]; - LDFLAGS = lib.optionalString stdenv.hostPlatform.isSunOS "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec"; - configureFlags = [ "--disable-csharp" ] @@ -113,6 +111,9 @@ stdenv.mkDerivation rec { # https://github.com/Homebrew/homebrew-core/pull/199639 # https://savannah.gnu.org/bugs/index.php?66541 am_cv_func_iconv_works = "yes"; + } + // lib.optionalAttrs stdenv.hostPlatform.isSunOS { + LDFLAGS = "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec"; }; enableParallelBuilding = true; diff --git a/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch b/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch index 100bf31c3b008..25cb329e086e7 100644 --- a/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch +++ b/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch @@ -1,4 +1,4 @@ -From e207c3dbcff1d3d09c60eec99b6fec2a698b01bd Mon Sep 17 00:00:00 2001 +From c1c36f73aa3085a856c7cf36d69c21d18d3ef5ac Mon Sep 17 00:00:00 2001 From: Bernardo Meurer Date: Fri, 22 Jul 2022 22:11:07 -0700 Subject: [PATCH] Revert "Remove all usage of @BASH@ or ${BASH} in installed @@ -22,10 +22,10 @@ Co-authored-by: Maximilian Bosch 8 files changed, 15 insertions(+), 10 deletions(-) diff --git a/debug/Makefile b/debug/Makefile -index 3903cc97a3..b041acca71 100644 +index 6a05205ce6..dd63b16ae8 100644 --- a/debug/Makefile +++ b/debug/Makefile -@@ -343,8 +343,9 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o +@@ -345,8 +345,9 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o $(objpfx)xtrace: xtrace.sh rm -f $@.new @@ -38,20 +38,20 @@ index 3903cc97a3..b041acca71 100644 && rm -f $@ && mv $@.new $@ && chmod +x $@ diff --git a/debug/xtrace.sh b/debug/xtrace.sh -index 77ec1d84df..5614404a71 100755 +index 00bafd33db..d0f9fca9a9 100755 --- a/debug/xtrace.sh +++ b/debug/xtrace.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1999-2024 Free Software Foundation, Inc. + # Copyright (C) 1999-2025 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/elf/Makefile b/elf/Makefile -index 5d78b659ce..a2145d7b64 100644 +index 4b1d0d8741..bbcf688c99 100644 --- a/elf/Makefile +++ b/elf/Makefile -@@ -249,7 +249,8 @@ $(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \ +@@ -250,7 +250,8 @@ $(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \ $(common-objpfx)libc_nonshared.a $(objpfx)sotruss: sotruss.sh $(common-objpfx)config.make @@ -61,7 +61,7 @@ index 5d78b659ce..a2145d7b64 100644 -e 's%@TEXTDOMAINDIR@%$(localedir)%g' \ -e 's%@PREFIX@%$(prefix)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -@@ -1392,6 +1393,7 @@ ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ +@@ -1556,6 +1557,7 @@ ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ -e 's%@VERSION@%$(version)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' \ @@ -70,30 +70,30 @@ index 5d78b659ce..a2145d7b64 100644 ifeq ($(ldd-rewrite-script),no) diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in -index d6b640df66..46111670cd 100644 +index 2d3df6e57e..0faf83dc86 100644 --- a/elf/ldd.bash.in +++ b/elf/ldd.bash.in @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1996-2024 Free Software Foundation, Inc. + # Copyright (C) 1996-2025 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/elf/sotruss.sh b/elf/sotruss.sh -index ac1a83984e..2bf17c518e 100755 +index 8944645df9..1c36981b22 100755 --- a/elf/sotruss.sh +++ b/elf/sotruss.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 2011-2024 Free Software Foundation, Inc. + # Copyright (C) 2011-2025 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/malloc/Makefile b/malloc/Makefile -index c83ade5f10..8dd9174b79 100644 +index e2b2c1ae1b..67a399f1dd 100644 --- a/malloc/Makefile +++ b/malloc/Makefile -@@ -312,8 +312,9 @@ $(objpfx)mtrace: mtrace.pl +@@ -359,8 +359,9 @@ $(objpfx)mtrace: mtrace.pl $(objpfx)memusage: memusage.sh rm -f $@.new @@ -106,20 +106,20 @@ index c83ade5f10..8dd9174b79 100644 && rm -f $@ && mv $@.new $@ && chmod +x $@ diff --git a/malloc/memusage.sh b/malloc/memusage.sh -index d2d9d17ea8..2e7efc9049 100755 +index 8ae435d2f8..c929d16af7 100755 --- a/malloc/memusage.sh +++ b/malloc/memusage.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1999-2024 Free Software Foundation, Inc. + # Copyright (C) 1999-2025 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/timezone/Makefile b/timezone/Makefile -index d7acb387ba..c8e203ea3a 100644 +index ebe5cf73a1..e9cf92861c 100644 --- a/timezone/Makefile +++ b/timezone/Makefile -@@ -132,7 +132,8 @@ $(testdata)/XT5: testdata/gen-XT5.sh +@@ -139,7 +139,8 @@ $(testdata)/XT5: testdata/gen-XT5.sh mv $@.tmp $@ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make @@ -130,5 +130,5 @@ index d7acb387ba..c8e203ea3a 100644 -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \ -e '/REPORT_BUGS_TO=/s|=.*|="$(REPORT_BUGS_TO)"|' \ -- -2.42.0 +2.47.2 diff --git a/pkgs/development/libraries/glibc/2.40-master.patch b/pkgs/development/libraries/glibc/2.40-master.patch deleted file mode 100644 index 3384de16dc3b4..0000000000000 --- a/pkgs/development/libraries/glibc/2.40-master.patch +++ /dev/null @@ -1,43310 +0,0 @@ -commit 6daa77104520ca992a9369bd01cccd4d98c82984 -Author: Andreas K. Hüttel -Date: Sun Jul 21 19:02:10 2024 +0200 - - Replace advisories directory - - Signed-off-by: Andreas K. Hüttel - -diff --git a/advisories/GLIBC-SA-2023-0001 b/advisories/GLIBC-SA-2023-0001 -deleted file mode 100644 -index 3d19c91b6a..0000000000 ---- a/advisories/GLIBC-SA-2023-0001 -+++ /dev/null -@@ -1,14 +0,0 @@ --printf: incorrect output for integers with thousands separator and width field -- --When the printf family of functions is called with a format specifier --that uses an (enable grouping) and a minimum width --specifier, the resulting output could be larger than reasonably expected --by a caller that computed a tight bound on the buffer size. The --resulting larger than expected output could result in a buffer overflow --in the printf family of functions. -- --CVE-Id: CVE-2023-25139 --Public-Date: 2023-02-02 --Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37) --Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38) --Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4) -diff --git a/advisories/GLIBC-SA-2023-0002 b/advisories/GLIBC-SA-2023-0002 -deleted file mode 100644 -index 5122669a64..0000000000 ---- a/advisories/GLIBC-SA-2023-0002 -+++ /dev/null -@@ -1,15 +0,0 @@ --getaddrinfo: Stack read overflow in no-aaaa mode -- --If the system is configured in no-aaaa mode via /etc/resolv.conf, --getaddrinfo is called for the AF_UNSPEC address family, and a DNS --response is received over TCP that is larger than 2048 bytes, --getaddrinfo may potentially disclose stack contents via the returned --address data, or crash. -- --CVE-Id: CVE-2023-4527 --Public-Date: 2023-09-12 --Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36) --Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39) --Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113) --Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38) --Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19) -diff --git a/advisories/GLIBC-SA-2023-0003 b/advisories/GLIBC-SA-2023-0003 -deleted file mode 100644 -index d3aef80348..0000000000 ---- a/advisories/GLIBC-SA-2023-0003 -+++ /dev/null -@@ -1,15 +0,0 @@ --getaddrinfo: Potential use-after-free -- --When an NSS plugin only implements the _gethostbyname2_r and --_getcanonname_r callbacks, getaddrinfo could use memory that was freed --during buffer resizing, potentially causing a crash or read or write to --arbitrary memory. -- --CVE-Id: CVE-2023-4806 --Public-Date: 2023-09-12 --Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39) --Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) --Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) --Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) --Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) --Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) -diff --git a/advisories/GLIBC-SA-2023-0004 b/advisories/GLIBC-SA-2023-0004 -deleted file mode 100644 -index 5286a7aa54..0000000000 ---- a/advisories/GLIBC-SA-2023-0004 -+++ /dev/null -@@ -1,16 +0,0 @@ --tunables: local privilege escalation through buffer overflow -- --If a tunable of the form NAME=NAME=VAL is passed in the environment of a --setuid program and NAME is valid, it may result in a buffer overflow, --which could be exploited to achieve escalated privileges. This flaw was --introduced in glibc 2.34. -- --CVE-Id: CVE-2023-4911 --Public-Date: 2023-10-03 --Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34) --Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39) --Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423) --Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274) --Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118) --Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45) --Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27) -diff --git a/advisories/GLIBC-SA-2023-0005 b/advisories/GLIBC-SA-2023-0005 -deleted file mode 100644 -index cc4eb90b82..0000000000 ---- a/advisories/GLIBC-SA-2023-0005 -+++ /dev/null -@@ -1,18 +0,0 @@ --getaddrinfo: DoS due to memory leak -- --The fix for CVE-2023-4806 introduced a memory leak when an application --calls getaddrinfo for AF_INET6 with AI_CANONNAME, AI_ALL and AI_V4MAPPED --flags set. -- --CVE-Id: CVE-2023-5156 --Public-Date: 2023-09-25 --Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) --Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) --Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) --Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) --Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) --Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421) --Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272) --Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116) --Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42) --Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24) -diff --git a/advisories/GLIBC-SA-2024-0001 b/advisories/GLIBC-SA-2024-0001 -deleted file mode 100644 -index 28931c75ae..0000000000 ---- a/advisories/GLIBC-SA-2024-0001 -+++ /dev/null -@@ -1,15 +0,0 @@ --syslog: Heap buffer overflow in __vsyslog_internal -- --__vsyslog_internal did not handle a case where printing a SYSLOG_HEADER --containing a long program name failed to update the required buffer --size, leading to the allocation and overflow of a too-small buffer on --the heap. -- --CVE-Id: CVE-2023-6246 --Public-Date: 2024-01-30 --Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) --Fix-Commit: 6bd0e4efcc78f3c0115e5ea9739a1642807450da (2.39) --Fix-Commit: 23514c72b780f3da097ecf33a793b7ba9c2070d2 (2.38-42) --Fix-Commit: 97a4292aa4a2642e251472b878d0ec4c46a0e59a (2.37-57) --Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) --Fix-Commit: d1a83b6767f68b3cb5b4b4ea2617254acd040c82 (2.36-126) -diff --git a/advisories/GLIBC-SA-2024-0002 b/advisories/GLIBC-SA-2024-0002 -deleted file mode 100644 -index 940bfcf2fc..0000000000 ---- a/advisories/GLIBC-SA-2024-0002 -+++ /dev/null -@@ -1,15 +0,0 @@ --syslog: Heap buffer overflow in __vsyslog_internal -- --__vsyslog_internal used the return value of snprintf/vsnprintf to --calculate buffer sizes for memory allocation. If these functions (for --any reason) failed and returned -1, the resulting buffer would be too --small to hold output. -- --CVE-Id: CVE-2023-6779 --Public-Date: 2024-01-30 --Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) --Fix-Commit: 7e5a0c286da33159d47d0122007aac016f3e02cd (2.39) --Fix-Commit: d0338312aace5bbfef85e03055e1212dd0e49578 (2.38-43) --Fix-Commit: 67062eccd9a65d7fda9976a56aeaaf6c25a80214 (2.37-58) --Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) --Fix-Commit: 2bc9d7c002bdac38b5c2a3f11b78e309d7765b83 (2.36-127) -diff --git a/advisories/GLIBC-SA-2024-0003 b/advisories/GLIBC-SA-2024-0003 -deleted file mode 100644 -index b43a5150ab..0000000000 ---- a/advisories/GLIBC-SA-2024-0003 -+++ /dev/null -@@ -1,13 +0,0 @@ --syslog: Integer overflow in __vsyslog_internal -- --__vsyslog_internal calculated a buffer size by adding two integers, but --did not first check if the addition would overflow. -- --CVE-Id: CVE-2023-6780 --Public-Date: 2024-01-30 --Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) --Fix-Commit: ddf542da94caf97ff43cc2875c88749880b7259b (2.39) --Fix-Commit: d37c2b20a4787463d192b32041c3406c2bd91de0 (2.38-44) --Fix-Commit: 2b58cba076e912961ceaa5fa58588e4b10f791c0 (2.37-59) --Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) --Fix-Commit: b9b7d6a27aa0632f334352fa400771115b3c69b7 (2.36-128) -diff --git a/advisories/GLIBC-SA-2024-0004 b/advisories/GLIBC-SA-2024-0004 -deleted file mode 100644 -index 08df2b3118..0000000000 ---- a/advisories/GLIBC-SA-2024-0004 -+++ /dev/null -@@ -1,28 +0,0 @@ --ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence -- --The iconv() function in the GNU C Library versions 2.39 and older may --overflow the output buffer passed to it by up to 4 bytes when converting --strings to the ISO-2022-CN-EXT character set, which may be used to --crash an application or overwrite a neighbouring variable. -- --ISO-2022-CN-EXT uses escape sequences to indicate character set changes --(as specified by RFC 1922). While the SOdesignation has the expected --bounds checks, neither SS2designation nor SS3designation have its; --allowing a write overflow of 1, 2, or 3 bytes with fixed values: --'$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'. -- --CVE-Id: CVE-2024-2961 --Public-Date: 2024-04-17 --Vulnerable-Commit: 755104edc75c53f4a0e7440334e944ad3c6b32fc (2.1.93-169) --Fix-Commit: f9dc609e06b1136bb0408be9605ce7973a767ada (2.40) --Fix-Commit: 31da30f23cddd36db29d5b6a1c7619361b271fb4 (2.39-31) --Fix-Commit: e1135387deded5d73924f6ca20c72a35dc8e1bda (2.38-66) --Fix-Commit: 89ce64b269a897a7780e4c73a7412016381c6ecf (2.37-89) --Fix-Commit: 4ed98540a7fd19f458287e783ae59c41e64df7b5 (2.36-164) --Fix-Commit: 36280d1ce5e245aabefb877fe4d3c6cff95dabfa (2.35-315) --Fix-Commit: a8b0561db4b9847ebfbfec20075697d5492a363c (2.34-459) --Fix-Commit: ed4f16ff6bed3037266f1fa682ebd32a18fce29c (2.33-263) --Fix-Commit: 682ad4c8623e611a971839990ceef00346289cc9 (2.32-140) --Fix-Commit: 3703c32a8d304c1ee12126134ce69be965f38000 (2.31-154) -- --Reported-By: Charles Fol -diff --git a/advisories/GLIBC-SA-2024-0005 b/advisories/GLIBC-SA-2024-0005 -deleted file mode 100644 -index a59596610a..0000000000 ---- a/advisories/GLIBC-SA-2024-0005 -+++ /dev/null -@@ -1,22 +0,0 @@ --nscd: Stack-based buffer overflow in netgroup cache -- --If the Name Service Cache Daemon's (nscd) fixed size cache is exhausted --by client requests then a subsequent client request for netgroup data --may result in a stack-based buffer overflow. This flaw was introduced --in glibc 2.15 when the cache was added to nscd. -- --This vulnerability is only present in the nscd binary. -- --CVE-Id: CVE-2024-33599 --Public-Date: 2024-04-23 --Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) --Fix-Commit: 69c58d5ef9f584ea198bd00f7964d364d0e6b921 (2.31-155) --Fix-Commit: a77064893bfe8a701770e2f53a4d33805bc47a5a (2.32-141) --Fix-Commit: 5c75001a96abcd50cbdb74df24c3f013188d076e (2.33-264) --Fix-Commit: 52f73e5c4e29b14e79167272297977f360ae1e97 (2.34-460) --Fix-Commit: 7a95873543ce225376faf13bb71c43dea6d24f86 (2.35-316) --Fix-Commit: caa3151ca460bdd9330adeedd68c3112d97bffe4 (2.36-165) --Fix-Commit: f75c298e747b2b8b41b1c2f551c011a52c41bfd1 (2.37-91) --Fix-Commit: 5968aebb86164034b8f8421b4abab2f837a5bdaf (2.38-72) --Fix-Commit: 1263d583d2e28afb8be53f8d6922f0842036f35d (2.39-35) --Fix-Commit: 87801a8fd06db1d654eea3e4f7626ff476a9bdaa (2.40) -diff --git a/advisories/GLIBC-SA-2024-0006 b/advisories/GLIBC-SA-2024-0006 -deleted file mode 100644 -index d44148d3d9..0000000000 ---- a/advisories/GLIBC-SA-2024-0006 -+++ /dev/null -@@ -1,32 +0,0 @@ --nscd: Null pointer crash after notfound response -- --If the Name Service Cache Daemon's (nscd) cache fails to add a not-found --netgroup response to the cache, the client request can result in a null --pointer dereference. This flaw was introduced in glibc 2.15 when the --cache was added to nscd. -- --This vulnerability is only present in the nscd binary. -- --CVE-Id: CVE-2024-33600 --Public-Date: 2024-04-24 --Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) --Fix-Commit: b048a482f088e53144d26a61c390bed0210f49f2 (2.40) --Fix-Commit: 7835b00dbce53c3c87bbbb1754a95fb5e58187aa (2.40) --Fix-Commit: c99f886de54446cd4447db6b44be93dabbdc2f8b (2.39-37) --Fix-Commit: 5a508e0b508c8ad53bd0d2fb48fd71b242626341 (2.39-36) --Fix-Commit: 2ae9446c1b7a3064743b4a51c0bbae668ee43e4c (2.38-74) --Fix-Commit: 541ea5172aa658c4bd5c6c6d6fd13903c3d5bb0a (2.38-73) --Fix-Commit: a8070b31043c7585c36ba68a74298c4f7af075c3 (2.37-93) --Fix-Commit: 5eea50c4402e39588de98aa1d4469a79774703d4 (2.37-92) --Fix-Commit: f205b3af56740e3b014915b1bd3b162afe3407ef (2.36-167) --Fix-Commit: c34f470a615b136170abd16142da5dd0c024f7d1 (2.36-166) --Fix-Commit: bafadc589fbe21ae330e8c2af74db9da44a17660 (2.35-318) --Fix-Commit: 4370bef52b0f3f3652c6aa13d7a9bb3ac079746d (2.35-317) --Fix-Commit: 1f94122289a9bf7dba573f5d60327aaa2b85cf2e (2.34-462) --Fix-Commit: 966d6ac9e40222b84bb21674cc4f83c8d72a5a26 (2.34-461) --Fix-Commit: e3eef1b8fbdd3a7917af466ca9c4b7477251ca79 (2.33-266) --Fix-Commit: f20a8d696b13c6261b52a6434899121f8b19d5a7 (2.33-265) --Fix-Commit: be602180146de37582a3da3a0caa4b719645de9c (2.32-143) --Fix-Commit: 394eae338199078b7961b051c191539870742d7b (2.32-142) --Fix-Commit: 8d7949183760170c61e55def723c1d8050187874 (2.31-157) --Fix-Commit: 304ce5fe466c4762b21b36c26926a4657b59b53e (2.31-156) -diff --git a/advisories/GLIBC-SA-2024-0007 b/advisories/GLIBC-SA-2024-0007 -deleted file mode 100644 -index b6928fa27a..0000000000 ---- a/advisories/GLIBC-SA-2024-0007 -+++ /dev/null -@@ -1,28 +0,0 @@ --nscd: netgroup cache may terminate daemon on memory allocation failure -- --The Name Service Cache Daemon's (nscd) netgroup cache uses xmalloc or --xrealloc and these functions may terminate the process due to a memory --allocation failure resulting in a denial of service to the clients. The --flaw was introduced in glibc 2.15 when the cache was added to nscd. -- --This vulnerability is only present in the nscd binary. -- --Subsequent refactoring of the netgroup cache only added more uses of --xmalloc and xrealloc. Uses of xmalloc and xrealloc in other parts of --nscd only occur during startup of the daemon and so are not affected by --client requests that could trigger an out of memory followed by --termination. -- --CVE-Id: CVE-2024-33601 --Public-Date: 2024-04-24 --Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) --Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) --Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) --Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) --Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) --Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) --Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) --Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) --Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) --Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) --Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) -diff --git a/advisories/GLIBC-SA-2024-0008 b/advisories/GLIBC-SA-2024-0008 -deleted file mode 100644 -index d93e2a6f0b..0000000000 ---- a/advisories/GLIBC-SA-2024-0008 -+++ /dev/null -@@ -1,26 +0,0 @@ --nscd: netgroup cache assumes NSS callback uses in-buffer strings -- --The Name Service Cache Daemon's (nscd) netgroup cache can corrupt memory --when the NSS callback does not store all strings in the provided buffer. --The flaw was introduced in glibc 2.15 when the cache was added to nscd. -- --This vulnerability is only present in the nscd binary. -- --There is no guarantee from the NSS callback API that the returned --strings are all within the buffer. However, the netgroup cache code --assumes that the NSS callback uses in-buffer strings and if it doesn't --the buffer resizing logic could lead to potential memory corruption. -- --CVE-Id: CVE-2024-33602 --Public-Date: 2024-04-24 --Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) --Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) --Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) --Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) --Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) --Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) --Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) --Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) --Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) --Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) --Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) -diff --git a/advisories/README b/advisories/README -deleted file mode 100644 -index b8f8a829ca..0000000000 ---- a/advisories/README -+++ /dev/null -@@ -1,77 +0,0 @@ --GNU C Library Security Advisory Format --====================================== -- --Security advisories in this directory follow a simple git commit log --format, with a heading and free-format description augmented with tags --to allow parsing key information. References to code changes are --specific to the glibc repository and follow a specific format: -- -- Tag-name: (release-version) -- --The indicates a specific commit in the repository. The --release-version indicates the publicly consumable release in which this --commit is known to exist. The release-version is derived from the --git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and --is of the form 2.34-NNN. If the -NNN suffix is absent, it means that --the change is in that release tarball, otherwise the change is on the --release/2.YY/master branch and not in any released tarball. -- --The following tags are currently being used: -- --CVE-Id: --This is the CVE-Id assigned under the CVE Program --(https://www.cve.org/). -- --Public-Date: --The date this issue became publicly known. -- --Vulnerable-Commit: --The commit that introduced this vulnerability. There could be multiple --entries, one for each release branch in the glibc repository; the --release-version portion of this tag should tell you which branch this is --on. -- --Fix-Commit: --The commit that fixed this vulnerability. There could be multiple --entries for each release branch in the glibc repository, indicating that --all of those commits contributed to fixing that issue in each of those --branches. -- --Reported-By: --The entity that reported this issue. There could be multiple entries, one for --each reporter. -- --Adding an Advisory -------------------- -- --An advisory for a CVE needs to be added on the master branch in two steps: -- --1. Add the text of the advisory without any Fix-Commit tags along with -- the fix for the CVE. Add the Vulnerable-Commit tag, if applicable. -- The advisories directory does not exist in release branches, so keep -- the advisory text commit distinct from the code changes, to ease -- backports. Ask for the GLIBC-SA advisory number from the security -- team. -- --2. Finish all backports on release branches and then back on the msater -- branch, add all commit refs to the advisory using the Fix-Commit -- tags. Don't bother adding the release-version subscript since the -- next step will overwrite it. -- --3. Run the process-advisories.sh script in the scripts directory on the -- advisory: -- -- scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN -- -- (replace YYYY-NNNN with the actual advisory number). -- --4. Verify the updated advisory and push the result. -- --Getting a NEWS snippet from advisories ---------------------------------------- -- --Run: -- -- scripts/process-advisories.sh news -- --and copy the content into the NEWS file. - -commit 8bbb8d7b16cae777eed06bc9d2e059fc00be24e9 -Author: Florian Weimer -Date: Wed Jul 24 12:06:47 2024 +0200 - - resolv: Allow short error responses to match any query (bug 31890) - - Reviewed-by: DJ Delorie - (cherry picked from commit 691a3b2e9bfaba842e46a5ccb7f5e6ea144c3ade) - -diff --git a/NEWS b/NEWS -index 31281ac408..66b755ed34 100644 ---- a/NEWS -+++ b/NEWS -@@ -5,6 +5,12 @@ See the end for copying conditions. - Please send GNU C library bug reports via - using `glibc' in the "product" field. - -+Version 2.41 -+ -+The following bugs are resolved with this release: -+ -+ [31890] resolv: Allow short error responses to match any DNS query -+ - Version 2.40 - - Major new features: -diff --git a/resolv/Makefile b/resolv/Makefile -index 5f44f5896b..d927e337d9 100644 ---- a/resolv/Makefile -+++ b/resolv/Makefile -@@ -106,6 +106,7 @@ tests += \ - tst-resolv-nondecimal \ - tst-resolv-res_init-multi \ - tst-resolv-search \ -+ tst-resolv-short-response \ - tst-resolv-trailing \ - - # This test calls __res_context_send directly, which is not exported -@@ -299,6 +300,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library) -+$(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \ -+ $(shared-thread-library) - $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \ -diff --git a/resolv/res_send.c b/resolv/res_send.c -index ea7cf192b2..572e72c32f 100644 ---- a/resolv/res_send.c -+++ b/resolv/res_send.c -@@ -1199,19 +1199,30 @@ send_dg(res_state statp, - } - - /* Check for the correct header layout and a matching -- question. */ -+ question. Some recursive resolvers send REFUSED -+ without copying back the question section -+ (producing a response that is only HFIXEDSZ bytes -+ long). Skip query matching in this case. */ -+ bool thisansp_error = (anhp->rcode == SERVFAIL || -+ anhp->rcode == NOTIMP || -+ anhp->rcode == REFUSED); -+ bool skip_query_match = (*thisresplenp == HFIXEDSZ -+ && ntohs (anhp->qdcount) == 0 -+ && thisansp_error); - int matching_query = 0; /* Default to no matching query. */ - if (!recvresp1 - && anhp->id == hp->id -- && __libc_res_queriesmatch (buf, buf + buflen, -- *thisansp, -- *thisansp + *thisanssizp)) -+ && (skip_query_match -+ || __libc_res_queriesmatch (buf, buf + buflen, -+ *thisansp, -+ *thisansp + *thisanssizp))) - matching_query = 1; - if (!recvresp2 - && anhp->id == hp2->id -- && __libc_res_queriesmatch (buf2, buf2 + buflen2, -- *thisansp, -- *thisansp + *thisanssizp)) -+ && (skip_query_match -+ || __libc_res_queriesmatch (buf2, buf2 + buflen2, -+ *thisansp, -+ *thisansp + *thisanssizp))) - matching_query = 2; - if (matching_query == 0) - /* Spurious UDP packet. Drop it and continue -@@ -1221,9 +1232,7 @@ send_dg(res_state statp, - goto wait; - } - -- if (anhp->rcode == SERVFAIL || -- anhp->rcode == NOTIMP || -- anhp->rcode == REFUSED) { -+ if (thisansp_error) { - next_ns: - if (recvresp1 || (buf2 != NULL && recvresp2)) { - *resplen2 = 0; -diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c -new file mode 100644 -index 0000000000..cf1e39876f ---- /dev/null -+++ b/resolv/tst-resolv-short-response.c -@@ -0,0 +1,112 @@ -+/* Test for spurious timeouts with short 12-byte responses (bug 31890). -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+/* The rcode in the initial response. */ -+static volatile int rcode; -+ -+static void -+response (const struct resolv_response_context *ctx, -+ struct resolv_response_builder *b, -+ const char *qname, uint16_t qclass, uint16_t qtype) -+{ -+ switch (ctx->server_index) -+ { -+ case 0: -+ /* First server times out. */ -+ struct resolv_response_flags flags = {.rcode = rcode}; -+ resolv_response_init (b, flags); -+ break; -+ case 1: -+ /* Second server sends reply. */ -+ resolv_response_init (b, (struct resolv_response_flags) {}); -+ resolv_response_add_question (b, qname, qclass, qtype); -+ resolv_response_section (b, ns_s_an); -+ resolv_response_open_record (b, qname, qclass, qtype, 0); -+ switch (qtype) -+ { -+ case T_A: -+ { -+ char ipv4[4] = {192, 0, 2, 17}; -+ resolv_response_add_data (b, &ipv4, sizeof (ipv4)); -+ } -+ break; -+ case T_AAAA: -+ { -+ char ipv6[16] -+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; -+ resolv_response_add_data (b, &ipv6, sizeof (ipv6)); -+ } -+ break; -+ default: -+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype); -+ } -+ resolv_response_close_record (b); -+ break; -+ default: -+ FAIL_EXIT1 ("unexpected query to server %d", ctx->server_index); -+ } -+} -+ -+static void -+check_one (void) -+{ -+ -+ /* The buggy 1-second query timeout results in 30 seconds of delay, -+ which triggers a test timeout failure. */ -+ for (int i = 0; i < 10; ++i) -+ { -+ check_hostent ("www.example", gethostbyname ("www.example"), -+ "name: www.example\n" -+ "address: 192.0.2.17\n"); -+ check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6), -+ "name: www.example\n" -+ "address: 2001:db8::1\n"); -+ } -+} -+ -+static int -+do_test (void) -+{ -+ struct resolv_test *aux = resolv_test_start -+ ((struct resolv_redirect_config) -+ { -+ .response_callback = response, -+ }); -+ -+ _res.options |= RES_SNGLKUP; -+ -+ rcode = 2; /* SERVFAIL. */ -+ check_one (); -+ -+ rcode = 4; /* NOTIMP. */ -+ check_one (); -+ -+ rcode = 5; /* REFUSED. */ -+ check_one (); -+ -+ resolv_test_end (aux); -+ -+ return 0; -+} -+ -+#include - -commit ef141426630da0946f0af8732eddce9b9a52b2d3 -Author: Florian Weimer -Date: Wed Jul 24 12:06:47 2024 +0200 - - resolv: Do not wait for non-existing second DNS response after error (bug 30081) - - In single-request mode, there is no second response after an error - because the second query has not been sent yet. Waiting for it - introduces an unnecessary timeout. - - Reviewed-by: DJ Delorie - (cherry picked from commit af625987d619388a100b153520d3ee308bda9889) - -diff --git a/NEWS b/NEWS -index 66b755ed34..4d7100b21c 100644 ---- a/NEWS -+++ b/NEWS -@@ -9,6 +9,7 @@ Version 2.41 - - The following bugs are resolved with this release: - -+ [30081] resolv: Do not wait for non-existing second DNS response after error - [31890] resolv: Allow short error responses to match any DNS query - - Version 2.40 -diff --git a/resolv/Makefile b/resolv/Makefile -index d927e337d9..abff7fc007 100644 ---- a/resolv/Makefile -+++ b/resolv/Makefile -@@ -106,6 +106,7 @@ tests += \ - tst-resolv-nondecimal \ - tst-resolv-res_init-multi \ - tst-resolv-search \ -+ tst-resolv-semi-failure \ - tst-resolv-short-response \ - tst-resolv-trailing \ - -@@ -300,6 +301,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library) - $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library) -+$(objpfx)tst-resolv-semi-failure: $(objpfx)libresolv.so \ -+ $(shared-thread-library) - $(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \ - $(shared-thread-library) - $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library) -diff --git a/resolv/res_send.c b/resolv/res_send.c -index 572e72c32f..9c77613f37 100644 ---- a/resolv/res_send.c -+++ b/resolv/res_send.c -@@ -1238,7 +1238,7 @@ send_dg(res_state statp, - *resplen2 = 0; - return resplen; - } -- if (buf2 != NULL) -+ if (buf2 != NULL && !single_request) - { - /* No data from the first reply. */ - resplen = 0; -diff --git a/resolv/tst-resolv-semi-failure.c b/resolv/tst-resolv-semi-failure.c -new file mode 100644 -index 0000000000..aa9798b5a7 ---- /dev/null -+++ b/resolv/tst-resolv-semi-failure.c -@@ -0,0 +1,133 @@ -+/* Test parallel failure/success responses (bug 30081). -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+/* The rcode in the initial response. */ -+static volatile int rcode; -+ -+/* Whether to fail the initial A query (!fail_aaaa) or the initial -+ AAAA query (fail_aaaa). */ -+static volatile bool fail_aaaa; -+ -+static void -+response (const struct resolv_response_context *ctx, -+ struct resolv_response_builder *b, -+ const char *qname, uint16_t qclass, uint16_t qtype) -+{ -+ /* Handle the failing query. */ -+ if ((fail_aaaa && qtype == T_AAAA) && ctx->server_index == 0) -+ { -+ struct resolv_response_flags flags = {.rcode = rcode}; -+ resolv_response_init (b, flags); -+ return; -+ } -+ -+ /* Otherwise produce a response. */ -+ resolv_response_init (b, (struct resolv_response_flags) {}); -+ resolv_response_add_question (b, qname, qclass, qtype); -+ resolv_response_section (b, ns_s_an); -+ resolv_response_open_record (b, qname, qclass, qtype, 0); -+ switch (qtype) -+ { -+ case T_A: -+ { -+ char ipv4[4] = {192, 0, 2, 17}; -+ resolv_response_add_data (b, &ipv4, sizeof (ipv4)); -+ } -+ break; -+ case T_AAAA: -+ { -+ char ipv6[16] -+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; -+ resolv_response_add_data (b, &ipv6, sizeof (ipv6)); -+ } -+ break; -+ default: -+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype); -+ } -+ resolv_response_close_record (b); -+} -+ -+static void -+check_one (void) -+{ -+ -+ /* The buggy 1-second query timeout results in 30 seconds of delay, -+ which triggers are test timeout failure. */ -+ for (int i = 0; i < 30; ++i) -+ { -+ static const struct addrinfo hints = -+ { -+ .ai_family = AF_UNSPEC, -+ .ai_socktype = SOCK_STREAM, -+ }; -+ struct addrinfo *ai; -+ int ret = getaddrinfo ("www.example", "80", &hints, &ai); -+ const char *expected; -+ if (ret == 0 && ai->ai_next != NULL) -+ expected = ("address: STREAM/TCP 192.0.2.17 80\n" -+ "address: STREAM/TCP 2001:db8::1 80\n"); -+ else -+ /* Only one response because the AAAA lookup failure is -+ treated as an ignoreable error. */ -+ expected = "address: STREAM/TCP 192.0.2.17 80\n"; -+ check_addrinfo ("www.example", ai, ret, expected); -+ if (ret == 0) -+ freeaddrinfo (ai); -+ } -+} -+ -+static int -+do_test (void) -+{ -+ for (int do_single_lookup = 0; do_single_lookup < 2; ++do_single_lookup) -+ { -+ struct resolv_test *aux = resolv_test_start -+ ((struct resolv_redirect_config) -+ { -+ .response_callback = response, -+ }); -+ -+ if (do_single_lookup) -+ _res.options |= RES_SNGLKUP; -+ -+ for (int do_fail_aaaa = 0; do_fail_aaaa < 2; ++do_fail_aaaa) -+ { -+ fail_aaaa = do_fail_aaaa; -+ -+ rcode = 2; /* SERVFAIL. */ -+ check_one (); -+ -+ rcode = 4; /* NOTIMP. */ -+ check_one (); -+ -+ rcode = 5; /* REFUSED. */ -+ check_one (); -+ } -+ -+ resolv_test_end (aux); -+ } -+ -+ return 0; -+} -+ -+#include -diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c -index cf1e39876f..be354ae1c7 100644 ---- a/resolv/tst-resolv-short-response.c -+++ b/resolv/tst-resolv-short-response.c -@@ -81,6 +81,18 @@ check_one (void) - check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6), - "name: www.example\n" - "address: 2001:db8::1\n"); -+ static const struct addrinfo hints = -+ { -+ .ai_family = AF_UNSPEC, -+ .ai_socktype = SOCK_STREAM, -+ }; -+ struct addrinfo *ai; -+ int ret = getaddrinfo ("www.example", "80", &hints, &ai); -+ check_addrinfo ("www.example", ai, ret, -+ "address: STREAM/TCP 192.0.2.17 80\n" -+ "address: STREAM/TCP 2001:db8::1 80\n"); -+ if (ret == 0) -+ freeaddrinfo (ai); - } - } - - -commit b6aeba2de157ba0cdc8fb0aed67b632b3490f383 -Author: Florian Weimer -Date: Wed Jul 24 12:50:17 2024 +0200 - - manual: Do not mention STATIC_TLS in dynamic linker hardening recommendations - - The current toolchain does not consistently generate it, and - glibc does not use it. - - Reviewed-by: Szabolcs Nagy - (cherry picked from commit 90842d3980064ef410b998b22170ad409b76b9fd) - -diff --git a/manual/dynlink.texi b/manual/dynlink.texi -index 03565d4fb0..1500a53de6 100644 ---- a/manual/dynlink.texi -+++ b/manual/dynlink.texi -@@ -993,21 +993,21 @@ The dynamic segment should also mention @code{BIND_NOW} on the - enough). - - @item --For shared objects (not main programs), if the program header has a --@code{PT_TLS} segment, the dynamic segment (as shown by @samp{readelf ---dW}) should contain the @code{STATIC_TLS} flag on the @code{FLAGS} --line. -- --If @code{STATIC_TLS} is missing in shared objects, ensure that the --appropriate relocations for GNU2 TLS descriptors are used (for example, -+Ensure that only static TLS relocations (thread-pointer relative offset -+locations) are used, for example @code{R_AARCH64_TLS_TPREL} and -+@code{X86_64_TPOFF64}. As the second-best option, and only if -+compatibility with non-hardened applications using @code{dlopen} is -+needed, GNU2 TLS descriptor relocations can be used (for example, - @code{R_AARCH64_TLSDESC} or @code{R_X86_64_TLSDESC}). - - @item --There should not be a reference to the symbols @code{__tls_get_addr}, --@code{__tls_get_offset}, @code{__tls_get_addr_opt} in the dynamic symbol --table (in the @samp{readelf -sDW} output). Thread-local storage must be --accessed using the initial-exec (static) model, or using GNU2 TLS --descriptors. -+There should not be references to the traditional TLS function symbols -+@code{__tls_get_addr}, @code{__tls_get_offset}, -+@code{__tls_get_addr_opt} in the dynamic symbol table (in the -+@samp{readelf -sDW} output). Supporting global dynamic TLS relocations -+(such as @code{R_AARCH64_TLS_DTPMOD}, @code{R_AARCH64_TLS_DTPREL}, -+@code{R_X86_64_DTPMOD64}, @code{R_X86_64_DTPOFF64}) should not be used, -+either. - - @item - Likewise, the functions @code{dlopen}, @code{dlmopen}, @code{dlclose} - -commit 145b5886379c8de4f0a1bca3556a4c3d7b6c24b2 -Author: Florian Weimer -Date: Wed Jul 24 13:42:16 2024 +0200 - - Fix version number in NEWS file - -diff --git a/NEWS b/NEWS -index 4d7100b21c..6b62f55658 100644 ---- a/NEWS -+++ b/NEWS -@@ -5,7 +5,7 @@ See the end for copying conditions. - Please send GNU C library bug reports via - using `glibc' in the "product" field. - --Version 2.41 -+Version 2.40.1 - - The following bugs are resolved with this release: - - -commit 2aebac5e158277d852b87b0cbd4af2b2d10ac387 -Author: Miguel Martín -Date: Tue Jul 16 17:14:56 2024 +0200 - - malloc: avoid global locks in tst-aligned_alloc-lib.c - - Make sure the DSO used by aligned_alloc/calloc/malloc tests does not get - a global lock on multithreaded tests. - Reviewed-by: Arjun Shankar - - (cherry picked from commit 9a27b566b2048f599048f2f4afe1cce06c4ef43d) - -diff --git a/malloc/tst-aligned_alloc-lib.c b/malloc/tst-aligned_alloc-lib.c -index 0205df5acf..9ef1f839c1 100644 ---- a/malloc/tst-aligned_alloc-lib.c -+++ b/malloc/tst-aligned_alloc-lib.c -@@ -17,37 +17,38 @@ - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - --#include - #include - #include -+#include - - extern void *__libc_malloc (size_t size); - extern void *__libc_calloc (size_t n, size_t size); - -+__thread unsigned int seed = 0; -+ - int aligned_alloc_count = 0; - int libc_malloc_count = 0; - int libc_calloc_count = 0; - --/* Get a random alignment value. Biased towards the smaller values. Must be -- a power of 2. */ --static size_t get_random_alignment (void) --{ -- size_t aligns[] = { -- 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 -- }; -- -- return aligns[random () % array_length (aligns)]; --} -- --static void *get_random_alloc (size_t size) -+static void * -+get_random_alloc (size_t size) - { - void *retval; - size_t align; -+ struct timespec tp; -+ -+ if (seed == 0) -+ { -+ clock_gettime (CLOCK_REALTIME, &tp); -+ seed = tp.tv_nsec; -+ } - -- switch (random() % 3) -- { -+ switch (rand_r (&seed) % 3) -+ { - case 1: -- align = get_random_alignment (); -+ /* Get a random alignment value. Biased towards the smaller -+ * values up to 16384. Must be a power of 2. */ -+ align = 1 << rand_r (&seed) % 15; - retval = aligned_alloc (align, size); - aligned_alloc_count++; - break; -@@ -59,13 +60,13 @@ static void *get_random_alloc (size_t size) - retval = __libc_malloc (size); - libc_malloc_count++; - break; -- } -+ } - - return retval; - } - -- --void * __random_malloc (size_t size) -+void * -+__random_malloc (size_t size) - { - return get_random_alloc (size); - } - -commit 5d2a931a8167a288374c3a38dc10fe0492ab5ffe -Author: Miguel Martín -Date: Tue Jul 16 17:14:57 2024 +0200 - - malloc: add multi-threaded tests for aligned_alloc/calloc/malloc - - Improve aligned_alloc/calloc/malloc test coverage by adding - multi-threaded tests with random memory allocations and with/without - cross-thread memory deallocations. - - Perform a number of memory allocation calls with random sizes limited - to 0xffff. - - Use the existing DSO ('malloc/tst-aligned_alloc-lib.c') to randomize - allocator selection. - - The multi-threaded allocation/deallocation is staged as described below: - - - Stage 1: Half of the threads will be allocating memory and the - other half will be waiting for them to finish the allocation. - - Stage 2: Half of the threads will be allocating memory and the - other half will be deallocating memory. - - Stage 3: Half of the threads will be deallocating memory and the - second half waiting on them to finish. - - Add 'malloc/tst-aligned-alloc-random-thread.c' where each thread will - deallocate only the memory that was previously allocated by itself. - - Add 'malloc/tst-aligned-alloc-random-thread-cross.c' where each thread - will deallocate memory that was previously allocated by another thread. - - The intention is to be able to utilize existing malloc testing to ensure - that similar allocation APIs are also exposed to the same rigors. - Reviewed-by: Arjun Shankar - - (cherry picked from commit b0fbcb7d0051a68baf26b2aed51a8a31c34d68e5) - -diff --git a/malloc/Makefile b/malloc/Makefile -index 02aff1bd1d..98d507a6eb 100644 ---- a/malloc/Makefile -+++ b/malloc/Makefile -@@ -28,6 +28,8 @@ tests := \ - mallocbug \ - tst-aligned-alloc \ - tst-aligned-alloc-random \ -+ tst-aligned-alloc-random-thread \ -+ tst-aligned-alloc-random-thread-cross \ - tst-alloc_buffer \ - tst-calloc \ - tst-free-errno \ -@@ -151,6 +153,8 @@ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes) - # the tests expect specific internal behavior that is changed due to linking to - # libmcheck.a. - tests-exclude-mcheck = \ -+ tst-aligned-alloc-random-thread \ -+ tst-aligned-alloc-random-thread-cross \ - tst-compathooks-off \ - tst-compathooks-on \ - tst-malloc-backtrace \ -@@ -415,7 +419,11 @@ $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so - $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so - - $(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so -+$(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so -+$(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so - $(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so - - tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so -+tst-aligned-alloc-random-thread-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so -+tst-aligned-alloc-random-thread-cross-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so - tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so -diff --git a/malloc/tst-aligned-alloc-random-thread-cross.c b/malloc/tst-aligned-alloc-random-thread-cross.c -new file mode 100644 -index 0000000000..360ecc56ee ---- /dev/null -+++ b/malloc/tst-aligned-alloc-random-thread-cross.c -@@ -0,0 +1,19 @@ -+/* multi-threaded memory allocation and cross-thread deallocation test. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public License as -+ published by the Free Software Foundation; either version 2.1 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If -+ not, see . */ -+#define CROSS_THREAD_DEALLOC -+#include "tst-aligned-alloc-random-thread.c" -diff --git a/malloc/tst-aligned-alloc-random-thread.c b/malloc/tst-aligned-alloc-random-thread.c -new file mode 100644 -index 0000000000..e95f79250a ---- /dev/null -+++ b/malloc/tst-aligned-alloc-random-thread.c -@@ -0,0 +1,145 @@ -+/* multi-threaded memory allocation/deallocation test. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public License as -+ published by the Free Software Foundation; either version 2.1 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If -+ not, see . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#ifndef ITERATIONS -+# define ITERATIONS 16 -+#endif -+ -+#ifndef NUM_THREADS -+# define NUM_THREADS 8 -+#endif -+ -+#ifndef NUM_ALLOCATIONS -+# define NUM_ALLOCATIONS 2048 -+#endif -+ -+static pthread_barrier_t barrier; -+ -+__thread unsigned int seed; -+ -+typedef struct -+{ -+ int id; -+ pthread_t thread; -+} thread; -+ -+thread threads[NUM_THREADS]; -+ -+void *allocations[NUM_THREADS][NUM_ALLOCATIONS]; -+ -+void -+run_thread_dealloc (int id) -+{ -+ for (int i = 0; i < NUM_ALLOCATIONS; i++) -+ { -+ free (allocations[id][i]); -+ allocations[id][i] = NULL; -+ } -+} -+ -+void -+run_thread_alloc (int id) -+{ -+ size_t msb, size; -+ for (int i = 0; i < NUM_ALLOCATIONS; i++) -+ { -+ msb = 1 << rand_r (&seed) % 16; -+ size = msb + rand_r (&seed) % msb; -+ allocations[id][i] = malloc (size); -+ TEST_VERIFY_EXIT (allocations[id][i] != NULL); -+ } -+} -+ -+void * -+run_allocations (void *arg) -+{ -+ int id = *((int *) arg); -+ seed = time (NULL) + id; -+ -+ /* Stage 1: First half o the threads allocating memory and the second -+ * half waiting for them to finish -+ */ -+ if (id < NUM_THREADS / 2) -+ run_thread_alloc (id); -+ -+ xpthread_barrier_wait (&barrier); -+ -+ /* Stage 2: Half of the threads allocationg memory and the other -+ * half deallocating: -+ * - In the non cross-thread dealloc scenario the first half will be -+ * deallocating the memory allocated by themselves in stage 1 and the -+ * second half will be allocating memory. -+ * - In the cross-thread dealloc scenario the first half will continue -+ * to allocate memory and the second half will deallocate the memory -+ * allocated by the first half in stage 1. -+ */ -+ if (id < NUM_THREADS / 2) -+#ifndef CROSS_THREAD_DEALLOC -+ run_thread_dealloc (id); -+#else -+ run_thread_alloc (id + NUM_THREADS / 2); -+#endif -+ else -+#ifndef CROSS_THREAD_DEALLOC -+ run_thread_alloc (id); -+#else -+ run_thread_dealloc (id - NUM_THREADS / 2); -+#endif -+ -+ xpthread_barrier_wait (&barrier); -+ -+ // Stage 3: Second half of the threads deallocating and the first half -+ // waiting for them to finish. -+ if (id >= NUM_THREADS / 2) -+ run_thread_dealloc (id); -+ -+ return NULL; -+} -+ -+static int -+do_test (void) -+{ -+ xpthread_barrier_init (&barrier, NULL, NUM_THREADS); -+ -+ for (int i = 0; i < ITERATIONS; i++) -+ { -+ for (int t = 0; t < NUM_THREADS; t++) -+ { -+ threads[t].id = t; -+ threads[t].thread -+ = xpthread_create (NULL, run_allocations, &threads[t].id); -+ } -+ -+ for (int t = 0; t < NUM_THREADS; t++) -+ xpthread_join (threads[t].thread); -+ } -+ -+ return 0; -+} -+ -+#include - -commit 65fbcfe58991194301a7e4fb9c53ab936573e711 -Author: Arjun Shankar -Date: Mon Jul 29 14:30:59 2024 +0200 - - manual/stdio: Clarify putc and putwc - - The manual entry for `putc' described what "most systems" do instead of - describing the glibc implementation and its guarantees. This commit - fixes that by warning that putc may be implemented as a macro that - double-evaluates `stream', and removing the performance claim. - - Even though the current `putc' implementation does not double-evaluate - `stream', offering this obscure guarantee as an extension to what - POSIX allows does not seem very useful. - - The entry for `putwc' is also edited to bring it in line with `putc'. - Reviewed-by: Florian Weimer - - (cherry picked from commit 10de4a47ef3f481592e3c62eb07bcda23e9fde4d) - -diff --git a/manual/stdio.texi b/manual/stdio.texi -index f5e289d58a..f9529a098d 100644 ---- a/manual/stdio.texi -+++ b/manual/stdio.texi -@@ -903,21 +903,21 @@ This function is a GNU extension. - @deftypefun int putc (int @var{c}, FILE *@var{stream}) - @standards{ISO, stdio.h} - @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} --This is just like @code{fputc}, except that most systems implement it as -+This is just like @code{fputc}, except that it may be implemented as - a macro, making it faster. One consequence is that it may evaluate the - @var{stream} argument more than once, which is an exception to the --general rule for macros. @code{putc} is usually the best function to --use for writing a single character. -+general rule for macros. Therefore, @var{stream} should never be an -+expression with side-effects. - @end deftypefun - - @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream}) - @standards{ISO, wchar.h} - @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} --This is just like @code{fputwc}, except that it can be implement as -+This is just like @code{fputwc}, except that it may be implemented as - a macro, making it faster. One consequence is that it may evaluate the - @var{stream} argument more than once, which is an exception to the --general rule for macros. @code{putwc} is usually the best function to --use for writing a single wide character. -+general rule for macros. Therefore, @var{stream} should never be an -+expression with side-effects. - @end deftypefun - - @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream}) - -commit 132a72f93cb4ad9f16b8469dc061de5f75f6a44e -Author: Lukas Bulwahn -Date: Mon Jul 29 11:08:17 2024 +0200 - - manual: make setrlimit() description less ambiguous - - The existing description for setrlimit() has some ambiguity. It could be - understood to have the semantics of getrlimit(), i.e., the limits from the - process are stored in the provided rlp pointer. - - Make the description more explicit that rlp are the input values, and that - the limits of the process is changed with this function. - - Reviewed-by: Florian Weimer - (cherry picked from commit aedbf08891069fc029ed021e4dba933eb877b394) - -diff --git a/manual/resource.texi b/manual/resource.texi -index c9b21dedeb..25966bcb64 100644 ---- a/manual/resource.texi -+++ b/manual/resource.texi -@@ -192,8 +192,8 @@ If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a - @standards{BSD, sys/resource.h} - @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} - @c Direct syscall on most systems; lock-taking critical section on HURD. --Store the current and maximum limits for the resource @var{resource} --in @code{*@var{rlp}}. -+Change the current and maximum limits of the process for the resource -+@var{resource} to the values provided in @code{*@var{rlp}}. - - The return value is @code{0} on success and @code{-1} on failure. The - following @code{errno} error condition is possible: - -commit 509166c9a53ad81217a28cc67ba2a688f02fc477 -Author: Florian Weimer -Date: Wed Jun 26 11:27:54 2024 +0200 - - Enhance test coverage for strnlen, wcsnlen - - This commit adds string/test-strnlen-nonarray and - wcsmbs/test-wcsnlen-nonarray. - - Reviewed-by: Noah Goldstein - (cherry picked from commit 783d4c0b81889c39a9ddf13b60d0fde4040fb1c0) - -diff --git a/string/Makefile b/string/Makefile -index 8f31fa49e6..2e20fc00fd 100644 ---- a/string/Makefile -+++ b/string/Makefile -@@ -184,6 +184,7 @@ tests := \ - test-strncpy \ - test-strndup \ - test-strnlen \ -+ test-strnlen-nonarray \ - test-strpbrk \ - test-strrchr \ - test-strspn \ -diff --git a/string/test-Xnlen-nonarray.c b/string/test-Xnlen-nonarray.c -new file mode 100644 -index 0000000000..499bef2041 ---- /dev/null -+++ b/string/test-Xnlen-nonarray.c -@@ -0,0 +1,133 @@ -+/* Test non-array inputs to string length functions. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* This skeleton file is included from string/test-strnlen-nonarray.c -+ and wcsmbs/test-wcsnlen-nonarray.c to test that reading of the array -+ stops at the first null character. -+ -+ TEST_IDENTIFIER must be the test function identifier. TEST_NAME is -+ the same as a string. -+ -+ CHAR must be defined as the character type. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+typedef __typeof (TEST_IDENTIFIER) *proto_t; -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+IMPL (TEST_IDENTIFIER, 1) -+ -+static int -+test_main (void) -+{ -+ enum { buffer_length = 256 }; -+ TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length); -+ -+ test_init (); -+ -+ /* Buffer layout: There are a_count 'A' character followed by -+ zero_count null character, for a total of buffer_length -+ character: -+ -+ AAAAA...AAAAA 00000 ... 00000 (unmapped page follows) -+ \ / \ / -+ (a_count) (zero_count) -+ \___ (buffer_length) ___/ -+ ^ -+ | -+ start_offset -+ -+ The buffer length does not change, but a_count (and thus _zero) -+ and start_offset vary. -+ -+ If start_offset == buffer_length, only 0 is a valid length -+ argument. The result is 0. -+ -+ Otherwwise, if zero_count > 0 (if there a null characters in the -+ buffer), then any length argument is valid. If start_offset < -+ a_count (i.e., there is a non-null character at start_offset), the -+ result is the minimum of a_count - start_offset and the length -+ argument. Otherwise the result is 0. -+ -+ Otherwise, there are no null characters before the unmapped page. -+ The length argument must not be greater than buffer_length - -+ start_offset, and the result is the length argument. */ -+ -+ struct support_next_to_fault ntf -+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); -+ CHAR *buffer = (CHAR *) ntf.buffer; -+ -+ FOR_EACH_IMPL (impl, 0) -+ { -+ printf ("info: testing %s\n", impl->name); -+ for (size_t i = 0; i < buffer_length; ++i) -+ buffer[i] = 'A'; -+ -+ for (int zero_count = 0; zero_count <= buffer_length; ++zero_count) -+ { -+ if (zero_count > 0) -+ buffer[buffer_length - zero_count] = 0; -+ int a_count = buffer_length - zero_count; -+ for (int start_offset = 0; start_offset <= buffer_length; -+ ++start_offset) -+ { -+ CHAR *start_pointer = buffer + start_offset; -+ if (start_offset == buffer_length) -+ TEST_COMPARE (CALL (impl, buffer + start_offset, 0), 0); -+ else if (zero_count > 0) -+ for (int length_argument = 0; -+ length_argument <= 2 * buffer_length; -+ ++length_argument) -+ { -+ if (test_verbose) -+ printf ("zero_count=%d a_count=%d start_offset=%d" -+ " length_argument=%d\n", -+ zero_count, a_count, start_offset, -+ length_argument); -+ if (start_offset < a_count) -+ TEST_COMPARE (CALL (impl, start_pointer, length_argument), -+ MIN (a_count - start_offset, -+ length_argument)); -+ else -+ TEST_COMPARE (CALL (impl, start_pointer, length_argument), -+ 0); -+ } -+ else -+ for (int length_argument = 0; -+ length_argument <= buffer_length - start_offset; -+ ++length_argument) -+ TEST_COMPARE (CALL (impl, start_pointer, length_argument), -+ length_argument); -+ } -+ } -+ } -+ -+ support_next_to_fault_free (&ntf); -+ -+ return 0; -+} -+ -+#include -diff --git a/string/test-strnlen-nonarray.c b/string/test-strnlen-nonarray.c -new file mode 100644 -index 0000000000..0ad05756d9 ---- /dev/null -+++ b/string/test-strnlen-nonarray.c -@@ -0,0 +1,4 @@ -+#define TEST_IDENTIFIER strnlen -+#define TEST_NAME "strnlen" -+typedef char CHAR; -+#include "test-Xnlen-nonarray.c" -diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile -index 1cddd8cc6d..c51c9b4f1f 100644 ---- a/wcsmbs/Makefile -+++ b/wcsmbs/Makefile -@@ -160,6 +160,7 @@ tests := \ - test-wcsncmp \ - test-wcsncpy \ - test-wcsnlen \ -+ test-wcsnlen-nonarray \ - test-wcspbrk \ - test-wcsrchr \ - test-wcsspn \ -diff --git a/wcsmbs/test-wcsnlen-nonarray.c b/wcsmbs/test-wcsnlen-nonarray.c -new file mode 100644 -index 0000000000..a4b21fecd3 ---- /dev/null -+++ b/wcsmbs/test-wcsnlen-nonarray.c -@@ -0,0 +1,5 @@ -+#include -+#define TEST_IDENTIFIER wcsnlen -+#define TEST_NAME "wcsnlen" -+typedef wchar_t CHAR; -+#include "../string/test-Xnlen-nonarray.c" - -commit 46f19b234244f4654b9e3898ac1c27de86068222 -Author: Florian Weimer -Date: Thu Jun 27 16:26:56 2024 +0200 - - Enhanced test coverage for strncmp, wcsncmp - - Add string/test-strncmp-nonarray and - wcsmbs/test-wcsncmp-nonarray. - - This is the test that uncovered bug 31934. Test run time - is more than one minute on a fairly current system, so turn - these into xtests that do not run automatically. - - Reviewed-by: Noah Goldstein - (cherry picked from commit 54252394c25ddf0062e288d4a6ab7a885f8ae009) - -diff --git a/string/Makefile b/string/Makefile -index 2e20fc00fd..1dff405c27 100644 ---- a/string/Makefile -+++ b/string/Makefile -@@ -236,7 +236,10 @@ tests-unsupported += $(tests-translation) - endif - - # This test allocates a lot of memory and can run for a long time. --xtests = tst-strcoll-overflow -+xtests += tst-strcoll-overflow -+ -+# This test runs for a long time. -+xtests += test-strncmp-nonarray - - # This test needs libdl. - ifeq (yes,$(build-shared)) -diff --git a/string/test-Xncmp-nonarray.c b/string/test-Xncmp-nonarray.c -new file mode 100644 -index 0000000000..9f3a3ca75d ---- /dev/null -+++ b/string/test-Xncmp-nonarray.c -@@ -0,0 +1,183 @@ -+/* Test non-array inputs to string comparison functions. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* This skeleton file is included from string/test-strncmp-nonarray.c and -+ wcsmbs/test-wcsncmp-nonarray.c to test that reading of the arrays stops -+ at the first null character. -+ -+ TEST_IDENTIFIER must be the test function identifier. TEST_NAME is -+ the same as a string. -+ -+ CHAR must be defined as the character type. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* Much shorter than test-Xnlen-nonarray.c because of deeply nested loops. */ -+enum { buffer_length = 80 }; -+ -+/* The test buffer layout follows what is described test-Xnlen-nonarray.c, -+ except that there two buffers, left and right. The variables -+ a_count, zero_count, start_offset are all duplicated. */ -+ -+/* Return the maximum string length for a string that starts at -+ start_offset. */ -+static int -+string_length (int a_count, int start_offset) -+{ -+ if (start_offset == buffer_length || start_offset >= a_count) -+ return 0; -+ else -+ return a_count - start_offset; -+} -+ -+/* This is the valid maximum length argument computation for -+ strnlen/wcsnlen. See text-Xnlen-nonarray.c. */ -+static int -+maximum_length (int start_offset, int zero_count) -+{ -+ if (start_offset == buffer_length) -+ return 0; -+ else if (zero_count > 0) -+ /* Effectively unbounded, but we need to stop fairly low, -+ otherwise testing takes too long. */ -+ return buffer_length + 32; -+ else -+ return buffer_length - start_offset; -+} -+ -+typedef __typeof (TEST_IDENTIFIER) *proto_t; -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+IMPL (TEST_IDENTIFIER, 1) -+ -+static int -+test_main (void) -+{ -+ TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length); -+ test_init (); -+ -+ struct support_next_to_fault left_ntf -+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); -+ CHAR *left_buffer = (CHAR *) left_ntf.buffer; -+ struct support_next_to_fault right_ntf -+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); -+ CHAR *right_buffer = (CHAR *) right_ntf.buffer; -+ -+ FOR_EACH_IMPL (impl, 0) -+ { -+ printf ("info: testing %s\n", impl->name); -+ for (size_t i = 0; i < buffer_length; ++i) -+ left_buffer[i] = 'A'; -+ -+ for (int left_zero_count = 0; left_zero_count <= buffer_length; -+ ++left_zero_count) -+ { -+ if (left_zero_count > 0) -+ left_buffer[buffer_length - left_zero_count] = 0; -+ int left_a_count = buffer_length - left_zero_count; -+ for (size_t i = 0; i < buffer_length; ++i) -+ right_buffer[i] = 'A'; -+ for (int right_zero_count = 0; right_zero_count <= buffer_length; -+ ++right_zero_count) -+ { -+ if (right_zero_count > 0) -+ right_buffer[buffer_length - right_zero_count] = 0; -+ int right_a_count = buffer_length - right_zero_count; -+ for (int left_start_offset = 0; -+ left_start_offset <= buffer_length; -+ ++left_start_offset) -+ { -+ CHAR *left_start_pointer = left_buffer + left_start_offset; -+ int left_maxlen -+ = maximum_length (left_start_offset, left_zero_count); -+ int left_length -+ = string_length (left_a_count, left_start_offset); -+ for (int right_start_offset = 0; -+ right_start_offset <= buffer_length; -+ ++right_start_offset) -+ { -+ CHAR *right_start_pointer -+ = right_buffer + right_start_offset; -+ int right_maxlen -+ = maximum_length (right_start_offset, right_zero_count); -+ int right_length -+ = string_length (right_a_count, right_start_offset); -+ -+ /* Maximum length is modelled after strnlen/wcsnlen, -+ and must be valid for both pointer arguments at -+ the same time. */ -+ int maxlen = MIN (left_maxlen, right_maxlen); -+ -+ for (int length_argument = 0; length_argument <= maxlen; -+ ++length_argument) -+ { -+ if (test_verbose) -+ { -+ printf ("left: zero_count=%d" -+ " a_count=%d start_offset=%d\n", -+ left_zero_count, left_a_count, -+ left_start_offset); -+ printf ("right: zero_count=%d" -+ " a_count=%d start_offset=%d\n", -+ right_zero_count, right_a_count, -+ right_start_offset); -+ printf ("length argument: %d\n", -+ length_argument); -+ } -+ -+ /* Effective lengths bounded by length argument. -+ The effective length determines the -+ outcome of the comparison. */ -+ int left_effective -+ = MIN (left_length, length_argument); -+ int right_effective -+ = MIN (right_length, length_argument); -+ if (left_effective == right_effective) -+ TEST_COMPARE (CALL (impl, -+ left_start_pointer, -+ right_start_pointer, -+ length_argument), 0); -+ else if (left_effective < right_effective) -+ TEST_COMPARE (CALL (impl, -+ left_start_pointer, -+ right_start_pointer, -+ length_argument) < 0, 1); -+ else -+ TEST_COMPARE (CALL (impl, -+ left_start_pointer, -+ right_start_pointer, -+ length_argument) > 0, 1); -+ } -+ } -+ } -+ } -+ } -+ } -+ -+ return 0; -+} -+ -+#include -diff --git a/string/test-strncmp-nonarray.c b/string/test-strncmp-nonarray.c -new file mode 100644 -index 0000000000..581e52d01b ---- /dev/null -+++ b/string/test-strncmp-nonarray.c -@@ -0,0 +1,4 @@ -+#define TEST_IDENTIFIER strncmp -+#define TEST_NAME "strncmp" -+typedef char CHAR; -+#include "test-Xncmp-nonarray.c" -diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile -index c51c9b4f1f..63adf0e8ef 100644 ---- a/wcsmbs/Makefile -+++ b/wcsmbs/Makefile -@@ -206,6 +206,10 @@ tests := \ - wcsmbs-tst1 \ - # tests - -+# This test runs for a long time. -+xtests += test-wcsncmp-nonarray -+ -+ - include ../Rules - - ifeq ($(run-built-tests),yes) -diff --git a/wcsmbs/test-wcsncmp-nonarray.c b/wcsmbs/test-wcsncmp-nonarray.c -new file mode 100644 -index 0000000000..1ad9ebd8fd ---- /dev/null -+++ b/wcsmbs/test-wcsncmp-nonarray.c -@@ -0,0 +1,5 @@ -+#include -+#define TEST_IDENTIFIER wcsncmp -+#define TEST_NAME "wcsncmp" -+typedef wchar_t CHAR; -+#include "../string/test-Xncmp-nonarray.c" - -commit 3433a358428bcec2d203fa408b85f442c9a465ca -Author: H.J. Lu -Date: Wed Jul 24 14:05:13 2024 -0700 - - linux: Update the mremap C implementation [BZ #31968] - - Update the mremap C implementation to support the optional argument for - MREMAP_DONTUNMAP added in Linux 5.7 since it may not always be correct - to implement a variadic function as a non-variadic function on all Linux - targets. Return MAP_FAILED and set errno to EINVAL for unknown flag bits. - This fixes BZ #31968. - - Note: A test must be added when a new flag bit is introduced. - - Signed-off-by: H.J. Lu - Reviewed-by: Adhemerval Zanella - (cherry picked from commit 6c40cb0e9f893d49dc7caee580a055de53562206) - -diff --git a/NEWS b/NEWS -index 6b62f55658..5948704ef9 100644 ---- a/NEWS -+++ b/NEWS -@@ -11,6 +11,7 @@ The following bugs are resolved with this release: - - [30081] resolv: Do not wait for non-existing second DNS response after error - [31890] resolv: Allow short error responses to match any DNS query -+ [31968] mremap implementation in C does not handle arguments correctly - - Version 2.40 - -diff --git a/sysdeps/unix/sysv/linux/mremap.c b/sysdeps/unix/sysv/linux/mremap.c -index 4f770799c4..1ada5c1f40 100644 ---- a/sysdeps/unix/sysv/linux/mremap.c -+++ b/sysdeps/unix/sysv/linux/mremap.c -@@ -20,6 +20,12 @@ - #include - #include - #include -+#include -+ -+#define MREMAP_KNOWN_BITS \ -+ (MREMAP_MAYMOVE \ -+ | MREMAP_FIXED \ -+ | MREMAP_DONTUNMAP) - - void * - __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...) -@@ -27,7 +33,13 @@ __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...) - va_list va; - void *new_addr = NULL; - -- if (flags & MREMAP_FIXED) -+ if (flags & ~(MREMAP_KNOWN_BITS)) -+ { -+ __set_errno (EINVAL); -+ return MAP_FAILED; -+ } -+ -+ if (flags & (MREMAP_FIXED | MREMAP_DONTUNMAP)) - { - va_start (va, flags); - new_addr = va_arg (va, void *); - -commit 2eb2d78ca75d7432bd1d11d227f4c899554ea02e -Author: H.J. Lu -Date: Wed Jul 24 14:05:14 2024 -0700 - - mremap: Update manual entry - - Update mremap manual entry: - - 1. Change mremap to variadic. - 2. Document MREMAP_FIXED and MREMAP_DONTUNMAP. - - Signed-off-by: H.J. Lu - Reviewed-by: Adhemerval Zanella - (cherry picked from commit cb2dee4eccf46642eef588bee64f9c875c408f1c) - -diff --git a/NEWS b/NEWS -index 5948704ef9..8da0408ad9 100644 ---- a/NEWS -+++ b/NEWS -@@ -10,6 +10,7 @@ Version 2.40.1 - The following bugs are resolved with this release: - - [30081] resolv: Do not wait for non-existing second DNS response after error -+ [31968] mremap implementation in C does not handle arguments correctly - [31890] resolv: Allow short error responses to match any DNS query - [31968] mremap implementation in C does not handle arguments correctly - -diff --git a/manual/llio.texi b/manual/llio.texi -index 6f0a48609b..ea84196abd 100644 ---- a/manual/llio.texi -+++ b/manual/llio.texi -@@ -1892,7 +1892,7 @@ There is no existing mapping in at least part of the given region. - - @end deftypefun - --@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}) -+@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}, ... /* void *@var{new_address} */) - @standards{GNU, sys/mman.h} - @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} - -@@ -1901,12 +1901,40 @@ area. @var{address} and @var{length} must cover a region entirely mapped - in the same @code{mmap} statement. A new mapping with the same - characteristics will be returned with the length @var{new_length}. - --One option is possible, @code{MREMAP_MAYMOVE}. If it is given in --@var{flags}, the system may remove the existing mapping and create a new --one of the desired length in another location. -+Possible flags are - --The address of the resulting mapping is returned, or @math{-1}. Possible --error codes include: -+@table @code -+ -+@item MREMAP_MAYMOVE -+If it is given in @var{flags}, the system may remove the existing mapping -+and create a new one of the desired length in another location. -+ -+@item MREMAP_FIXED -+If it is given in @var{flags}, @code{mremap} accepts a fifth argument, -+@code{void *new_address}, which specifies a page-aligned address to -+which the mapping must be moved. Any previous mapping at the address -+range specified by @var{new_address} and @var{new_size} is unmapped. -+ -+@code{MREMAP_FIXED} must be used together with @code{MREMAP_MAYMOVE}. -+ -+@item MREMAP_DONTUNMAP -+If it is given in @var{flags}, @code{mremap} accepts a fifth argument, -+@code{void *new_address}, which specifies a page-aligned address. Any -+previous mapping at the address range specified by @var{new_address} and -+@var{new_size} is unmapped. If @var{new_address} is @code{NULL}, the -+kernel chooses the page-aligned address at which to create the mapping. -+Otherwise, the kernel takes it as a hint about where to place the mapping. -+The mapping at the address range specified by @var{old_address} and -+@var{old_size} isn't unmapped. -+ -+@code{MREMAP_DONTUNMAP} must be used together with @code{MREMAP_MAYMOVE}. -+@var{old_size} must be the same as @var{new_size}. This flag bit is -+Linux-specific. -+ -+@end table -+ -+The address of the resulting mapping is returned, or @code{MAP_FAILED}. -+Possible error codes include: - - @table @code - -@@ -1915,7 +1943,7 @@ There is no existing mapping in at least part of the original region, or - the region covers two or more distinct mappings. - - @item EINVAL --The address given is misaligned or inappropriate. -+Any arguments are inappropriate, including unknown @var{flags} values. - - @item EAGAIN - The region has pages locked, and if extended it would exceed the - -commit ca53bc68ab92ab413a7d53e951227d380a85ebd8 -Author: H.J. Lu -Date: Wed Jul 24 14:05:15 2024 -0700 - - Add mremap tests - - Add tests for MREMAP_MAYMOVE and MREMAP_FIXED. On Linux, also test - MREMAP_DONTUNMAP. - - Signed-off-by: H.J. Lu - Reviewed-by: Adhemerval Zanella - (cherry picked from commit ff0320bec2810192d453c579623482fab87bfa01) - -diff --git a/misc/Makefile b/misc/Makefile -index 5d17c562fe..7b7f8351bf 100644 ---- a/misc/Makefile -+++ b/misc/Makefile -@@ -257,6 +257,8 @@ tests := \ - tst-mntent-blank-passno \ - tst-mntent-escape \ - tst-mntent2 \ -+ tst-mremap1 \ -+ tst-mremap2 \ - tst-preadvwritev \ - tst-preadvwritev2 \ - tst-preadvwritev64 \ -diff --git a/misc/tst-mremap1.c b/misc/tst-mremap1.c -new file mode 100644 -index 0000000000..0469991a6c ---- /dev/null -+++ b/misc/tst-mremap1.c -@@ -0,0 +1,46 @@ -+/* Test mremap with MREMAP_MAYMOVE. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ size_t old_size = getpagesize (); -+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANONYMOUS, -1); -+ old_addr[0] = 1; -+ old_addr[old_size - 1] = 2; -+ -+ /* Test MREMAP_MAYMOVE. */ -+ size_t new_size = old_size + old_size; -+ char *new_addr = mremap (old_addr, old_size, new_size, MREMAP_MAYMOVE); -+ TEST_VERIFY_EXIT (new_addr != MAP_FAILED); -+ new_addr[0] = 1; -+ new_addr[new_size - 1] = 2; -+ xmunmap (new_addr, new_size); -+ -+ return 0; -+} -+ -+#include -diff --git a/misc/tst-mremap2.c b/misc/tst-mremap2.c -new file mode 100644 -index 0000000000..45be7f0369 ---- /dev/null -+++ b/misc/tst-mremap2.c -@@ -0,0 +1,54 @@ -+/* Test mremap with MREMAP_FIXED. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ size_t old_size = getpagesize (); -+ size_t new_size = old_size + old_size; -+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANONYMOUS, -1); -+ old_addr[0] = 1; -+ old_addr[old_size - 1] = 2; -+ -+ char *fixed_addr = xmmap (NULL, new_size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANONYMOUS, -1); -+ fixed_addr[0] = 1; -+ fixed_addr[new_size - 1] = 2; -+ -+ /* Test MREMAP_FIXED. */ -+ char *new_addr = mremap (old_addr, old_size, new_size, -+ MREMAP_FIXED | MREMAP_MAYMOVE, -+ fixed_addr); -+ if (new_addr == MAP_FAILED) -+ return mremap_failure_exit (errno); -+ new_addr[0] = 1; -+ new_addr[new_size - 1] = 2; -+ xmunmap (new_addr, new_size); -+ -+ return 0; -+} -+ -+#include -diff --git a/sysdeps/generic/mremap-failure.h b/sysdeps/generic/mremap-failure.h -new file mode 100644 -index 0000000000..bc0d476368 ---- /dev/null -+++ b/sysdeps/generic/mremap-failure.h -@@ -0,0 +1,25 @@ -+/* mremap failure handling. Generic version. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* Return exit value on mremap failure with errno ERR. */ -+ -+static int -+mremap_failure_exit (int err) -+{ -+ return EXIT_FAILURE; -+} -diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile -index 097b5a26fc..59998c7af4 100644 ---- a/sysdeps/unix/sysv/linux/Makefile -+++ b/sysdeps/unix/sysv/linux/Makefile -@@ -206,6 +206,7 @@ tests += \ - tst-getauxval \ - tst-gettid \ - tst-gettid-kill \ -+ tst-linux-mremap1 \ - tst-memfd_create \ - tst-misalign-clone \ - tst-mlock2 \ -diff --git a/sysdeps/unix/sysv/linux/mremap-failure.h b/sysdeps/unix/sysv/linux/mremap-failure.h -new file mode 100644 -index 0000000000..c99ab30ca9 ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/mremap-failure.h -@@ -0,0 +1,30 @@ -+/* mremap failure handling. Linux version. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+ -+/* Return exit value on mremap failure with errno ERR. */ -+ -+static int -+mremap_failure_exit (int err) -+{ -+ if (err != EINVAL) -+ return EXIT_FAILURE; -+ -+ return EXIT_UNSUPPORTED; -+} -diff --git a/sysdeps/unix/sysv/linux/tst-linux-mremap1.c b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c -new file mode 100644 -index 0000000000..408e8af2ab ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c -@@ -0,0 +1,63 @@ -+/* Test mremap with MREMAP_DONTUNMAP. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ size_t old_size = getpagesize (); -+ size_t new_size = old_size; -+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANONYMOUS, -1); -+ old_addr[0] = 1; -+ old_addr[old_size - 1] = 2; -+ -+ /* Create an available 64-page mmap region. */ -+ size_t fixed_size = old_size * 64; -+ char *fixed_addr = xmmap (NULL, fixed_size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANONYMOUS, -1); -+ xmunmap (fixed_addr, fixed_size); -+ -+ /* Add 3 * pagesize. */ -+ fixed_size += 3 * old_size; -+ -+ /* Test MREMAP_DONTUNMAP. It should return FIXED_ADDR created above. */ -+ char *new_addr = mremap (old_addr, old_size, new_size, -+ MREMAP_DONTUNMAP | MREMAP_MAYMOVE, -+ fixed_addr); -+ if (new_addr == MAP_FAILED) -+ return mremap_failure_exit (errno); -+ TEST_VERIFY_EXIT (fixed_addr == new_addr); -+ old_addr[0] = 3; -+ old_addr[old_size - 1] = 4; -+ new_addr[0] = 1; -+ new_addr[new_size - 1] = 2; -+ xmunmap (new_addr, new_size); -+ xmunmap (old_addr, old_size); -+ -+ return 0; -+} -+ -+#include - -commit 928769737c8f0cbb51dfa2a02de0594c2395d802 -Author: Florian Weimer -Date: Thu Aug 1 10:46:10 2024 +0200 - - resolv: Fix tst-resolv-short-response for older GCC (bug 32042) - - Previous GCC versions do not support the C23 change that - allows labels on declarations. - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit ec119972cb2598c04ec7d4219e20506006836f64) - -diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c -index be354ae1c7..9b06b0c176 100644 ---- a/resolv/tst-resolv-short-response.c -+++ b/resolv/tst-resolv-short-response.c -@@ -33,8 +33,10 @@ response (const struct resolv_response_context *ctx, - { - case 0: - /* First server times out. */ -- struct resolv_response_flags flags = {.rcode = rcode}; -- resolv_response_init (b, flags); -+ { -+ struct resolv_response_flags flags = {.rcode = rcode}; -+ resolv_response_init (b, flags); -+ } - break; - case 1: - /* Second server sends reply. */ - -commit aa533d58ff12e27771d9c960a727d74992a3f2a3 -Author: Florian Weimer -Date: Fri Aug 2 15:22:14 2024 +0200 - - x86: Tunables may incorrectly set Prefer_PMINUB_for_stringop (bug 32047) - - Fixes commit 5bcf6265f215326d14dfacdce8532792c2c7f8f8 ("x86: - Disable non-temporal memset on Skylake Server"). - - Reviewed-by: Noah Goldstein - (cherry picked from commit 7a630f7d3392ca391a399486ce2846f9e4b4ee63) - -diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c -index ae9dcd6180..ccc6b64dc2 100644 ---- a/sysdeps/x86/cpu-tunables.c -+++ b/sysdeps/x86/cpu-tunables.c -@@ -248,6 +248,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) - CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features, - Avoid_Non_Temporal_Memset, 25); - } -+ break; - case 26: - { - CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH - -commit 6a97e2ba144a554809161d488f25e4bae07c9405 -Author: Andreas Schwab -Date: Mon Aug 5 10:55:51 2024 +0200 - - Fix name space violation in fortify wrappers (bug 32052) - - Rename the identifier sz to __sz everywhere. - - Fixes: a643f60c53 ("Make sure that the fortified function conditionals are constant") - (cherry picked from commit 39ca997ab378990d5ac1aadbaa52aaf1db6d526f) - -diff --git a/NEWS b/NEWS -index 8da0408ad9..b9eb4a558b 100644 ---- a/NEWS -+++ b/NEWS -@@ -13,6 +13,7 @@ The following bugs are resolved with this release: - [31968] mremap implementation in C does not handle arguments correctly - [31890] resolv: Allow short error responses to match any DNS query - [31968] mremap implementation in C does not handle arguments correctly -+ [32052] Name space violation in fortify wrappers - - Version 2.40 - -diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h -index 91a80dd7c6..4b8bc35bdf 100644 ---- a/libio/bits/stdio2.h -+++ b/libio/bits/stdio2.h -@@ -308,14 +308,14 @@ fgets (__fortify_clang_overload_arg (char *, __restrict, __s), int __n, - "fgets called with bigger size than length of " - "destination buffer") - { -- size_t sz = __glibc_objsize (__s); -- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) -+ size_t __sz = __glibc_objsize (__s); -+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) - return __fgets_alias (__s, __n, __stream); - #if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, sizeof (char), sz)) -- return __fgets_chk_warn (__s, sz, __n, __stream); -+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) -+ return __fgets_chk_warn (__s, __sz, __n, __stream); - #endif -- return __fgets_chk (__s, sz, __n, __stream); -+ return __fgets_chk (__s, __sz, __n, __stream); - } - - __fortify_function __wur __nonnull ((4)) __attribute_overloadable__ size_t -@@ -326,14 +326,14 @@ fread (__fortify_clang_overload_arg (void *, __restrict, __ptr), - "fread called with bigger size * n than length " - "of destination buffer") - { -- size_t sz = __glibc_objsize0 (__ptr); -- if (__glibc_safe_or_unknown_len (__n, __size, sz)) -+ size_t __sz = __glibc_objsize0 (__ptr); -+ if (__glibc_safe_or_unknown_len (__n, __size, __sz)) - return __fread_alias (__ptr, __size, __n, __stream); - #if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, __size, sz)) -- return __fread_chk_warn (__ptr, sz, __size, __n, __stream); -+ if (__glibc_unsafe_len (__n, __size, __sz)) -+ return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); - #endif -- return __fread_chk (__ptr, sz, __size, __n, __stream); -+ return __fread_chk (__ptr, __sz, __size, __n, __stream); - } - - #ifdef __USE_GNU -@@ -345,14 +345,14 @@ fgets_unlocked (__fortify_clang_overload_arg (char *, __restrict, __s), - "fgets called with bigger size than length of " - "destination buffer") - { -- size_t sz = __glibc_objsize (__s); -- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) -+ size_t __sz = __glibc_objsize (__s); -+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) - return __fgets_unlocked_alias (__s, __n, __stream); - #if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, sizeof (char), sz)) -- return __fgets_unlocked_chk_warn (__s, sz, __n, __stream); -+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) -+ return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); - #endif -- return __fgets_unlocked_chk (__s, sz, __n, __stream); -+ return __fgets_unlocked_chk (__s, __sz, __n, __stream); - } - #endif - -@@ -366,8 +366,8 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr), - "fread_unlocked called with bigger size * n than " - "length of destination buffer") - { -- size_t sz = __glibc_objsize0 (__ptr); -- if (__glibc_safe_or_unknown_len (__n, __size, sz)) -+ size_t __sz = __glibc_objsize0 (__ptr); -+ if (__glibc_safe_or_unknown_len (__n, __size, __sz)) - { - # ifdef __USE_EXTERN_INLINES - if (__builtin_constant_p (__size) -@@ -393,10 +393,10 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr), - return __fread_unlocked_alias (__ptr, __size, __n, __stream); - } - # if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, __size, sz)) -- return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream); -+ if (__glibc_unsafe_len (__n, __size, __sz)) -+ return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); - # endif -- return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream); -+ return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); - - } - #endif -diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h -index 04780f320e..bd91647f37 100644 ---- a/socket/bits/socket2.h -+++ b/socket/bits/socket2.h -@@ -37,14 +37,14 @@ recv (int __fd, __fortify_clang_overload_arg0 (void *, ,__buf), size_t __n, - "recv called with bigger length than " - "size of destination buffer") - { -- size_t sz = __glibc_objsize0 (__buf); -- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) -+ size_t __sz = __glibc_objsize0 (__buf); -+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) - return __recv_alias (__fd, __buf, __n, __flags); - #if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, sizeof (char), sz)) -- return __recv_chk_warn (__fd, __buf, __n, sz, __flags); -+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) -+ return __recv_chk_warn (__fd, __buf, __n, __sz, __flags); - #endif -- return __recv_chk (__fd, __buf, __n, sz, __flags); -+ return __recv_chk (__fd, __buf, __n, __sz, __flags); - } - - extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, -@@ -71,13 +71,13 @@ recvfrom (int __fd, __fortify_clang_overload_arg0 (void *, __restrict, __buf), - "recvfrom called with bigger length " - "than size of destination buffer") - { -- size_t sz = __glibc_objsize0 (__buf); -- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) -+ size_t __sz = __glibc_objsize0 (__buf); -+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) - return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); - #if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, sizeof (char), sz)) -- return __recvfrom_chk_warn (__fd, __buf, __n, sz, __flags, __addr, -+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) -+ return __recvfrom_chk_warn (__fd, __buf, __n, __sz, __flags, __addr, - __addr_len); - #endif -- return __recvfrom_chk (__fd, __buf, __n, sz, __flags, __addr, __addr_len); -+ return __recvfrom_chk (__fd, __buf, __n, __sz, __flags, __addr, __addr_len); - } -diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h -index 1557b862b1..9c78ecf458 100644 ---- a/stdlib/bits/stdlib.h -+++ b/stdlib/bits/stdlib.h -@@ -43,16 +43,16 @@ __NTH (realpath (const char *__restrict __name, - "bytes long buffer") - #endif - { -- size_t sz = __glibc_objsize (__resolved); -+ size_t __sz = __glibc_objsize (__resolved); - -- if (sz == (size_t) -1) -+ if (__sz == (size_t) -1) - return __realpath_alias (__name, __resolved); - - #if !__fortify_use_clang && defined _LIBC_LIMITS_H_ && defined PATH_MAX -- if (__glibc_unsafe_len (PATH_MAX, sizeof (char), sz)) -- return __realpath_chk_warn (__name, __resolved, sz); -+ if (__glibc_unsafe_len (PATH_MAX, sizeof (char), __sz)) -+ return __realpath_chk_warn (__name, __resolved, __sz); - #endif -- return __realpath_chk (__name, __resolved, sz); -+ return __realpath_chk (__name, __resolved, __sz); - } - - -diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h -index 9fdff47ee2..43c6b63027 100644 ---- a/wcsmbs/bits/wchar2.h -+++ b/wcsmbs/bits/wchar2.h -@@ -74,9 +74,9 @@ __fortify_function __attribute_overloadable__ wchar_t * - __NTH (wcscpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), - const wchar_t *__restrict __src)) - { -- size_t sz = __glibc_objsize (__dest); -- if (sz != (size_t) -1) -- return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t)); -+ size_t __sz = __glibc_objsize (__dest); -+ if (__sz != (size_t) -1) -+ return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); - return __wcscpy_alias (__dest, __src); - } - -@@ -84,9 +84,9 @@ __fortify_function __attribute_overloadable__ wchar_t * - __NTH (wcpcpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), - const wchar_t *__restrict __src)) - { -- size_t sz = __glibc_objsize (__dest); -- if (sz != (size_t) -1) -- return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t)); -+ size_t __sz = __glibc_objsize (__dest); -+ if (__sz != (size_t) -1) -+ return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); - return __wcpcpy_alias (__dest, __src); - } - -@@ -118,9 +118,9 @@ __fortify_function __attribute_overloadable__ wchar_t * - __NTH (wcscat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), - const wchar_t *__restrict __src)) - { -- size_t sz = __glibc_objsize (__dest); -- if (sz != (size_t) -1) -- return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t)); -+ size_t __sz = __glibc_objsize (__dest); -+ if (__sz != (size_t) -1) -+ return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); - return __wcscat_alias (__dest, __src); - } - -@@ -128,9 +128,9 @@ __fortify_function __attribute_overloadable__ wchar_t * - __NTH (wcsncat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), - const wchar_t *__restrict __src, size_t __n)) - { -- size_t sz = __glibc_objsize (__dest); -- if (sz != (size_t) -1) -- return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t)); -+ size_t __sz = __glibc_objsize (__dest); -+ if (__sz != (size_t) -1) -+ return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); - return __wcsncat_alias (__dest, __src, __n); - } - -@@ -170,10 +170,10 @@ __fortify_function int - __NTH (swprintf (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __fmt, ...)) - { -- size_t sz = __glibc_objsize (__s); -- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) -+ size_t __sz = __glibc_objsize (__s); -+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) - return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, -- sz / sizeof (wchar_t), __fmt, __va_arg_pack ()); -+ __sz / sizeof (wchar_t), __fmt, __va_arg_pack ()); - return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ()); - } - #elif __fortify_use_clang -@@ -206,10 +206,10 @@ __fortify_function int - __NTH (vswprintf (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __fmt, __gnuc_va_list __ap)) - { -- size_t sz = __glibc_objsize (__s); -- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) -+ size_t __sz = __glibc_objsize (__s); -+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) - return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, -- sz / sizeof (wchar_t), __fmt, __ap); -+ __sz / sizeof (wchar_t), __fmt, __ap); - return __vswprintf_alias (__s, __n, __fmt, __ap); - } - -@@ -257,14 +257,14 @@ fgetws (__fortify_clang_overload_arg (wchar_t *, __restrict, __s), int __n, - "fgetws called with length bigger " - "than size of destination buffer") - { -- size_t sz = __glibc_objsize (__s); -- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz)) -+ size_t __sz = __glibc_objsize (__s); -+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz)) - return __fgetws_alias (__s, __n, __stream); - #if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz)) -- return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream); -+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz)) -+ return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); - #endif -- return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream); -+ return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); - } - - #ifdef __USE_GNU -@@ -275,15 +275,15 @@ fgetws_unlocked (__fortify_clang_overload_arg (wchar_t *, __restrict, __s), - "fgetws_unlocked called with length bigger " - "than size of destination buffer") - { -- size_t sz = __glibc_objsize (__s); -- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz)) -+ size_t __sz = __glibc_objsize (__s); -+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz)) - return __fgetws_unlocked_alias (__s, __n, __stream); - # if !__fortify_use_clang -- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz)) -- return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n, -+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz)) -+ return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, - __stream); - # endif -- return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream); -+ return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); - } - #endif - - -commit 5641780762723156b0d20a0b9f7df1d76831bab0 -Author: Arjun Shankar -Date: Tue Jul 30 11:37:57 2024 +0200 - - manual/stdio: Further clarify putc, putwc, getc, and getwc - - This is a follow-up to 10de4a47ef3f481592e3c62eb07bcda23e9fde4d that - reworded the manual entries for putc and putwc and removed any - performance claims. - - This commit further clarifies these entries and brings getc and getwc in - line with the descriptions of putc and putwc, removing any performance - claims from them as well. - Reviewed-by: Florian Weimer - - (cherry picked from commit 942670c81dc8071dd75d6213e771daa5d2084cb6) - -diff --git a/manual/stdio.texi b/manual/stdio.texi -index f9529a098d..8517653507 100644 ---- a/manual/stdio.texi -+++ b/manual/stdio.texi -@@ -904,20 +904,16 @@ This function is a GNU extension. - @standards{ISO, stdio.h} - @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} - This is just like @code{fputc}, except that it may be implemented as --a macro, making it faster. One consequence is that it may evaluate the --@var{stream} argument more than once, which is an exception to the --general rule for macros. Therefore, @var{stream} should never be an --expression with side-effects. -+a macro and may evaluate the @var{stream} argument more than once. -+Therefore, @var{stream} should never be an expression with side-effects. - @end deftypefun - - @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream}) - @standards{ISO, wchar.h} - @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} - This is just like @code{fputwc}, except that it may be implemented as --a macro, making it faster. One consequence is that it may evaluate the --@var{stream} argument more than once, which is an exception to the --general rule for macros. Therefore, @var{stream} should never be an --expression with side-effects. -+a macro and may evaluate the @var{stream} argument more than once. -+Therefore, @var{stream} should never be an expression with side-effects. - @end deftypefun - - @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream}) -@@ -1110,20 +1106,17 @@ This function is a GNU extension. - @deftypefun int getc (FILE *@var{stream}) - @standards{ISO, stdio.h} - @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}} --This is just like @code{fgetc}, except that it is permissible (and --typical) for it to be implemented as a macro that evaluates the --@var{stream} argument more than once. @code{getc} is often highly --optimized, so it is usually the best function to use to read a single --character. -+This is just like @code{fgetc}, except that it may be implemented as -+a macro and may evaluate the @var{stream} argument more than once. -+Therefore, @var{stream} should never be an expression with side-effects. - @end deftypefun - - @deftypefun wint_t getwc (FILE *@var{stream}) - @standards{ISO, wchar.h} - @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}} --This is just like @code{fgetwc}, except that it is permissible for it to --be implemented as a macro that evaluates the @var{stream} argument more --than once. @code{getwc} can be highly optimized, so it is usually the --best function to use to read a single wide character. -+This is just like @code{fgetwc}, except that it may be implemented as -+a macro and may evaluate the @var{stream} argument more than once. -+Therefore, @var{stream} should never be an expression with side-effects. - @end deftypefun - - @deftypefun int getc_unlocked (FILE *@var{stream}) - -commit 39ee60a719eb6ffde76ccc232d79273c473d7a93 -Author: Florian Weimer -Date: Fri Aug 9 17:01:17 2024 +0200 - - support: Add options list terminator to the test driver - - This avoids crashes if a test is passed unknown options. - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit c2a474f4617ede7a8bf56b7257acb37dc757b2d1) - -diff --git a/support/test-driver.c b/support/test-driver.c -index f4c3e4d666..04ceebc08f 100644 ---- a/support/test-driver.c -+++ b/support/test-driver.c -@@ -155,6 +155,7 @@ main (int argc, char **argv) - { - CMDLINE_OPTIONS - TEST_DEFAULT_OPTIONS -+ { 0, } - }; - test_config.options = &options; - #endif - -commit e3556937c2402b8acf2e586bf53168e9f482ba91 -Author: H.J. Lu -Date: Mon Jul 22 17:47:21 2024 -0700 - - x86-64: Remove sysdeps/x86_64/x32/dl-machine.h - - Remove sysdeps/x86_64/x32/dl-machine.h by folding x32 ARCH_LA_PLTENTER, - ARCH_LA_PLTEXIT and RTLD_START into sysdeps/x86_64/dl-machine.h. There - are no regressions on x86-64 nor x32. There are no changes in x86-64 - _dl_start_user. On x32, _dl_start_user changes are - - <_dl_start_user>: - mov %eax,%r12d - + mov %esp,%r13d - mov (%rsp),%edx - mov %edx,%esi - - mov %esp,%r13d - and $0xfffffff0,%esp - mov 0x0(%rip),%edi # <_dl_start_user+0x14> - lea 0x8(%r13,%rdx,4),%ecx - - Signed-off-by: H.J. Lu - Reviewed-by: Noah Goldstein - (cherry picked from commit 652c6cf26927352fc0e37e4e60c6fc98ddf6d3b4) - -diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h -index a6de3793e4..4f12955875 100644 ---- a/sysdeps/x86_64/dl-machine.h -+++ b/sysdeps/x86_64/dl-machine.h -@@ -139,37 +139,37 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[], - .globl _start\n\ - .globl _dl_start_user\n\ - _start:\n\ -- movq %rsp, %rdi\n\ -+ mov %" RSP_LP ", %" RDI_LP "\n\ - call _dl_start\n\ - _dl_start_user:\n\ - # Save the user entry point address in %r12.\n\ -- movq %rax, %r12\n\ -+ mov %" RAX_LP ", %" R12_LP "\n\ - # Save %rsp value in %r13.\n\ -- movq %rsp, %r13\n\ -+ mov %" RSP_LP ", % " R13_LP "\n\ - "\ - RTLD_START_ENABLE_X86_FEATURES \ - "\ - # Read the original argument count.\n\ -- movq (%rsp), %rdx\n\ -+ mov (%rsp), %" RDX_LP "\n\ - # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ - # argc -> rsi\n\ -- movq %rdx, %rsi\n\ -+ mov %" RDX_LP ", %" RSI_LP "\n\ - # And align stack for the _dl_init call. \n\ -- andq $-16, %rsp\n\ -+ and $-16, %" RSP_LP "\n\ - # _dl_loaded -> rdi\n\ -- movq _rtld_local(%rip), %rdi\n\ -+ mov _rtld_local(%rip), %" RDI_LP "\n\ - # env -> rcx\n\ -- leaq 16(%r13,%rdx,8), %rcx\n\ -+ lea 2*" LP_SIZE "(%r13,%rdx," LP_SIZE "), %" RCX_LP "\n\ - # argv -> rdx\n\ -- leaq 8(%r13), %rdx\n\ -+ lea " LP_SIZE "(%r13), %" RDX_LP "\n\ - # Clear %rbp to mark outermost frame obviously even for constructors.\n\ - xorl %ebp, %ebp\n\ - # Call the function to run the initializers.\n\ - call _dl_init\n\ - # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\ -- leaq _dl_fini(%rip), %rdx\n\ -+ lea _dl_fini(%rip), %" RDX_LP "\n\ - # And make sure %rsp points to argc stored on the stack.\n\ -- movq %r13, %rsp\n\ -+ mov %" R13_LP ", %" RSP_LP "\n\ - # Jump to the user's entry point.\n\ - jmp *%r12\n\ - .previous\n\ -@@ -234,8 +234,13 @@ elf_machine_plt_value (struct link_map *map, const ElfW(Rela) *reloc, - - - /* Names of the architecture-specific auditing callback functions. */ -+#ifdef __LP64__ - #define ARCH_LA_PLTENTER x86_64_gnu_pltenter - #define ARCH_LA_PLTEXIT x86_64_gnu_pltexit -+#else -+#define ARCH_LA_PLTENTER x32_gnu_pltenter -+#define ARCH_LA_PLTEXIT x32_gnu_pltexit -+#endif - - #endif /* !dl_machine_h */ - -diff --git a/sysdeps/x86_64/x32/dl-machine.h b/sysdeps/x86_64/x32/dl-machine.h -deleted file mode 100644 -index c35cee9261..0000000000 ---- a/sysdeps/x86_64/x32/dl-machine.h -+++ /dev/null -@@ -1,76 +0,0 @@ --/* Machine-dependent ELF dynamic relocation inline functions. x32 version. -- Copyright (C) 2012-2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --/* Must allow to be included more than once. -- See #ifdef RESOLVE_MAP in sysdeps/x86_64/dl-machine.h. */ --#include -- --#ifndef _X32_DL_MACHINE_H --#define _X32_DL_MACHINE_H -- --#undef ARCH_LA_PLTENTER --#undef ARCH_LA_PLTEXIT --#undef RTLD_START -- --/* Names of the architecture-specific auditing callback functions. */ --#define ARCH_LA_PLTENTER x32_gnu_pltenter --#define ARCH_LA_PLTEXIT x32_gnu_pltexit -- --/* Initial entry point code for the dynamic linker. -- The C function `_dl_start' is the real entry point; -- its return value is the user program's entry point. */ --#define RTLD_START asm ("\n\ --.text\n\ -- .p2align 4\n\ --.globl _start\n\ --.globl _dl_start_user\n\ --_start:\n\ -- movl %esp, %edi\n\ -- call _dl_start\n\ --_dl_start_user:\n\ -- # Save the user entry point address in %r12.\n\ -- movl %eax, %r12d\n\ -- # Read the original argument count.\n\ -- movl (%rsp), %edx\n\ -- # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ -- # argc -> rsi\n\ -- movl %edx, %esi\n\ -- # Save %rsp value in %r13.\n\ -- movl %esp, %r13d\n\ -- # And align stack for the _dl_init call.\n\ -- and $-16, %esp\n\ -- # _dl_loaded -> rdi\n\ -- movl _rtld_local(%rip), %edi\n\ -- # env -> rcx\n\ -- lea 8(%r13,%rdx,4), %ecx\n\ -- # argv -> rdx\n\ -- lea 4(%r13), %edx\n\ -- # Clear %rbp to mark outermost frame obviously even for constructors.\n\ -- xorl %ebp, %ebp\n\ -- # Call the function to run the initializers.\n\ -- call _dl_init\n\ -- # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\ -- lea _dl_fini(%rip), %edx\n\ -- # And make sure %rsp points to argc stored on the stack.\n\ -- movl %r13d, %esp\n\ -- # Jump to the user's entry point.\n\ -- jmp *%r12\n\ --.previous\n\ --"); -- --#endif /* !_X32_DL_MACHINE_H */ - -commit 898f25e0b1026be5701d05715600be646e9d0714 -Author: H.J. Lu -Date: Mon Jul 22 17:47:22 2024 -0700 - - x32/cet: Support shadow stack during startup for Linux 6.10 - - Use RXX_LP in RTLD_START_ENABLE_X86_FEATURES. Support shadow stack during - startup for Linux 6.10: - - commit 2883f01ec37dd8668e7222dfdb5980c86fdfe277 - Author: H.J. Lu - Date: Fri Mar 15 07:04:33 2024 -0700 - - x86/shstk: Enable shadow stacks for x32 - - 1. Add shadow stack support to x32 signal. - 2. Use the 64-bit map_shadow_stack syscall for x32. - 3. Set up shadow stack for x32. - - Add the map_shadow_stack system call to and regenerate - arch-syscall.h. Tested on Intel Tiger Lake with CET enabled x32. There - are no regressions with CET enabled x86-64. There are no changes in CET - enabled x86-64 _dl_start_user. - - Signed-off-by: H.J. Lu - Reviewed-by: Noah Goldstein - (cherry picked from commit 8344c1f5514b1b5b1c8c6e48f4b802653bd23b71) - -diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h -index 1fe3133406..b4f7e6c9cd 100644 ---- a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h -+++ b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h -@@ -92,9 +92,9 @@ dl_cet_ibt_enabled (void) - # Pass GL(dl_x86_feature_1) to _dl_cet_setup_features.\n\ - movl %edx, %edi\n\ - # Align stack for the _dl_cet_setup_features call.\n\ -- andq $-16, %rsp\n\ -+ and $-16, %" RSP_LP "\n\ - call _dl_cet_setup_features\n\ - # Restore %rax and %rsp from %r12 and %r13.\n\ -- movq %r12, %rax\n\ -- movq %r13, %rsp\n\ -+ mov %" R12_LP ", %" RAX_LP "\n\ -+ mov %" R13_LP ", %" RSP_LP "\n\ - " -diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h -index 3040a47d72..df3e22236d 100644 ---- a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h -+++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h -@@ -155,6 +155,7 @@ - #define __NR_lsm_set_self_attr 1073742284 - #define __NR_lstat 1073741830 - #define __NR_madvise 1073741852 -+#define __NR_map_shadow_stack 1073742277 - #define __NR_mbind 1073742061 - #define __NR_membarrier 1073742148 - #define __NR_memfd_create 1073742143 -diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h -index 98124169e6..47fa8af4ce 100644 ---- a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h -+++ b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h -@@ -15,6 +15,10 @@ - License along with the GNU C Library; if not, see - . */ - -+#ifndef __NR_map_shadow_stack -+# define __NR_map_shadow_stack 1073742277 -+#endif -+ - /* X32 uses the same 64-bit syscall interface for set_thread_area. */ - #ifndef __NR_set_thread_area - # define __NR_set_thread_area 1073742029 - -commit c0af0c2ba016030c778bc22c55f5f9498f96b8b9 -Author: Noah Goldstein -Date: Tue Aug 13 23:29:14 2024 +0800 - - x86: Fix bug in strchrnul-evex512 [BZ #32078] - - Issue was we were expecting not matches with CHAR before the start of - the string in the page cross case. - - The check code in the page cross case: - ``` - and $0xffffffffffffffc0,%rax - vmovdqa64 (%rax),%zmm17 - vpcmpneqb %zmm17,%zmm16,%k1 - vptestmb %zmm17,%zmm17,%k0{%k1} - kmovq %k0,%rax - inc %rax - shr %cl,%rax - je L(continue) - ``` - - expects that all characters that neither match null nor CHAR will be - 1s in `rax` prior to the `inc`. Then the `inc` will overflow all of - the 1s where no relevant match was found. - - This is incorrect in the page-cross case, as the - `vmovdqa64 (%rax),%zmm17` loads from before the start of the input - string. - - If there are matches with CHAR before the start of the string, `rax` - won't properly overflow. - - The fix is quite simple. Just replace: - - ``` - inc %rax - shr %cl,%rax - ``` - With: - ``` - sar %cl,%rax - inc %rax - ``` - - The arithmetic shift will clear any matches prior to the start of the - string while maintaining the signbit so the 1s can properly overflow - to zero in the case of no matches. - Reviewed-by: H.J. Lu - - (cherry picked from commit 7da08862471dfec6fdae731c2a5f351ad485c71f) - -diff --git a/string/test-strchr.c b/string/test-strchr.c -index c795eac6fa..72b17af687 100644 ---- a/string/test-strchr.c -+++ b/string/test-strchr.c -@@ -255,6 +255,69 @@ check1 (void) - check_result (impl, s, c, exp_result); - } - -+static void -+check2 (void) -+{ -+ CHAR *s = (CHAR *) (buf1 + getpagesize () - 4 * sizeof (CHAR)); -+ CHAR *s_begin = (CHAR *) (buf1 + getpagesize () - 64); -+#ifndef USE_FOR_STRCHRNUL -+ CHAR *exp_result = NULL; -+#else -+ CHAR *exp_result = s + 1; -+#endif -+ CHAR val = 0x12; -+ for (; s_begin != s; ++s_begin) -+ *s_begin = val; -+ -+ s[0] = val + 1; -+ s[1] = 0; -+ s[2] = val + 1; -+ s[3] = val + 1; -+ -+ { -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s, val, exp_result); -+ } -+ s[3] = val; -+ { -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s, val, exp_result); -+ } -+ exp_result = s; -+ s[0] = val; -+ { -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s, val, exp_result); -+ } -+ -+ s[3] = val + 1; -+ { -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s, val, exp_result); -+ } -+ -+ s[0] = val + 1; -+ s[1] = val + 1; -+ s[2] = val + 1; -+ s[3] = val + 1; -+ s[4] = val; -+ exp_result = s + 4; -+ { -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s, val, exp_result); -+ } -+ s[4] = 0; -+#ifndef USE_FOR_STRCHRNUL -+ exp_result = NULL; -+#else -+ exp_result = s + 4; -+#endif -+ { -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s, val, exp_result); -+ } -+} -+ - int - test_main (void) - { -@@ -263,7 +326,7 @@ test_main (void) - test_init (); - - check1 (); -- -+ check2 (); - printf ("%20s", ""); - FOR_EACH_IMPL (impl, 0) - printf ("\t%s", impl->name); -diff --git a/sysdeps/x86_64/multiarch/strchr-evex-base.S b/sysdeps/x86_64/multiarch/strchr-evex-base.S -index 04e2c0e79e..3a0b7c9d64 100644 ---- a/sysdeps/x86_64/multiarch/strchr-evex-base.S -+++ b/sysdeps/x86_64/multiarch/strchr-evex-base.S -@@ -124,13 +124,13 @@ L(page_cross): - VPCMPNE %VMM(1), %VMM(0), %k1 - VPTEST %VMM(1), %VMM(1), %k0{%k1} - KMOV %k0, %VRAX --# ifdef USE_AS_WCSCHR -+ sar %cl, %VRAX -+#ifdef USE_AS_WCSCHR - sub $VEC_MATCH_MASK, %VRAX --# else -+#else - inc %VRAX --# endif -+#endif - /* Ignore number of character for alignment adjustment. */ -- shr %cl, %VRAX - jz L(align_more) - - bsf %VRAX, %VRAX - -commit 586e4cd8c67df95ebb0bfecea3d007bff618d6d9 -Author: Florian Weimer -Date: Fri Aug 9 16:17:14 2024 +0200 - - Define __libc_initial for the static libc - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit eb0e50e9a1cf80a2ba6f33f990a08ef37a3267fb) - -diff --git a/include/libc-internal.h b/include/libc-internal.h -index 87ac591835..1ef43ffe67 100644 ---- a/include/libc-internal.h -+++ b/include/libc-internal.h -@@ -53,6 +53,9 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden; - is not for an audit module, not loaded via dlmopen, and not loaded - via static dlopen either). */ - extern _Bool __libc_initial attribute_hidden; -+#else -+/* The static libc is always the initial namespace. */ -+# define __libc_initial ((_Bool) 1) - #endif - - #endif /* _LIBC_INTERNAL */ - -commit 709319f9de6f976f9feceb623cb2c96769e9d78b -Author: Florian Weimer -Date: Mon Aug 19 15:48:03 2024 +0200 - - string: strerror, strsignal cannot use buffer after dlmopen (bug 32026) - - Secondary namespaces have a different malloc. Allocating the - buffer in one namespace and freeing it another results in - heap corruption. Fix this by using a static string (potentially - translated) in secondary namespaces. It would also be possible - to use the malloc from the initial namespace to manage the - buffer, but these functions would still not be safe to use in - auditors etc. because a call to strerror could still free a - buffer while it is used by the application. Another approach - could use proper initial-exec TLS, duplicated in secondary - namespaces, but that would need a callback interface for freeing - libc resources in namespaces on thread exit, which does not exist - today. - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit 25a5eb4010df94b412c67db9e346029de316d06b) - -diff --git a/NEWS b/NEWS -index b9eb4a558b..10a125bc66 100644 ---- a/NEWS -+++ b/NEWS -@@ -13,6 +13,7 @@ The following bugs are resolved with this release: - [31968] mremap implementation in C does not handle arguments correctly - [31890] resolv: Allow short error responses to match any DNS query - [31968] mremap implementation in C does not handle arguments correctly -+ [32026] strerror/strsignal TLS not handled correctly for secondary namespaces - [32052] Name space violation in fortify wrappers - - Version 2.40 -diff --git a/string/strerror_l.c b/string/strerror_l.c -index 15cce261e6..70456e5bb4 100644 ---- a/string/strerror_l.c -+++ b/string/strerror_l.c -@@ -20,7 +20,7 @@ - #include - #include - #include -- -+#include - - static const char * - translate (const char *str, locale_t loc) -@@ -31,6 +31,12 @@ translate (const char *str, locale_t loc) - return res; - } - -+static char * -+unknown_error (locale_t loc) -+{ -+ return (char *) translate ("Unknown error", loc); -+} -+ - - /* Return a string describing the errno code in ERRNUM. */ - char * -@@ -40,18 +46,25 @@ __strerror_l (int errnum, locale_t loc) - char *err = (char *) __get_errlist (errnum); - if (__glibc_unlikely (err == NULL)) - { -- struct tls_internal_t *tls_internal = __glibc_tls_internal (); -- free (tls_internal->strerror_l_buf); -- if (__asprintf (&tls_internal->strerror_l_buf, "%s%d", -- translate ("Unknown error ", loc), errnum) > 0) -- err = tls_internal->strerror_l_buf; -- else -+ if (__libc_initial) - { -- /* The memory was freed above. */ -- tls_internal->strerror_l_buf = NULL; -- /* Provide a fallback translation. */ -- err = (char *) translate ("Unknown error", loc); -+ struct tls_internal_t *tls_internal = __glibc_tls_internal (); -+ free (tls_internal->strerror_l_buf); -+ if (__asprintf (&tls_internal->strerror_l_buf, "%s%d", -+ translate ("Unknown error ", loc), errnum) > 0) -+ err = tls_internal->strerror_l_buf; -+ else -+ { -+ /* The memory was freed above. */ -+ tls_internal->strerror_l_buf = NULL; -+ /* Provide a fallback translation. */ -+ err = unknown_error (loc); -+ } - } -+ else -+ /* Secondary namespaces use a different malloc, so cannot -+ participate in the buffer management. */ -+ err = unknown_error (loc); - } - else - err = (char *) translate (err, loc); -diff --git a/string/strsignal.c b/string/strsignal.c -index 3114601564..d9b0365468 100644 ---- a/string/strsignal.c -+++ b/string/strsignal.c -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - - /* Return a string describing the meaning of the signal number SIGNUM. */ - char * -@@ -30,21 +31,28 @@ strsignal (int signum) - if (desc != NULL) - return _(desc); - -- struct tls_internal_t *tls_internal = __glibc_tls_internal (); -- free (tls_internal->strsignal_buf); -+ if (__libc_initial) -+ { -+ struct tls_internal_t *tls_internal = __glibc_tls_internal (); -+ free (tls_internal->strsignal_buf); - -- int r; -+ int r; - #ifdef SIGRTMIN -- if (signum >= SIGRTMIN && signum <= SIGRTMAX) -- r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"), -- signum - SIGRTMIN); -- else -+ if (signum >= SIGRTMIN && signum <= SIGRTMAX) -+ r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"), -+ signum - SIGRTMIN); -+ else - #endif -- r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"), -- signum); -- -- if (r == -1) -- tls_internal->strsignal_buf = NULL; -- -- return tls_internal->strsignal_buf; -+ r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"), -+ signum); -+ -+ if (r >= 0) -+ return tls_internal->strsignal_buf; -+ else -+ tls_internal->strsignal_buf = NULL; -+ } -+ /* Fall through on asprintf error, and for !__libc_initial: -+ secondary namespaces use a different malloc and cannot -+ participate in the buffer management. */ -+ return _("Unknown signal"); - } - -commit bc240ba7c86a74bc64d4234feadb49bb8e36e1c9 -Author: Maciej W. Rozycki -Date: Fri Jul 26 13:21:34 2024 +0100 - - support: Add FAIL test failure helper - - Add a FAIL test failure helper analogous to FAIL_RET, that does not - cause the current function to return, providing a standardized way to - report a test failure with a message supplied while permitting the - caller to continue executing, for further reporting, cleaning up, etc. - - Update existing test cases that provide a conflicting definition of FAIL - by removing the local FAIL definition and then as follows: - - - tst-fortify-syslog: provide a meaningful message in addition to the - file name already added by ; 'support_record_failure' - is already called by 'support_print_failure_impl' invoked by the new - FAIL test failure helper. - - - tst-ctype: no update to FAIL calls required, with the name of the file - and the line number within of the failure site additionally included - by the new FAIL test failure helper, and error counting plus count - reporting upon test program termination also already provided by - 'support_record_failure' and 'support_report_failure' respectively, - called by 'support_print_failure_impl' and 'adjust_exit_status' also - respectively. However in a number of places 'printf' is called and - the error count adjusted by hand, so update these places to make use - of FAIL instead. And last but not least adjust the final summary just - to report completion, with any error count following as reported by - the test driver. - - - test-tgmath2: no update to FAIL calls required, with the name of the - file of the failure site additionally included by the new FAIL test - failure helper. Also there is no need to track the return status by - hand as any call to FAIL will eventually cause the test case to return - an unsuccesful exit status regardless of the return status from the - test function, via a call to 'adjust_exit_status' made by the test - driver. - - Reviewed-by: DJ Delorie - (cherry picked from commit 1b97a9f23bf605ca608162089c94187573fb2a9e) - -diff --git a/debug/tst-fortify-syslog.c b/debug/tst-fortify-syslog.c -index a7ddbf7c6b..2712acf689 100644 ---- a/debug/tst-fortify-syslog.c -+++ b/debug/tst-fortify-syslog.c -@@ -22,7 +22,6 @@ - #include - #include - #include --#include - - #include - #include -@@ -46,18 +45,13 @@ handler (int sig) - _exit (127); - } - --#define FAIL() \ -- do { \ -- printf ("Failure on line %d\n", __LINE__); \ -- support_record_failure (); \ -- } while (0) - #define CHK_FAIL_START \ - chk_fail_ok = 1; \ - if (! setjmp (chk_fail_buf)) \ - { - #define CHK_FAIL_END \ - chk_fail_ok = 0; \ -- FAIL (); \ -+ FAIL ("not supposed to reach here"); \ - } - - static void -diff --git a/localedata/tst-ctype.c b/localedata/tst-ctype.c -index 9de979a2d7..a23689719c 100644 ---- a/localedata/tst-ctype.c -+++ b/localedata/tst-ctype.c -@@ -21,6 +21,8 @@ - #include - #include - -+#include -+ - - static const char lower[] = "abcdefghijklmnopqrstuvwxyz"; - static const char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; -@@ -53,19 +55,11 @@ static struct classes - #define nclasses (sizeof (classes) / sizeof (classes[0])) - - --#define FAIL(str, args...) \ -- { \ -- printf (" " str "\n", ##args); \ -- ++errors; \ -- } -- -- - static int - do_test (void) - { - const char *cp; - const char *cp2; -- int errors = 0; - char *inpline = NULL; - size_t inplinelen = 0; - char *resline = NULL; -@@ -394,11 +388,8 @@ punct = %04x alnum = %04x\n", - { - if (((__ctype_b[(unsigned int) *inp] & classes[n].mask) != 0) - != (*resp != '0')) -- { -- printf (" is%s('%c' = '\\x%02x') %s true\n", inpline, -- *inp, *inp, *resp == '1' ? "not" : "is"); -- ++errors; -- } -+ FAIL (" is%s('%c' = '\\x%02x') %s true\n", inpline, -+ *inp, *inp, *resp == '1' ? "not" : "is"); - ++inp; - ++resp; - } -@@ -408,11 +399,8 @@ punct = %04x alnum = %04x\n", - while (*inp != '\0') - { - if (tolower (*inp) != *resp) -- { -- printf (" tolower('%c' = '\\x%02x') != '%c'\n", -- *inp, *inp, *resp); -- ++errors; -- } -+ FAIL (" tolower('%c' = '\\x%02x') != '%c'\n", -+ *inp, *inp, *resp); - ++inp; - ++resp; - } -@@ -422,11 +410,8 @@ punct = %04x alnum = %04x\n", - while (*inp != '\0') - { - if (toupper (*inp) != *resp) -- { -- printf (" toupper('%c' = '\\x%02x') != '%c'\n", -- *inp, *inp, *resp); -- ++errors; -- } -+ FAIL (" toupper('%c' = '\\x%02x') != '%c'\n", -+ *inp, *inp, *resp); - ++inp; - ++resp; - } -@@ -436,14 +421,7 @@ punct = %04x alnum = %04x\n", - } - - -- if (errors != 0) -- { -- printf (" %d error%s for `%s' locale\n\n\n", errors, -- errors == 1 ? "" : "s", setlocale (LC_ALL, NULL)); -- return 1; -- } -- -- printf (" No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL)); -+ printf ("Completed testing for `%s' locale\n\n\n", setlocale (LC_ALL, NULL)); - return 0; - } - -diff --git a/math/test-tgmath2.c b/math/test-tgmath2.c -index 37afa8a08a..4aeb877b8e 100644 ---- a/math/test-tgmath2.c -+++ b/math/test-tgmath2.c -@@ -24,6 +24,8 @@ - #include - #include - -+#include -+ - //#define DEBUG - - typedef complex float cfloat; -@@ -87,13 +89,6 @@ enum - int count; - int counts[Tlast][C_last]; - --#define FAIL(str) \ -- do \ -- { \ -- printf ("%s failure on line %d\n", (str), __LINE__); \ -- result = 1; \ -- } \ -- while (0) - #define TEST_TYPE_ONLY(expr, rettype) \ - do \ - { \ -@@ -133,8 +128,6 @@ int counts[Tlast][C_last]; - int - test_cos (const int Vint4, const long long int Vllong4) - { -- int result = 0; -- - TEST (cos (vfloat1), float, cos); - TEST (cos (vdouble1), double, cos); - TEST (cos (vldouble1), ldouble, cos); -@@ -152,7 +145,7 @@ test_cos (const int Vint4, const long long int Vllong4) - TEST (cos (Vcdouble1), cdouble, cos); - TEST (cos (Vcldouble1), cldouble, cos); - -- return result; -+ return 0; - } - - int -diff --git a/support/check.h b/support/check.h -index 711f34b83b..7ea22c7a2c 100644 ---- a/support/check.h -+++ b/support/check.h -@@ -24,6 +24,11 @@ - - __BEGIN_DECLS - -+/* Record a test failure, print the failure message to standard output -+ and pass the result of 1 through. */ -+#define FAIL(...) \ -+ support_print_failure_impl (__FILE__, __LINE__, __VA_ARGS__) -+ - /* Record a test failure, print the failure message to standard output - and return 1. */ - #define FAIL_RET(...) \ - -commit 27fb563bfee521239316142fa4968282bffa86a6 -Author: Maciej W. Rozycki -Date: Fri Jul 26 13:21:34 2024 +0100 - - stdio-common: Add test for vfscanf with matches longer than INT_MAX [BZ #27650] - - Complement commit b03e4d7bd25b ("stdio: fix vfscanf with matches longer - than INT_MAX (bug 27650)") and add a test case for the issue, inspired - by the reproducer provided with the bug report. - - This has been verified to succeed as from the commit referred and fail - beforehand. - - As the test requires 2GiB of data to be passed around its performance - has been evaluated using a choice of systems and the execution time - determined to be respectively in the range of 9s for POWER9@2.166GHz, - 24s for FU740@1.2GHz, and 40s for 74Kf@950MHz. As this is on the verge - of and beyond the default timeout it has been increased by the factor of - 8. Regardless, following recent practice the test has been added to the - standard rather than extended set. - - Reviewed-by: DJ Delorie - (cherry picked from commit 89cddc8a7096f3d9225868304d2bc0a1aaf07d63) - -diff --git a/stdio-common/Makefile b/stdio-common/Makefile -index a63c05a120..e4f0146d2c 100644 ---- a/stdio-common/Makefile -+++ b/stdio-common/Makefile -@@ -240,6 +240,7 @@ tests := \ - tst-scanf-binary-c23 \ - tst-scanf-binary-gnu11 \ - tst-scanf-binary-gnu89 \ -+ tst-scanf-bz27650 \ - tst-scanf-intn \ - tst-scanf-round \ - tst-scanf-to_inpunct \ -@@ -328,6 +329,7 @@ generated += \ - tst-printf-fp-free.mtrace \ - tst-printf-fp-leak-mem.out \ - tst-printf-fp-leak.mtrace \ -+ tst-scanf-bz27650.mtrace \ - tst-vfprintf-width-prec-mem.out \ - tst-vfprintf-width-prec.mtrace \ - # generated -@@ -419,6 +421,9 @@ tst-printf-fp-free-ENV = \ - tst-printf-fp-leak-ENV = \ - MALLOC_TRACE=$(objpfx)tst-printf-fp-leak.mtrace \ - LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so -+tst-scanf-bz27650-ENV = \ -+ MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \ -+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so - - $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc - $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ -diff --git a/stdio-common/tst-scanf-bz27650.c b/stdio-common/tst-scanf-bz27650.c -new file mode 100644 -index 0000000000..3a742bc865 ---- /dev/null -+++ b/stdio-common/tst-scanf-bz27650.c -@@ -0,0 +1,108 @@ -+/* Test for BZ #27650, formatted input matching beyond INT_MAX. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include -+#include -+ -+/* Produce a stream of more than INT_MAX characters via buffer BUF of -+ size SIZE according to bookkeeping in COOKIE and then return EOF. */ -+ -+static ssize_t -+io_read (void *cookie, char *buf, size_t size) -+{ -+ unsigned int *written = cookie; -+ unsigned int w = *written; -+ -+ if (w > INT_MAX) -+ return 0; -+ -+ memset (buf, 'a', size); -+ *written = w + size; -+ return size; -+} -+ -+/* Consume a stream of more than INT_MAX characters from an artificial -+ input stream of which none is the new line character. The call to -+ fscanf is supposed to complete upon the EOF condition of input, -+ however in the presence of BZ #27650 it will terminate prematurely -+ with characters still outstanding in input. Diagnose the condition -+ and return status accordingly. */ -+ -+int -+do_test (void) -+{ -+ static cookie_io_functions_t io_funcs = { .read = io_read }; -+ unsigned int written = 0; -+ FILE *in; -+ int v; -+ -+ mtrace (); -+ -+ in = fopencookie (&written, "r", io_funcs); -+ if (in == NULL) -+ { -+ FAIL ("fopencookie: %m"); -+ goto out; -+ } -+ -+ v = fscanf (in, "%*[^\n]"); -+ if (ferror (in)) -+ { -+ FAIL ("fscanf: input failure, at %u: %m", written); -+ goto out_close; -+ } -+ else if (v == EOF) -+ { -+ FAIL ("fscanf: unexpected end of file, at %u", written); -+ goto out_close; -+ } -+ -+ if (!feof (in)) -+ { -+ v = fgetc (in); -+ if (ferror (in)) -+ FAIL ("fgetc: input failure: %m"); -+ else if (v == EOF) -+ FAIL ("fgetc: unexpected end of file after missing end of file"); -+ else if (v == '\n') -+ FAIL ("unexpected new line character received"); -+ else -+ FAIL ("character received after end of file expected: \\x%02x", v); -+ } -+ -+out_close: -+ if (fclose (in) != 0) -+ FAIL ("fclose: %m"); -+ -+out: -+ return EXIT_SUCCESS; -+} -+ -+#define TIMEOUT (DEFAULT_TIMEOUT * 8) -+#include - -commit 2f749d2b15cbc82268d7f8735f21ae1e3b68754f -Author: Siddhesh Poyarekar -Date: Wed Aug 14 19:20:04 2024 -0400 - - Make tst-ungetc use libsupport - - Signed-off-by: Siddhesh Poyarekar - Reviewed-by: Carlos O'Donell - (cherry picked from commit 3f7df7e757f4efec38e45d4068e5492efcac4856) - -diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c -index 1344b2b591..5c808f0734 100644 ---- a/stdio-common/tst-ungetc.c -+++ b/stdio-common/tst-ungetc.c -@@ -1,70 +1,72 @@ --/* Test for ungetc bugs. */ -+/* Test for ungetc bugs. -+ Copyright (C) 1996-2024 Free Software Foundation, Inc. -+ Copyright The GNU Toolchain Authors. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ - - #include - #include --#include -- --#undef assert --#define assert(x) \ -- if (!(x)) \ -- { \ -- fputs ("test failed: " #x "\n", stderr); \ -- retval = 1; \ -- goto the_end; \ -- } -+#include -+#include -+#include -+#include -+#include - --int --main (int argc, char *argv[]) -+static int -+do_test (void) - { -- char name[] = "/tmp/tst-ungetc.XXXXXX"; -+ char *name = NULL; - FILE *fp = NULL; -- int retval = 0; - int c; - char buffer[64]; - -- int fd = mkstemp (name); -+ int fd = create_temp_file ("tst-ungetc.", &name); - if (fd == -1) -- { -- printf ("mkstemp failed: %m\n"); -- return 1; -- } -- close (fd); -- fp = fopen (name, "w"); -- assert (fp != NULL) -- fputs ("bla", fp); -- fclose (fp); -- fp = NULL; -+ FAIL_EXIT1 ("cannot create temporary file: %m"); -+ xclose (fd); - -- fp = fopen (name, "r"); -- assert (fp != NULL); -- assert (ungetc ('z', fp) == 'z'); -- assert (getc (fp) == 'z'); -- assert (getc (fp) == 'b'); -- assert (getc (fp) == 'l'); -- assert (ungetc ('m', fp) == 'm'); -- assert (getc (fp) == 'm'); -- assert ((c = getc (fp)) == 'a'); -- assert (getc (fp) == EOF); -- assert (ungetc (c, fp) == c); -- assert (feof (fp) == 0); -- assert (getc (fp) == c); -- assert (getc (fp) == EOF); -- fclose (fp); -- fp = NULL; -+ fp = xfopen (name, "w"); -+ fputs ("bla", fp); -+ xfclose (fp); - -- fp = fopen (name, "r"); -- assert (fp != NULL); -- assert (getc (fp) == 'b'); -- assert (getc (fp) == 'l'); -- assert (ungetc ('b', fp) == 'b'); -- assert (fread (buffer, 1, 64, fp) == 2); -- assert (buffer[0] == 'b'); -- assert (buffer[1] == 'a'); -+ fp = xfopen (name, "r"); -+ TEST_VERIFY_EXIT (ungetc ('z', fp) == 'z'); -+ TEST_VERIFY_EXIT (getc (fp) == 'z'); -+ TEST_VERIFY_EXIT (getc (fp) == 'b'); -+ TEST_VERIFY_EXIT (getc (fp) == 'l'); -+ TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm'); -+ TEST_VERIFY_EXIT (getc (fp) == 'm'); -+ TEST_VERIFY_EXIT ((c = getc (fp)) == 'a'); -+ TEST_VERIFY_EXIT (getc (fp) == EOF); -+ TEST_VERIFY_EXIT (ungetc (c, fp) == c); -+ TEST_VERIFY_EXIT (feof (fp) == 0); -+ TEST_VERIFY_EXIT (getc (fp) == c); -+ TEST_VERIFY_EXIT (getc (fp) == EOF); -+ xfclose (fp); - --the_end: -- if (fp != NULL) -- fclose (fp); -- unlink (name); -+ fp = xfopen (name, "r"); -+ TEST_VERIFY_EXIT (getc (fp) == 'b'); -+ TEST_VERIFY_EXIT (getc (fp) == 'l'); -+ TEST_VERIFY_EXIT (ungetc ('b', fp) == 'b'); -+ TEST_VERIFY_EXIT (fread (buffer, 1, 64, fp) == 2); -+ TEST_VERIFY_EXIT (buffer[0] == 'b'); -+ TEST_VERIFY_EXIT (buffer[1] == 'a'); -+ xfclose (fp); - -- return retval; -+ return 0; - } -+ -+#include - -commit dac7a0694b5e853f08be518cd5a133ac5804666d -Author: Siddhesh Poyarekar -Date: Tue Aug 13 21:00:06 2024 -0400 - - ungetc: Fix uninitialized read when putting into unused streams [BZ #27821] - - When ungetc is called on an unused stream, the backup buffer is - allocated without the main get area being present. This results in - every subsequent ungetc (as the stream remains in the backup area) - checking uninitialized memory in the backup buffer when trying to put a - character back into the stream. - - Avoid comparing the input character with buffer contents when in backup - to avoid this uninitialized read. The uninitialized read is harmless in - this context since the location is promptly overwritten with the input - character, thus fulfilling ungetc functionality. - - Also adjust wording in the manual to drop the paragraph that says glibc - cannot do multiple ungetc back to back since with this change, ungetc - can actually do this. - - Signed-off-by: Siddhesh Poyarekar - Reviewed-by: Carlos O'Donell - (cherry picked from commit cdf0f88f97b0aaceb894cc02b21159d148d7065c) - -diff --git a/libio/genops.c b/libio/genops.c -index 99f5e80f20..b012fa33d2 100644 ---- a/libio/genops.c -+++ b/libio/genops.c -@@ -662,7 +662,7 @@ _IO_sputbackc (FILE *fp, int c) - { - int result; - -- if (fp->_IO_read_ptr > fp->_IO_read_base -+ if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp) - && (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c) - { - fp->_IO_read_ptr--; -diff --git a/manual/stdio.texi b/manual/stdio.texi -index 8517653507..92614775fa 100644 ---- a/manual/stdio.texi -+++ b/manual/stdio.texi -@@ -1467,11 +1467,9 @@ program; usually @code{ungetc} is used only to unread a character that - was just read from the same stream. @Theglibc{} supports this - even on files opened in binary mode, but other systems might not. - --@Theglibc{} only supports one character of pushback---in other --words, it does not work to call @code{ungetc} twice without doing input --in between. Other systems might let you push back multiple characters; --then reading from the stream retrieves the characters in the reverse --order that they were pushed. -+@Theglibc{} supports pushing back multiple characters; subsequently -+reading from the stream retrieves the characters in the reverse order -+that they were pushed. - - Pushing back characters doesn't alter the file; only the internal - buffering for the stream is affected. If a file positioning function -diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c -index 5c808f0734..388b202493 100644 ---- a/stdio-common/tst-ungetc.c -+++ b/stdio-common/tst-ungetc.c -@@ -48,6 +48,8 @@ do_test (void) - TEST_VERIFY_EXIT (getc (fp) == 'b'); - TEST_VERIFY_EXIT (getc (fp) == 'l'); - TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm'); -+ TEST_VERIFY_EXIT (ungetc ('n', fp) == 'n'); -+ TEST_VERIFY_EXIT (getc (fp) == 'n'); - TEST_VERIFY_EXIT (getc (fp) == 'm'); - TEST_VERIFY_EXIT ((c = getc (fp)) == 'a'); - TEST_VERIFY_EXIT (getc (fp) == EOF); - -commit e24902f409994f226dbc6fde2476009df452a18f -Author: Siddhesh Poyarekar -Date: Tue Aug 13 21:08:49 2024 -0400 - - ungetc: Fix backup buffer leak on program exit [BZ #27821] - - If a file descriptor is left unclosed and is cleaned up by _IO_cleanup - on exit, its backup buffer remains unfreed, registering as a leak in - valgrind. This is not strictly an issue since (1) the program should - ideally be closing the stream once it's not in use and (2) the program - is about to exit anyway, so keeping the backup buffer around a wee bit - longer isn't a real problem. Free it anyway to keep valgrind happy - when the streams in question are the standard ones, i.e. stdout, stdin - or stderr. - - Also, the _IO_have_backup macro checks for _IO_save_base, - which is a roundabout way to check for a backup buffer instead of - directly looking for _IO_backup_base. The roundabout check breaks when - the main get area has not been used and user pushes a char into the - backup buffer with ungetc. Fix this to use the _IO_backup_base - directly. - - Signed-off-by: Siddhesh Poyarekar - Reviewed-by: Carlos O'Donell - (cherry picked from commit 3e1d8d1d1dca24ae90df2ea826a8916896fc7e77) - -diff --git a/libio/genops.c b/libio/genops.c -index b012fa33d2..35d8b30710 100644 ---- a/libio/genops.c -+++ b/libio/genops.c -@@ -816,6 +816,12 @@ _IO_unbuffer_all (void) - legacy = 1; - #endif - -+ /* Free up the backup area if it was ever allocated. */ -+ if (_IO_have_backup (fp)) -+ _IO_free_backup_area (fp); -+ if (fp->_mode > 0 && _IO_have_wbackup (fp)) -+ _IO_free_wbackup_area (fp); -+ - if (! (fp->_flags & _IO_UNBUFFERED) - /* Iff stream is un-orientated, it wasn't used. */ - && (legacy || fp->_mode != 0)) -diff --git a/libio/libioP.h b/libio/libioP.h -index 1af287b19f..616253fcd0 100644 ---- a/libio/libioP.h -+++ b/libio/libioP.h -@@ -577,8 +577,8 @@ extern void _IO_old_init (FILE *fp, int flags) __THROW; - ((__fp)->_wide_data->_IO_write_base \ - = (__fp)->_wide_data->_IO_write_ptr = __p, \ - (__fp)->_wide_data->_IO_write_end = (__ep)) --#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL) --#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL) -+#define _IO_have_backup(fp) ((fp)->_IO_backup_base != NULL) -+#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_backup_base != NULL) - #define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP) - #define _IO_have_markers(fp) ((fp)->_markers != NULL) - #define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base) -diff --git a/stdio-common/Makefile b/stdio-common/Makefile -index e4f0146d2c..a91754f52d 100644 ---- a/stdio-common/Makefile -+++ b/stdio-common/Makefile -@@ -254,6 +254,7 @@ tests := \ - tst-swscanf \ - tst-tmpnam \ - tst-ungetc \ -+ tst-ungetc-leak \ - tst-unlockedio \ - tst-vfprintf-mbs-prec \ - tst-vfprintf-user-type \ -@@ -316,6 +317,7 @@ tests-special += \ - $(objpfx)tst-printf-bz25691-mem.out \ - $(objpfx)tst-printf-fp-free-mem.out \ - $(objpfx)tst-printf-fp-leak-mem.out \ -+ $(objpfx)tst-ungetc-leak-mem.out \ - $(objpfx)tst-vfprintf-width-prec-mem.out \ - # tests-special - -@@ -330,6 +332,8 @@ generated += \ - tst-printf-fp-leak-mem.out \ - tst-printf-fp-leak.mtrace \ - tst-scanf-bz27650.mtrace \ -+ tst-ungetc-leak-mem.out \ -+ tst-ungetc-leak.mtrace \ - tst-vfprintf-width-prec-mem.out \ - tst-vfprintf-width-prec.mtrace \ - # generated -@@ -424,6 +428,9 @@ tst-printf-fp-leak-ENV = \ - tst-scanf-bz27650-ENV = \ - MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \ - LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so -+tst-ungetc-leak-ENV = \ -+ MALLOC_TRACE=$(objpfx)tst-ungetc-leak.mtrace \ -+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so - - $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc - $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ -diff --git a/stdio-common/tst-ungetc-leak.c b/stdio-common/tst-ungetc-leak.c -new file mode 100644 -index 0000000000..6c5152b43f ---- /dev/null -+++ b/stdio-common/tst-ungetc-leak.c -@@ -0,0 +1,32 @@ -+/* Test for memory leak with ungetc when stream is unused. -+ Copyright The GNU Toolchain Authors. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ mtrace (); -+ TEST_COMPARE (ungetc('y', stdin), 'y'); -+ return 0; -+} -+ -+#include - -commit 3b3350d7baa8de70b71c02e964d5b8343749ebf8 -Author: Maciej W. Rozycki -Date: Fri Jul 26 13:21:34 2024 +0100 - - posix: Use facilities in tst-truncate and tst-truncate64 - - Remove local FAIL macro in favor to FAIL_RET from , - which provides equivalent reporting, with the name of the file of the - failure site additionally included, for the tst-truncate-common core - shared between the tst-truncate and tst-truncate64 tests. - - Reviewed-by: DJ Delorie - (cherry picked from commit fe47595504a55e7bb992f8928533df154b510383) - -diff --git a/posix/tst-truncate-common.c b/posix/tst-truncate-common.c -index b774fa46b8..b8c561ffdb 100644 ---- a/posix/tst-truncate-common.c -+++ b/posix/tst-truncate-common.c -@@ -21,6 +21,8 @@ - #include - #include - -+#include -+ - static void do_prepare (void); - #define PREPARE(argc, argv) do_prepare () - static int do_test (void); -@@ -42,9 +44,6 @@ do_prepare (void) - } - } - --#define FAIL(str) \ -- do { printf ("error: %s (line %d)\n", str, __LINE__); return 1; } while (0) -- - static int - do_test_with_offset (off_t offset) - { -@@ -54,35 +53,35 @@ do_test_with_offset (off_t offset) - memset (buf, 0xcf, sizeof (buf)); - - if (pwrite (temp_fd, buf, sizeof (buf), offset) != sizeof (buf)) -- FAIL ("write failed"); -+ FAIL_RET ("write failed"); - if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + sizeof (buf))) -- FAIL ("initial size wrong"); -+ FAIL_RET ("initial size wrong"); - - if (ftruncate (temp_fd, offset + 800) < 0) -- FAIL ("size reduction with ftruncate failed"); -+ FAIL_RET ("size reduction with ftruncate failed"); - if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) -- FAIL ("size after reduction with ftruncate is incorrect"); -+ FAIL_RET ("size after reduction with ftruncate is incorrect"); - - /* The following test covers more than POSIX. POSIX does not require - that ftruncate() can increase the file size. But we are testing - Unix systems. */ - if (ftruncate (temp_fd, offset + 1200) < 0) -- FAIL ("size increate with ftruncate failed"); -+ FAIL_RET ("size increate with ftruncate failed"); - if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) -- FAIL ("size after increase is incorrect"); -+ FAIL_RET ("size after increase is incorrect"); - - if (truncate (temp_filename, offset + 800) < 0) -- FAIL ("size reduction with truncate failed"); -+ FAIL_RET ("size reduction with truncate failed"); - if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) -- FAIL ("size after reduction with truncate incorrect"); -+ FAIL_RET ("size after reduction with truncate incorrect"); - - /* The following test covers more than POSIX. POSIX does not require - that truncate() can increase the file size. But we are testing - Unix systems. */ - if (truncate (temp_filename, (offset + 1200)) < 0) -- FAIL ("size increase with truncate failed"); -+ FAIL_RET ("size increase with truncate failed"); - if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) -- FAIL ("size increase with truncate is incorrect"); -+ FAIL_RET ("size increase with truncate is incorrect"); - - return 0; - } - -commit 3414b17e9db16c3bc0de5b49555c4f94f155ffc8 -Author: Maciej W. Rozycki -Date: Fri Jul 26 13:21:34 2024 +0100 - - nptl: Use facilities in tst-setuid3 - - Remove local FAIL macro in favor to FAIL_EXIT1 from , - which provides equivalent reporting, with the name of the file and the - line number within of the failure site additionally included. Remove - FAIL_ERR altogether and include ": %m" explicitly with the format string - supplied to FAIL_EXIT1 as there seems little value to have a separate - macro just for this. - - Reviewed-by: DJ Delorie - (cherry picked from commit 8c98195af6e6f1ce21743fc26c723e0f7e45bcf2) - -diff --git a/sysdeps/pthread/tst-setuid3.c b/sysdeps/pthread/tst-setuid3.c -index 83f42a0ae5..3845ab03d3 100644 ---- a/sysdeps/pthread/tst-setuid3.c -+++ b/sysdeps/pthread/tst-setuid3.c -@@ -15,24 +15,19 @@ - License along with the GNU C Library; if not, see - . */ - --#include - #include - #include - #include - #include - -+#include -+ - /* The test must run under a non-privileged user ID. */ - static const uid_t test_uid = 1; - - static pthread_barrier_t barrier1; - static pthread_barrier_t barrier2; - --#define FAIL(fmt, ...) \ -- do { printf ("FAIL: " fmt "\n", __VA_ARGS__); _exit (1); } while (0) -- --#define FAIL_ERR(fmt, ...) \ -- do { printf ("FAIL: " fmt ": %m\n", __VA_ARGS__); _exit (1); } while (0) -- - /* True if x is not a successful return code from pthread_barrier_wait. */ - static inline bool - is_invalid_barrier_ret (int x) -@@ -45,10 +40,10 @@ thread_func (void *ctx __attribute__ ((unused))) - { - int ret = pthread_barrier_wait (&barrier1); - if (is_invalid_barrier_ret (ret)) -- FAIL ("pthread_barrier_wait (barrier1) (on thread): %d", ret); -+ FAIL_EXIT1 ("pthread_barrier_wait (barrier1) (on thread): %d", ret); - ret = pthread_barrier_wait (&barrier2); - if (is_invalid_barrier_ret (ret)) -- FAIL ("pthread_barrier_wait (barrier2) (on thread): %d", ret); -+ FAIL_EXIT1 ("pthread_barrier_wait (barrier2) (on thread): %d", ret); - return NULL; - } - -@@ -59,13 +54,13 @@ setuid_failure (int phase) - switch (ret) - { - case 0: -- FAIL ("setuid succeeded unexpectedly in phase %d", phase); -+ FAIL_EXIT1 ("setuid succeeded unexpectedly in phase %d", phase); - case -1: - if (errno != EPERM) -- FAIL_ERR ("setuid phase %d", phase); -+ FAIL_EXIT1 ("setuid phase %d: %m", phase); - break; - default: -- FAIL ("invalid setuid return value in phase %d: %d", phase, ret); -+ FAIL_EXIT1 ("invalid setuid return value in phase %d: %d", phase, ret); - } - } - -@@ -74,42 +69,42 @@ do_test (void) - { - if (getuid () == 0) - if (setuid (test_uid) != 0) -- FAIL_ERR ("setuid (%u)", (unsigned) test_uid); -+ FAIL_EXIT1 ("setuid (%u): %m", (unsigned) test_uid); - if (setuid (getuid ())) -- FAIL_ERR ("setuid (%s)", "getuid ()"); -+ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()"); - setuid_failure (1); - - int ret = pthread_barrier_init (&barrier1, NULL, 2); - if (ret != 0) -- FAIL ("pthread_barrier_init (barrier1): %d", ret); -+ FAIL_EXIT1 ("pthread_barrier_init (barrier1): %d", ret); - ret = pthread_barrier_init (&barrier2, NULL, 2); - if (ret != 0) -- FAIL ("pthread_barrier_init (barrier2): %d", ret); -+ FAIL_EXIT1 ("pthread_barrier_init (barrier2): %d", ret); - - pthread_t thread; - ret = pthread_create (&thread, NULL, thread_func, NULL); - if (ret != 0) -- FAIL ("pthread_create: %d", ret); -+ FAIL_EXIT1 ("pthread_create: %d", ret); - - /* Ensure that the thread is running properly. */ - ret = pthread_barrier_wait (&barrier1); - if (is_invalid_barrier_ret (ret)) -- FAIL ("pthread_barrier_wait (barrier1): %d", ret); -+ FAIL_EXIT1 ("pthread_barrier_wait (barrier1): %d", ret); - - setuid_failure (2); - - /* Check success case. */ - if (setuid (getuid ()) != 0) -- FAIL_ERR ("setuid (%s)", "getuid ()"); -+ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()"); - - /* Shutdown. */ - ret = pthread_barrier_wait (&barrier2); - if (is_invalid_barrier_ret (ret)) -- FAIL ("pthread_barrier_wait (barrier2): %d", ret); -+ FAIL_EXIT1 ("pthread_barrier_wait (barrier2): %d", ret); - - ret = pthread_join (thread, NULL); - if (ret != 0) -- FAIL ("pthread_join: %d", ret); -+ FAIL_EXIT1 ("pthread_join: %d", ret); - - return 0; - } - -commit b7edcfa0f41ccfaeb665a661d3a6a594c8d95848 -Author: Florian Weimer -Date: Thu Aug 1 23:31:23 2024 +0200 - - elf: Clarify and invert second argument of _dl_allocate_tls_init - - Also remove an outdated comment: _dl_allocate_tls_init is - called as part of pthread_create. - - Reviewed-by: Carlos O'Donell - (cherry picked from commit fe06fb313bddf7e4530056897d4a706606e49377) - -diff --git a/elf/dl-tls.c b/elf/dl-tls.c -index 3d221273f1..ecb966d282 100644 ---- a/elf/dl-tls.c -+++ b/elf/dl-tls.c -@@ -552,9 +552,14 @@ _dl_resize_dtv (dtv_t *dtv, size_t max_modid) - /* Allocate initial TLS. RESULT should be a non-NULL pointer to storage - for the TLS space. The DTV may be resized, and so this function may - call malloc to allocate that space. The loader's GL(dl_load_tls_lock) -- is taken when manipulating global TLS-related data in the loader. */ -+ is taken when manipulating global TLS-related data in the loader. -+ -+ If MAIN_THREAD, this is the first call during process -+ initialization. In this case, TLS initialization for secondary -+ (audit) namespaces is skipped because that has already been handled -+ by dlopen. */ - void * --_dl_allocate_tls_init (void *result, bool init_tls) -+_dl_allocate_tls_init (void *result, bool main_thread) - { - if (result == NULL) - /* The memory allocation failed. */ -@@ -633,7 +638,7 @@ _dl_allocate_tls_init (void *result, bool init_tls) - because it would already be set by the audit setup. However, - subsequent thread creation would need to follow the default - behaviour. */ -- if (map->l_ns != LM_ID_BASE && !init_tls) -+ if (map->l_ns != LM_ID_BASE && main_thread) - continue; - memset (__mempcpy (dest, map->l_tls_initimage, - map->l_tls_initimage_size), '\0', -@@ -661,7 +666,7 @@ _dl_allocate_tls (void *mem) - { - return _dl_allocate_tls_init (mem == NULL - ? _dl_allocate_tls_storage () -- : allocate_dtv (mem), true); -+ : allocate_dtv (mem), false); - } - rtld_hidden_def (_dl_allocate_tls) - -diff --git a/elf/rtld.c b/elf/rtld.c -index bfdf632e77..09b9c9993b 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2338,7 +2338,7 @@ dl_main (const ElfW(Phdr) *phdr, - into the main thread's TLS area, which we allocated above. - Note: thread-local variables must only be accessed after completing - the next step. */ -- _dl_allocate_tls_init (tcbp, false); -+ _dl_allocate_tls_init (tcbp, true); - - /* And finally install it for the main thread. */ - if (! __rtld_tls_init_tp_called) -diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c -index f35a8369bd..2cb562f8ea 100644 ---- a/nptl/allocatestack.c -+++ b/nptl/allocatestack.c -@@ -139,7 +139,7 @@ get_cached_stack (size_t *sizep, void **memp) - memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t)); - - /* Re-initialize the TLS. */ -- _dl_allocate_tls_init (TLS_TPADJ (result), true); -+ _dl_allocate_tls_init (TLS_TPADJ (result), false); - - return result; - } -diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h -index 656e8a3fa0..154efb0e19 100644 ---- a/sysdeps/generic/ldsodefs.h -+++ b/sysdeps/generic/ldsodefs.h -@@ -1200,10 +1200,8 @@ extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp); - - extern void _dl_allocate_static_tls (struct link_map *map) attribute_hidden; - --/* These are internal entry points to the two halves of _dl_allocate_tls, -- only used within rtld.c itself at startup time. */ - extern void *_dl_allocate_tls_storage (void) attribute_hidden; --extern void *_dl_allocate_tls_init (void *, bool); -+extern void *_dl_allocate_tls_init (void *result, bool main_thread); - rtld_hidden_proto (_dl_allocate_tls_init) - - /* True if the TCB has been set up. */ - -commit f496b750f135e57da921e975835c44bd199246dd -Author: Florian Weimer -Date: Thu Aug 1 23:31:30 2024 +0200 - - elf: Avoid re-initializing already allocated TLS in dlopen (bug 31717) - - The old code used l_init_called as an indicator for whether TLS - initialization was complete. However, it is possible that - TLS for an object is initialized, written to, and then dlopen - for this object is called again, and l_init_called is not true at - this point. Previously, this resulted in TLS being initialized - twice, discarding any interim writes (technically introducing a - use-after-free bug even). - - This commit introduces an explicit per-object flag, l_tls_in_slotinfo. - It indicates whether _dl_add_to_slotinfo has been called for this - object. This flag is used to avoid double-initialization of TLS. - In update_tls_slotinfo, the first_static_tls micro-optimization - is removed because preserving the initalization flag for subsequent - use by the second loop for static TLS is a bit complicated, and - another per-object flag does not seem to be worth it. Furthermore, - the l_init_called flag is dropped from the second loop (for static - TLS initialization) because l_need_tls_init on its own prevents - double-initialization. - - The remaining l_init_called usage in resize_scopes and update_scopes - is just an optimization due to the use of scope_has_map, so it is - not changed in this commit. - - The isupper check ensures that libc.so.6 is TLS is not reverted. - Such a revert happens if l_need_tls_init is not cleared in - _dl_allocate_tls_init for the main_thread case, now that - l_init_called is not checked anymore in update_tls_slotinfo - in elf/dl-open.c. - - Reported-by: Jonathon Anderson - Reviewed-by: Carlos O'Donell - (cherry picked from commit 5097cd344fd243fb8deb6dec96e8073753f962f9) - -diff --git a/NEWS b/NEWS -index 10a125bc66..5b20efbf6c 100644 ---- a/NEWS -+++ b/NEWS -@@ -10,7 +10,7 @@ Version 2.40.1 - The following bugs are resolved with this release: - - [30081] resolv: Do not wait for non-existing second DNS response after error -- [31968] mremap implementation in C does not handle arguments correctly -+ [31717] elf: Avoid re-initializing already allocated TLS in dlopen - [31890] resolv: Allow short error responses to match any DNS query - [31968] mremap implementation in C does not handle arguments correctly - [32026] strerror/strsignal TLS not handled correctly for secondary namespaces -diff --git a/elf/Makefile b/elf/Makefile -index a3475f3fb5..a03c6520d8 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -416,6 +416,10 @@ tests += \ - tst-dlmopen4 \ - tst-dlopen-self \ - tst-dlopen-tlsmodid \ -+ tst-dlopen-tlsreinit1 \ -+ tst-dlopen-tlsreinit2 \ -+ tst-dlopen-tlsreinit3 \ -+ tst-dlopen-tlsreinit4 \ - tst-dlopenfail \ - tst-dlopenfail-2 \ - tst-dlopenrpath \ -@@ -853,6 +857,9 @@ modules-names += \ - tst-dlmopen-twice-mod1 \ - tst-dlmopen-twice-mod2 \ - tst-dlmopen1mod \ -+ tst-dlopen-tlsreinitmod1 \ -+ tst-dlopen-tlsreinitmod2 \ -+ tst-dlopen-tlsreinitmod3 \ - tst-dlopenfaillinkmod \ - tst-dlopenfailmod1 \ - tst-dlopenfailmod2 \ -@@ -3118,3 +3125,26 @@ $(objpfx)tst-recursive-tls.out: \ - 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - $(objpfx)tst-recursive-tlsmod%.os: tst-recursive-tlsmodN.c - $(compile-command.c) -DVAR=thread_$* -DFUNC=get_threadvar_$* -+ -+# Order matters here. The test needs the constructor for -+# tst-dlopen-tlsreinitmod2.so to be called first. -+LDFLAGS-tst-dlopen-tlsreinitmod1.so = -Wl,--no-as-needed -+$(objpfx)tst-dlopen-tlsreinitmod1.so: \ -+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so -+LDFLAGS-tst-dlopen-tlsreinit2 = -Wl,--no-as-needed -+$(objpfx)tst-dlopen-tlsreinit2: \ -+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so -+LDFLAGS-tst-dlopen-tlsreinit4 = -Wl,--no-as-needed -+$(objpfx)tst-dlopen-tlsreinit4: \ -+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so -+# tst-dlopen-tlsreinitmod2.so is underlinked and refers to -+# tst-dlopen-tlsreinitmod3.so. The dependency is provided via -+# $(objpfx)tst-dlopen-tlsreinitmod1.so. -+tst-dlopen-tlsreinitmod2.so-no-z-defs = yes -+$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \ -+ $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so -+# Reuse an audit module which provides ample debug logging. -+$(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so -+tst-dlopen-tlsreinit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so -+$(objpfx)tst-dlopen-tlsreinit4.out: $(objpfx)tst-auditmod1.so -+tst-dlopen-tlsreinit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so -diff --git a/elf/dl-open.c b/elf/dl-open.c -index c378da16c0..8556e7bd2f 100644 ---- a/elf/dl-open.c -+++ b/elf/dl-open.c -@@ -363,17 +363,8 @@ resize_tls_slotinfo (struct link_map *new) - { - bool any_tls = false; - for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) -- { -- struct link_map *imap = new->l_searchlist.r_list[i]; -- -- /* Only add TLS memory if this object is loaded now and -- therefore is not yet initialized. */ -- if (! imap->l_init_called && imap->l_tls_blocksize > 0) -- { -- _dl_add_to_slotinfo (imap, false); -- any_tls = true; -- } -- } -+ if (_dl_add_to_slotinfo (new->l_searchlist.r_list[i], false)) -+ any_tls = true; - return any_tls; - } - -@@ -383,22 +374,8 @@ resize_tls_slotinfo (struct link_map *new) - static void - update_tls_slotinfo (struct link_map *new) - { -- unsigned int first_static_tls = new->l_searchlist.r_nlist; - for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) -- { -- struct link_map *imap = new->l_searchlist.r_list[i]; -- -- /* Only add TLS memory if this object is loaded now and -- therefore is not yet initialized. */ -- if (! imap->l_init_called && imap->l_tls_blocksize > 0) -- { -- _dl_add_to_slotinfo (imap, true); -- -- if (imap->l_need_tls_init -- && first_static_tls == new->l_searchlist.r_nlist) -- first_static_tls = i; -- } -- } -+ _dl_add_to_slotinfo (new->l_searchlist.r_list[i], true); - - size_t newgen = GL(dl_tls_generation) + 1; - if (__glibc_unlikely (newgen == 0)) -@@ -410,13 +387,11 @@ TLS generation counter wrapped! Please report this.")); - /* We need a second pass for static tls data, because - _dl_update_slotinfo must not be run while calls to - _dl_add_to_slotinfo are still pending. */ -- for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i) -+ for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) - { - struct link_map *imap = new->l_searchlist.r_list[i]; - -- if (imap->l_need_tls_init -- && ! imap->l_init_called -- && imap->l_tls_blocksize > 0) -+ if (imap->l_need_tls_init && imap->l_tls_blocksize > 0) - { - /* For static TLS we have to allocate the memory here and - now, but we can delay updating the DTV. */ -diff --git a/elf/dl-tls.c b/elf/dl-tls.c -index ecb966d282..3d529b722c 100644 ---- a/elf/dl-tls.c -+++ b/elf/dl-tls.c -@@ -632,17 +632,21 @@ _dl_allocate_tls_init (void *result, bool main_thread) - some platforms use in static programs requires it. */ - dtv[map->l_tls_modid].pointer.val = dest; - -- /* Copy the initialization image and clear the BSS part. For -- audit modules or dependencies with initial-exec TLS, we can not -- set the initial TLS image on default loader initialization -- because it would already be set by the audit setup. However, -- subsequent thread creation would need to follow the default -- behaviour. */ -+ /* Copy the initialization image and clear the BSS part. -+ For audit modules or dependencies with initial-exec TLS, -+ we can not set the initial TLS image on default loader -+ initialization because it would already be set by the -+ audit setup, which uses the dlopen code and already -+ clears l_need_tls_init. Calls with !main_thread from -+ pthread_create need to initialze TLS for the current -+ thread regardless of namespace. */ - if (map->l_ns != LM_ID_BASE && main_thread) - continue; - memset (__mempcpy (dest, map->l_tls_initimage, - map->l_tls_initimage_size), '\0', - map->l_tls_blocksize - map->l_tls_initimage_size); -+ if (main_thread) -+ map->l_need_tls_init = 0; - } - - total += cnt; -@@ -1099,9 +1103,32 @@ _dl_tls_initial_modid_limit_setup (void) - } - - --void -+/* Add module to slot information data. If DO_ADD is false, only the -+ required memory is allocated. Must be called with -+ GL (dl_load_tls_lock) acquired. If the function has already been -+ called for the link map L with !DO_ADD, then this function will not -+ raise an exception, otherwise it is possible that it encounters a -+ memory allocation failure. -+ -+ Return false if L has already been added to the slotinfo data, or -+ if L has no TLS data. If the returned value is true, L has been -+ added with this call (DO_ADD), or has been added in a previous call -+ (!DO_ADD). -+ -+ The expected usage is as follows: Call _dl_add_to_slotinfo for -+ several link maps with DO_ADD set to false, and record if any calls -+ result in a true result. If there was a true result, call -+ _dl_add_to_slotinfo again, this time with DO_ADD set to true. (For -+ simplicity, it's possible to call the function for link maps where -+ the previous result was false.) The return value from the second -+ round of calls can be ignored. If there was true result initially, -+ call _dl_update_slotinfo to update the TLS generation counter. */ -+bool - _dl_add_to_slotinfo (struct link_map *l, bool do_add) - { -+ if (l->l_tls_blocksize == 0 || l->l_tls_in_slotinfo) -+ return false; -+ - /* Now that we know the object is loaded successfully add - modules containing TLS data to the dtv info table. We - might have to increase its size. */ -@@ -1157,7 +1184,10 @@ cannot create TLS data structures")); - atomic_store_relaxed (&listp->slotinfo[idx].map, l); - atomic_store_relaxed (&listp->slotinfo[idx].gen, - GL(dl_tls_generation) + 1); -+ l->l_tls_in_slotinfo = true; - } -+ -+ return true; - } - - #if PTHREAD_IN_LIBC -diff --git a/elf/tst-dlopen-tlsreinit1.c b/elf/tst-dlopen-tlsreinit1.c -new file mode 100644 -index 0000000000..2016b9b0c6 ---- /dev/null -+++ b/elf/tst-dlopen-tlsreinit1.c -@@ -0,0 +1,40 @@ -+/* Test that dlopen preserves already accessed TLS (bug 31717). -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ void *handle = xdlopen ("tst-dlopen-tlsreinitmod1.so", RTLD_NOW); -+ -+ bool *tlsreinitmod3_tested = xdlsym (handle, "tlsreinitmod3_tested"); -+ TEST_VERIFY (*tlsreinitmod3_tested); -+ -+ xdlclose (handle); -+ -+ /* This crashes if the libc.so.6 TLS image has been reverted. */ -+ TEST_VERIFY (!isupper ('@')); -+ -+ return 0; -+} -+ -+#include -diff --git a/elf/tst-dlopen-tlsreinit2.c b/elf/tst-dlopen-tlsreinit2.c -new file mode 100644 -index 0000000000..90ad2c7713 ---- /dev/null -+++ b/elf/tst-dlopen-tlsreinit2.c -@@ -0,0 +1,39 @@ -+/* Test that dlopen preserves already accessed TLS (bug 31717). -+ Variant with initially-linked modules. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+ -+static int -+do_test (void) -+{ -+ /* Defined in tst-dlopen-tlsreinitmod3.so. */ -+ extern bool tlsreinitmod3_tested; -+ TEST_VERIFY (tlsreinitmod3_tested); -+ -+ /* This crashes if the libc.so.6 TLS image has been reverted. */ -+ TEST_VERIFY (!isupper ('@')); -+ -+ return 0; -+} -+ -+#include -diff --git a/elf/tst-dlopen-tlsreinit3.c b/elf/tst-dlopen-tlsreinit3.c -new file mode 100644 -index 0000000000..79bd585aff ---- /dev/null -+++ b/elf/tst-dlopen-tlsreinit3.c -@@ -0,0 +1,2 @@ -+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */ -+#include "tst-dlopen-tlsreinit1.c" -diff --git a/elf/tst-dlopen-tlsreinit4.c b/elf/tst-dlopen-tlsreinit4.c -new file mode 100644 -index 0000000000..344c9211ab ---- /dev/null -+++ b/elf/tst-dlopen-tlsreinit4.c -@@ -0,0 +1,2 @@ -+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */ -+#include "tst-dlopen-tlsreinit2.c" -diff --git a/elf/tst-dlopen-tlsreinitmod1.c b/elf/tst-dlopen-tlsreinitmod1.c -new file mode 100644 -index 0000000000..354cc3de51 ---- /dev/null -+++ b/elf/tst-dlopen-tlsreinitmod1.c -@@ -0,0 +1,20 @@ -+/* Test that dlopen preserves already accessed TLS (bug 31717), module 1. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* This module triggers loading of tst-dlopen-tlsreinitmod2.so and -+ tst-dlopen-tlsreinitmod3.so. */ -diff --git a/elf/tst-dlopen-tlsreinitmod2.c b/elf/tst-dlopen-tlsreinitmod2.c -new file mode 100644 -index 0000000000..677e69bd35 ---- /dev/null -+++ b/elf/tst-dlopen-tlsreinitmod2.c -@@ -0,0 +1,30 @@ -+/* Test that dlopen preserves already accessed TLS (bug 31717), module 2. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+ -+/* Defined in tst-dlopen-tlsreinitmod3.so. This an underlinked symbol -+ dependency. */ -+extern void call_tlsreinitmod3 (void); -+ -+static void __attribute__ ((constructor)) -+tlsreinitmod2_init (void) -+{ -+ puts ("info: constructor of tst-dlopen-tlsreinitmod2.so invoked"); -+ call_tlsreinitmod3 (); -+} -diff --git a/elf/tst-dlopen-tlsreinitmod3.c b/elf/tst-dlopen-tlsreinitmod3.c -new file mode 100644 -index 0000000000..ef769c5131 ---- /dev/null -+++ b/elf/tst-dlopen-tlsreinitmod3.c -@@ -0,0 +1,102 @@ -+/* Test that dlopen preserves already accessed TLS (bug 31717), module 3. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+/* Used to verify from the main program that the test ran. */ -+bool tlsreinitmod3_tested; -+ -+/* This TLS variable must not revert back to the initial state after -+ dlopen. */ -+static __thread int tlsreinitmod3_state = 1; -+ -+/* Set from the ELF constructor during dlopen. */ -+static bool tlsreinitmod3_constructed; -+ -+/* Second half of test, behind a compiler barrier. The compiler -+ barrier is necessary to prevent carrying over TLS address -+ information from call_tlsreinitmod3 to call_tlsreinitmod3_tail. */ -+void call_tlsreinitmod3_tail (void *self) __attribute__ ((weak)); -+ -+/* Called from tst-dlopen-tlsreinitmod2.so. */ -+void -+call_tlsreinitmod3 (void) -+{ -+ printf ("info: call_tlsreinitmod3 invoked (state=%d)\n", -+ tlsreinitmod3_state); -+ -+ if (tlsreinitmod3_constructed) -+ { -+ puts ("error: call_tlsreinitmod3 called after ELF constructor"); -+ fflush (stdout); -+ /* Cannot rely on test harness due to dynamic linking. */ -+ _exit (1); -+ } -+ -+ tlsreinitmod3_state = 2; -+ -+ /* Self-dlopen. This will run the ELF constructor. */ -+ void *self = dlopen ("tst-dlopen-tlsreinitmod3.so", RTLD_NOW); -+ if (self == NULL) -+ { -+ printf ("error: dlopen: %s\n", dlerror ()); -+ fflush (stdout); -+ /* Cannot rely on test harness due to dynamic linking. */ -+ _exit (1); -+ } -+ -+ call_tlsreinitmod3_tail (self); -+} -+ -+void -+call_tlsreinitmod3_tail (void *self) -+{ -+ printf ("info: dlopen returned in tlsreinitmod3 (state=%d)\n", -+ tlsreinitmod3_state); -+ -+ if (!tlsreinitmod3_constructed) -+ { -+ puts ("error: dlopen did not call tlsreinitmod3 ELF constructor"); -+ fflush (stdout); -+ /* Cannot rely on test harness due to dynamic linking. */ -+ _exit (1); -+ } -+ -+ if (tlsreinitmod3_state != 2) -+ { -+ puts ("error: TLS state reverted in tlsreinitmod3"); -+ fflush (stdout); -+ /* Cannot rely on test harness due to dynamic linking. */ -+ _exit (1); -+ } -+ -+ dlclose (self); -+ -+ /* Signal test completion to the main program. */ -+ tlsreinitmod3_tested = true; -+} -+ -+static void __attribute__ ((constructor)) -+tlsreinitmod3_init (void) -+{ -+ puts ("info: constructor of tst-dlopen-tlsreinitmod3.so invoked"); -+ tlsreinitmod3_constructed = true; -+} -diff --git a/include/link.h b/include/link.h -index cb0d7d8e2f..5ed445d5a6 100644 ---- a/include/link.h -+++ b/include/link.h -@@ -212,6 +212,7 @@ struct link_map - unsigned int l_find_object_processed:1; /* Zero if _dl_find_object_update - needs to process this - lt_library map. */ -+ unsigned int l_tls_in_slotinfo:1; /* TLS slotinfo updated in dlopen. */ - - /* NODELETE status of the map. Only valid for maps of type - lt_loaded. Lazy binding sets l_nodelete_active directly, -diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h -index 154efb0e19..259ce2e7d6 100644 ---- a/sysdeps/generic/ldsodefs.h -+++ b/sysdeps/generic/ldsodefs.h -@@ -1239,13 +1239,7 @@ extern void *_dl_open (const char *name, int mode, const void *caller, - extern int _dl_scope_free (void *) attribute_hidden; - - --/* Add module to slot information data. If DO_ADD is false, only the -- required memory is allocated. Must be called with GL -- (dl_load_tls_lock) acquired. If the function has already been called -- for the link map L with !do_add, then this function will not raise -- an exception, otherwise it is possible that it encounters a memory -- allocation failure. */ --extern void _dl_add_to_slotinfo (struct link_map *l, bool do_add) -+extern bool _dl_add_to_slotinfo (struct link_map *l, bool do_add) - attribute_hidden; - - /* Update slot information data for at least the generation of the - -commit f4a9b6e97bf05cf5a41907e55901f7e9afaafd4d -Author: Florian Weimer -Date: Mon Sep 9 21:10:23 2024 +0200 - - elf: Fix tst-dlopen-tlsreinit1.out test dependency - - Fixes commit 5097cd344fd243fb8deb6dec96e8073753f962f9 - ("elf: Avoid re-initializing already allocated TLS in dlopen - (bug 31717)"). - - Reported-by: Patsy Griffin - Reviewed-by: Patsy Griffin - (cherry picked from commit e82a7cb1622bff08d8e3a144d7c5516a088f1cbc) - -diff --git a/elf/Makefile b/elf/Makefile -index a03c6520d8..dc686c3bff 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -3141,7 +3141,7 @@ $(objpfx)tst-dlopen-tlsreinit4: \ - # tst-dlopen-tlsreinitmod3.so. The dependency is provided via - # $(objpfx)tst-dlopen-tlsreinitmod1.so. - tst-dlopen-tlsreinitmod2.so-no-z-defs = yes --$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \ -+$(objpfx)tst-dlopen-tlsreinit1.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \ - $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so - # Reuse an audit module which provides ample debug logging. - $(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so - -commit adfb14e71f240a6bc2a4cbd6e6c50cc3fa1bcc3b -Author: Florian Weimer -Date: Tue Sep 10 12:40:27 2024 +0200 - - debug: Fix read error handling in pcprofiledump - - The reading loops did not check for read failures. Addresses - a static analysis report. - - Manually tested by compiling a program with the GCC's - -finstrument-functions option, running it with - “LD_PRELOAD=debug/libpcprofile.so PCPROFILE_OUTPUT=output-file”, - and reviewing the output of “debug/pcprofiledump output-file”. - - (cherry picked from commit 89b088bf70c651c231bf27e644270d093b8f144a) - -diff --git a/debug/pcprofiledump.c b/debug/pcprofiledump.c -index 049a9c2744..94530f0cf9 100644 ---- a/debug/pcprofiledump.c -+++ b/debug/pcprofiledump.c -@@ -75,6 +75,44 @@ static struct argp argp = - options, parse_opt, args_doc, doc, NULL, more_help - }; - -+/* Try to read SIZE bytes from FD and store them on BUF. Terminate -+ the process upon read error. Also terminate the process if less -+ than SIZE bytes are remaining in the file. If !IN_HEADER, do not -+ terminate the process if the end of the file is encountered -+ immediately, before any bytes are read. -+ -+ Returns true if SIZE bytes have been read, and false if no bytes -+ have been read due to an end-of-file condition. */ -+static bool -+read_exactly (int fd, void *buffer, size_t size, bool in_header) -+{ -+ char *p = buffer; -+ char *end = p + size; -+ while (p < end) -+ { -+ ssize_t ret = TEMP_FAILURE_RETRY (read (fd, p, end - p)); -+ if (ret < 0) -+ { -+ if (in_header) -+ error (EXIT_FAILURE, errno, _("cannot read header")); -+ else -+ error (EXIT_FAILURE, errno, _("cannot read pointer pair")); -+ } -+ if (ret == 0) -+ { -+ if (p == buffer && !in_header) -+ /* Nothing has been read. */ -+ return false; -+ if (in_header) -+ error (EXIT_FAILURE, 0, _("unexpected end of file in header")); -+ else -+ error (EXIT_FAILURE, 0, -+ _("unexpected end of file in pointer pair")); -+ } -+ p += ret; -+ } -+ return true; -+} - - int - main (int argc, char *argv[]) -@@ -110,8 +148,7 @@ main (int argc, char *argv[]) - /* Read the first 4-byte word. It contains the information about - the word size and the endianness. */ - uint32_t word; -- if (TEMP_FAILURE_RETRY (read (fd, &word, 4)) != 4) -- error (EXIT_FAILURE, errno, _("cannot read header")); -+ read_exactly (fd, &word, sizeof (word), true); - - /* Check whether we have to swap the byte order. */ - int must_swap = (word & 0x0fffffff) == bswap_32 (0xdeb00000); -@@ -121,56 +158,30 @@ main (int argc, char *argv[]) - /* We have two loops, one for 32 bit pointers, one for 64 bit pointers. */ - if (word == 0xdeb00004) - { -- union -- { -- uint32_t ptrs[2]; -- char bytes[8]; -- } pair; -+ uint32_t ptrs[2]; - - while (1) - { -- size_t len = sizeof (pair); -- size_t n; -- -- while (len > 0 -- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len], -- len))) != 0) -- len -= n; -- -- if (len != 0) -- /* Nothing to read. */ -+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false)) - break; - - printf ("this = %#010" PRIx32 ", caller = %#010" PRIx32 "\n", -- must_swap ? bswap_32 (pair.ptrs[0]) : pair.ptrs[0], -- must_swap ? bswap_32 (pair.ptrs[1]) : pair.ptrs[1]); -+ must_swap ? bswap_32 (ptrs[0]) : ptrs[0], -+ must_swap ? bswap_32 (ptrs[1]) : ptrs[1]); - } - } - else if (word == 0xdeb00008) - { -- union -- { -- uint64_t ptrs[2]; -- char bytes[16]; -- } pair; -+ uint64_t ptrs[2]; - - while (1) - { -- size_t len = sizeof (pair); -- size_t n; -- -- while (len > 0 -- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len], -- len))) != 0) -- len -= n; -- -- if (len != 0) -- /* Nothing to read. */ -+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false)) - break; - - printf ("this = %#018" PRIx64 ", caller = %#018" PRIx64 "\n", -- must_swap ? bswap_64 (pair.ptrs[0]) : pair.ptrs[0], -- must_swap ? bswap_64 (pair.ptrs[1]) : pair.ptrs[1]); -+ must_swap ? bswap_64 (ptrs[0]) : ptrs[0], -+ must_swap ? bswap_64 (ptrs[1]) : ptrs[1]); - } - } - else - -commit 7073164add3b874cf0c19ca0fb84236f6bb0985d -Author: Siddhesh Poyarekar -Date: Tue Sep 3 14:58:33 2024 -0400 - - libio: Attempt wide backup free only for non-legacy code - - _wide_data and _mode are not available in legacy code, so do not attempt - to free the wide backup buffer in legacy code. - - Resolves: BZ #32137 and BZ #27821 - - Signed-off-by: Siddhesh Poyarekar - Reviewed-by: Florian Weimer - (cherry picked from commit ae4d44b1d501421ad9a3af95279b8f4d1546f1ce) - -diff --git a/NEWS b/NEWS -index 5b20efbf6c..9033335db1 100644 ---- a/NEWS -+++ b/NEWS -@@ -9,12 +9,14 @@ Version 2.40.1 - - The following bugs are resolved with this release: - -+ [27821] ungetc: Fix backup buffer leak on program exit - [30081] resolv: Do not wait for non-existing second DNS response after error - [31717] elf: Avoid re-initializing already allocated TLS in dlopen - [31890] resolv: Allow short error responses to match any DNS query - [31968] mremap implementation in C does not handle arguments correctly - [32026] strerror/strsignal TLS not handled correctly for secondary namespaces - [32052] Name space violation in fortify wrappers -+ [32137] libio: Attempt wide backup free only for non-legacy code - - Version 2.40 - -diff --git a/libio/genops.c b/libio/genops.c -index 35d8b30710..6f20d49669 100644 ---- a/libio/genops.c -+++ b/libio/genops.c -@@ -819,7 +819,7 @@ _IO_unbuffer_all (void) - /* Free up the backup area if it was ever allocated. */ - if (_IO_have_backup (fp)) - _IO_free_backup_area (fp); -- if (fp->_mode > 0 && _IO_have_wbackup (fp)) -+ if (!legacy && fp->_mode > 0 && _IO_have_wbackup (fp)) - _IO_free_wbackup_area (fp); - - if (! (fp->_flags & _IO_UNBUFFERED) - -commit 77018fd9f99f86a354387219fdf099915857a527 -Author: Sergey Kolosov -Date: Wed Sep 25 15:51:23 2024 +0200 - - stdio-common: Add new test for fdopen - - This commit adds fdopen test with all modes. - Reviewed-by: DJ Delorie - - (cherry picked from commit 1d72fa3cfa046f7293421a7e58f2a272474ea901) - -diff --git a/stdio-common/Makefile b/stdio-common/Makefile -index a91754f52d..5af53d61fd 100644 ---- a/stdio-common/Makefile -+++ b/stdio-common/Makefile -@@ -207,6 +207,7 @@ tests := \ - tst-cookie \ - tst-dprintf-length \ - tst-fdopen \ -+ tst-fdopen2 \ - tst-ferror \ - tst-fgets \ - tst-fileno \ -diff --git a/stdio-common/tst-fdopen2.c b/stdio-common/tst-fdopen2.c -new file mode 100644 -index 0000000000..0c6625f258 ---- /dev/null -+++ b/stdio-common/tst-fdopen2.c -@@ -0,0 +1,246 @@ -+/* Test the fdopen function. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+char *tmp_dir; -+char *path_to_file; -+ -+void -+prepare_tmp_dir (void) -+{ -+ tmp_dir = support_create_temp_directory ("tst-fdopen2"); -+ path_to_file = xasprintf ("%s/tst-fdopen2.txt", tmp_dir); -+} -+ -+/* open temp file descriptor with mode. */ -+int -+open_tmp_fd (int mode) -+{ -+ int fd = xopen (path_to_file, mode, 0644); -+ return fd; -+} -+ -+ -+/* close and remove temp file with close. */ -+void -+close_tmp_fd (int fd) -+{ -+ xclose (fd); -+ xunlink (path_to_file); -+} -+ -+/* close and remove temp file with fclose. */ -+void -+close_tmp_fp (FILE *fp) -+{ -+ fclose (fp); -+ xunlink (path_to_file); -+} -+ -+/* test "w" fdopen mode. */ -+void -+do_test_fdopen_w (void) -+{ -+ int fd, ret; -+ FILE *fp; -+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_TRUNC); -+ -+ /* test mode mismatch. */ -+ fp = fdopen (fd, "r"); -+ if (fp != NULL || errno != EINVAL) -+ { -+ close_tmp_fd (fd); -+ FAIL_EXIT1 ("fdopen (%d, r) should fail with EINVAL: %m", fd); -+ } -+ -+ fp = fdopen (fd, "w"); -+ if (fp == NULL) -+ { -+ close_tmp_fd (fd); -+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd); -+ } -+ -+ const void *buf = "AAAA"; -+ ret = fwrite (buf, 1, 4, fp); -+ if (ret != 4) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fwrite (): %m"); -+ } -+ -+ unsigned char buf2[4]; -+ rewind (fp); -+ clearerr (fp); -+ /* fread should fail in "w" mode */ -+ ret = fread (buf2, 1, 4, fp); -+ if (ret != 0 || ferror (fp) == 0) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fread should fail in \"w\" mode"); -+ } -+ -+ fclose (fp); -+} -+ -+/* test "r" fdopen mode. */ -+void -+do_test_fdopen_r (void) -+{ -+ int fd, ret; -+ FILE *fp; -+ fd = open_tmp_fd (O_RDONLY); -+ -+ /* test mode mismatch. */ -+ fp = fdopen (fd, "w"); -+ if (fp != NULL || errno != EINVAL) -+ { -+ close_tmp_fd (fd); -+ FAIL_EXIT1 ("fdopen (%d, w) should fail with EINVAL: %m", fd); -+ } -+ -+ fp = fdopen (fd, "r"); -+ if (fp == NULL) -+ { -+ close_tmp_fd (fd); -+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd); -+ } -+ -+ const void *buf = "BBBB"; -+ /* fwrite should fail in "r" mode. */ -+ ret = fwrite (buf, 1, 4, fp); -+ if (ret != 0 || ferror (fp) == 0) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fwrite should fail in \"r\" mode"); -+ } -+ -+ unsigned char buf2[4]; -+ ret = fread (buf2, 1, 4, fp); -+ if (ret != 4) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fread (): %m"); -+ } -+ -+ fclose (fp); -+} -+ -+/* test "a" fdopen mode. */ -+void -+do_test_fdopen_a (void) -+{ -+ int fd, ret; -+ FILE *fp; -+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_APPEND); -+ -+ /* test mode mismatch. */ -+ fp = fdopen (fd, "r+"); -+ if (fp != NULL || errno != EINVAL) -+ { -+ close_tmp_fd (fd); -+ FAIL_EXIT1 ("fdopen (%d, \"r+\") should fail with EINVAL: %m", fd); -+ } -+ -+ fp = fdopen (fd, "a"); -+ if (fp == NULL) -+ { -+ close_tmp_fd (fd); -+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd); -+ } -+ -+ const void *buf = "CCCC"; -+ ret = fwrite (buf, 1, 4, fp); -+ if (ret != 4) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fwrite (): %m"); -+ } -+ -+ /* fread should fail in "a" mode. */ -+ unsigned char buf2[4]; -+ clearerr (fp); -+ ret = fread (buf2, 1, 4, fp); -+ if (ret != 0 || ferror (fp) == 0) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fread should fail \"a\" mode"); -+ } -+ -+ fclose (fp); -+} -+ -+void -+do_test_fdopen_mode (int mode, const char *fmode) -+{ -+ int fd, ret; -+ FILE *fp; -+ fd = open_tmp_fd (mode); -+ -+ fp = fdopen (fd, fmode); -+ if (fp == NULL) -+ { -+ close_tmp_fd (fd); -+ FAIL_EXIT1 ("fdopen (%d, %s): %m", fd, fmode); -+ } -+ -+ const void *buf = "EEEE"; -+ ret = fwrite (buf, 1, 4, fp); -+ if (ret != 4) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fwrite () in mode:%s returns %d: %m", fmode, ret); -+ } -+ -+ rewind (fp); -+ unsigned char buf2[4]; -+ ret = fread (buf2, 1, 4, fp); -+ if (ret != 4) -+ { -+ close_tmp_fp (fp); -+ FAIL_EXIT1 ("fread () in mode:%s returns %d: %m", fmode, ret); -+ } -+ -+ fclose (fp); -+} -+ -+static int -+do_test (void) -+{ -+ -+ prepare_tmp_dir (); -+ -+ do_test_fdopen_w (); -+ do_test_fdopen_r (); -+ do_test_fdopen_a (); -+ -+ /* test r+ w+ a+ fdopen modes. */ -+ do_test_fdopen_mode (O_RDWR, "r+"); -+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_TRUNC, "w+"); -+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_APPEND, "a+"); -+ xunlink (path_to_file); -+ return 0; -+} -+ -+#include - -commit 61b6464f8d72aef520ee769a2ae317b4f68d5e1d -Author: Joseph Myers -Date: Tue Sep 24 14:06:22 2024 +0000 - - Add tests of fread - - There seem to be no glibc tests specifically for the fread function. - Add basic tests of that function. - - Tested for x86_64. - - (cherry picked from commit d14c977c65aac7db35bb59380ef99d6582c4f930) - -diff --git a/stdio-common/Makefile b/stdio-common/Makefile -index 5af53d61fd..3396090be1 100644 ---- a/stdio-common/Makefile -+++ b/stdio-common/Makefile -@@ -217,6 +217,7 @@ tests := \ - tst-fmemopen4 \ - tst-fphex \ - tst-fphex-wide \ -+ tst-fread \ - tst-fseek \ - tst-fwrite \ - tst-gets \ -diff --git a/stdio-common/tst-fread.c b/stdio-common/tst-fread.c -new file mode 100644 -index 0000000000..4d9a7895f6 ---- /dev/null -+++ b/stdio-common/tst-fread.c -@@ -0,0 +1,134 @@ -+/* Test fread. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+int -+do_test (void) -+{ -+ char *temp_dir = support_create_temp_directory ("tst-fread"); -+ char *file1 = xasprintf ("%s/file1", temp_dir); -+ support_write_file_string (file1, "file1"); -+ add_temp_file (file1); -+ FILE *fp; -+ size_t ret; -+ char buf[1024]; -+ -+ verbose_printf ("test single-byte reads\n"); -+ fp = xfopen (file1, "r"); -+ memset (buf, 0, sizeof buf); -+ ret = fread (buf, 1, 2, fp); -+ TEST_COMPARE (ret, 2); -+ TEST_COMPARE (buf[0], 'f'); -+ TEST_COMPARE (buf[1], 'i'); -+ TEST_COMPARE (feof (fp), 0); -+ TEST_COMPARE (ftell (fp), 2); -+ memset (buf, 0, sizeof buf); -+ ret = fread (buf, 1, 3, fp); -+ TEST_COMPARE (ret, 3); -+ TEST_COMPARE (buf[0], 'l'); -+ TEST_COMPARE (buf[1], 'e'); -+ TEST_COMPARE (buf[2], '1'); -+ TEST_COMPARE (ftell (fp), 5); -+ TEST_COMPARE (feof (fp), 0); -+ memset (buf, 0, sizeof buf); -+ ret = fread (buf, 1, 1, fp); -+ TEST_COMPARE (ret, 0); -+ TEST_COMPARE (!!feof (fp), 1); -+ TEST_COMPARE (ferror (fp), 0); -+ TEST_COMPARE (ftell (fp), 5); -+ xfclose (fp); -+ -+ verbose_printf ("test single-byte reads, EOF part way through\n"); -+ fp = xfopen (file1, "r"); -+ memset (buf, 0, sizeof buf); -+ ret = fread (buf, 1, sizeof buf, fp); -+ TEST_COMPARE (ret, 5); -+ TEST_COMPARE (buf[0], 'f'); -+ TEST_COMPARE (buf[1], 'i'); -+ TEST_COMPARE (buf[2], 'l'); -+ TEST_COMPARE (buf[3], 'e'); -+ TEST_COMPARE (buf[4], '1'); -+ TEST_COMPARE (!!feof (fp), 1); -+ TEST_COMPARE (ferror (fp), 0); -+ TEST_COMPARE (ftell (fp), 5); -+ xfclose (fp); -+ -+ verbose_printf ("test multi-byte reads\n"); -+ fp = xfopen (file1, "r"); -+ memset (buf, 0, sizeof buf); -+ ret = fread (buf, 2, 2, fp); -+ TEST_COMPARE (ret, 2); -+ TEST_COMPARE (buf[0], 'f'); -+ TEST_COMPARE (buf[1], 'i'); -+ TEST_COMPARE (buf[2], 'l'); -+ TEST_COMPARE (buf[3], 'e'); -+ TEST_COMPARE (feof (fp), 0); -+ TEST_COMPARE (ftell (fp), 4); -+ memset (buf, 0, sizeof buf); -+ ret = fread (buf, 3, 3, fp); -+ TEST_COMPARE (ret, 0); -+ /* The bytes written for a partial element read are unspecified. */ -+ TEST_COMPARE (!!feof (fp), 1); -+ TEST_COMPARE (ferror (fp), 0); -+ TEST_COMPARE (ftell (fp), 5); -+ xfclose (fp); -+ -+ verbose_printf ("test read error\n"); -+ fp = xfopen (file1, "r"); -+ xclose (fileno (fp)); -+ memset (buf, 0, sizeof buf); -+ ret = fread (buf, 1, sizeof buf, fp); -+ TEST_COMPARE (ret, 0); -+ TEST_COMPARE (feof (fp), 0); -+ TEST_COMPARE (!!ferror (fp), 1); -+ fclose (fp); -+ -+ verbose_printf ("test zero size\n"); -+ fp = xfopen (file1, "r"); -+ ret = fread (buf, 0, SIZE_MAX, fp); -+ TEST_COMPARE (ret, 0); -+ TEST_COMPARE (feof (fp), 0); -+ TEST_COMPARE (ferror (fp), 0); -+ TEST_COMPARE (ftell (fp), 0); -+ xfclose (fp); -+ -+ verbose_printf ("test zero items\n"); -+ fp = xfopen (file1, "r"); -+ ret = fread (buf, SIZE_MAX, 0, fp); -+ TEST_COMPARE (ret, 0); -+ TEST_COMPARE (feof (fp), 0); -+ TEST_COMPARE (ferror (fp), 0); -+ TEST_COMPARE (ftell (fp), 0); -+ xfclose (fp); -+ -+ free (temp_dir); -+ free (file1); -+ return 0; -+} -+ -+#include - -commit 9bc76c7ca4d6022fd588c274d139813f99e04f35 -Author: Joseph Myers -Date: Wed Aug 14 17:15:46 2024 +0000 - - Test errno setting on strtod overflow in tst-strtod-round - - We have no tests that errno is set to ERANGE on overflow of - strtod-family functions (we do have some tests for underflow, in - tst-strtod-underflow). Add such tests to tst-strtod-round. - - Tested for x86_64. - - (cherry picked from commit 207d64feb26279e152c50744e3c37e68491aca99) - -diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c -index 6fba4b5228..c3cc0201d4 100644 ---- a/stdlib/tst-strtod-round-skeleton.c -+++ b/stdlib/tst-strtod-round-skeleton.c -@@ -21,6 +21,7 @@ - declared in the headers. */ - #define _LIBC_TEST 1 - #define __STDC_WANT_IEC_60559_TYPES_EXT__ -+#include - #include - #include - #include -@@ -205,7 +206,9 @@ struct test { - #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ - { \ - feclearexcept (FE_ALL_EXCEPT); \ -+ errno = 0; \ - FTYPE f = STRTO (FSUF) (s, NULL); \ -+ int new_errno = errno; \ - if (f != expected->FSUF \ - || (copysign ## CSUF) (1.0 ## LSUF, f) \ - != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \ -@@ -254,6 +257,14 @@ struct test { - printf ("ignoring this exception error\n"); \ - } \ - } \ -+ if (overflow->FSUF && new_errno != ERANGE) \ -+ { \ -+ printf (FNPFXS "to" #FSUF \ -+ " (" STRM ") left errno == %d," \ -+ " not %d (ERANGE)\n", \ -+ s, new_errno, ERANGE); \ -+ result = 1; \ -+ } \ - } \ - } - - -commit e06153665fa931e4c7d2a3ecc14e5197e96143a7 -Author: Joseph Myers -Date: Tue Aug 27 12:38:01 2024 +0000 - - More thoroughly test underflow / errno in tst-strtod-round - - Add tests of underflow in tst-strtod-round, and thus also test for - errno being unchanged when there is neither overflow nor underflow. - The errno setting before the function call to test for being unchanged - is adjusted to set errno to 12345 instead of 0, so that any bugs where - strtod sets errno to 0 would be detected. - - This doesn't add any new test inputs for tst-strtod-round, and in - particular doesn't cover the edge cases of underflow the way - tst-strtod-underflow does (none of the existing test inputs for - tst-strtod-round actually exercise cases that have underflow with - before-rounding tininess detection but not with after-rounding - tininess detection), but at least it provides some coverage (as per - the recent discussions) that ordinary non-overflowing non-underflowing - inputs to these functions do not set errno. - - Tested for x86_64. - - (cherry picked from commit d73ed2601b7c3c93c3529149a3d7f7b6177900a8) - -diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c -index e48bf4d6ea..7ce735f81d 100644 ---- a/stdlib/gen-tst-strtod-round.c -+++ b/stdlib/gen-tst-strtod-round.c -@@ -46,6 +46,7 @@ static int - string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd) - { - mpfr_clear_overflow (); -+ mpfr_clear_underflow (); - #ifdef WORKAROUND - mpfr_t f2; - mpfr_init2 (f2, 100000); -@@ -53,12 +54,16 @@ string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd) - int r = mpfr_set (f, f2, rnd); - r |= mpfr_subnormalize (f, r, rnd); - mpfr_clear (f2); -- return r0 | r; -+ r |= r0; - #else - int r = mpfr_strtofr (f, s, NULL, 0, rnd); - r |= mpfr_subnormalize (f, r, rnd); -- return r; - #endif -+ if (r == 0) -+ /* The MPFR underflow flag is set for exact subnormal results, -+ which is not wanted here. */ -+ mpfr_clear_underflow (); -+ return r; - } - - void -@@ -70,6 +75,21 @@ print_fp (FILE *fout, mpfr_t f, const char *suffix) - mpfr_fprintf (fout, "\t%Ra%s", f, suffix); - } - -+static const char * -+suffix_to_print (bool overflow, bool underflow, bool underflow_before_rounding, -+ bool with_comma) -+{ -+ if (overflow) -+ return with_comma ? ", true, false,\n" : ", true, false"; -+ if (underflow) -+ return with_comma ? ", false, true,\n" : ", false, true"; -+ if (underflow_before_rounding) -+ return (with_comma -+ ? ", false, !TININESS_AFTER_ROUNDING,\n" -+ : ", false, !TININESS_AFTER_ROUNDING"); -+ return with_comma ? ", false, false,\n" : ", false, false"; -+} -+ - static void - round_str (FILE *fout, const char *s, int prec, int emin, int emax, - bool ibm_ld) -@@ -80,8 +100,11 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax, - mpfr_set_emin (emin); - mpfr_set_emax (emax); - mpfr_init (f); -+ string_to_fp (f, s, MPFR_RNDZ); -+ bool underflow_before_rounding = mpfr_underflow_p () != 0; - int r = string_to_fp (f, s, MPFR_RNDD); - bool overflow = mpfr_overflow_p () != 0; -+ bool underflow = mpfr_underflow_p () != 0; - if (ibm_ld) - { - assert (prec == 106 && emin == -1073 && emax == 1024); -@@ -97,19 +120,27 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax, - } - } - mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true"); -- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); -+ print_fp (fout, f, -+ suffix_to_print (overflow, underflow, underflow_before_rounding, -+ true)); - string_to_fp (f, s, MPFR_RNDN); - overflow = (mpfr_overflow_p () != 0 - || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); -- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); -+ print_fp (fout, f, -+ suffix_to_print (overflow, underflow, underflow_before_rounding, -+ true)); - string_to_fp (f, s, MPFR_RNDZ); - overflow = (mpfr_overflow_p () != 0 - || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); -- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); -+ print_fp (fout, f, -+ suffix_to_print (overflow, underflow, underflow_before_rounding, -+ true)); - string_to_fp (f, s, MPFR_RNDU); - overflow = (mpfr_overflow_p () != 0 - || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); -- print_fp (fout, f, overflow ? ", true" : ", false"); -+ print_fp (fout, f, -+ suffix_to_print (overflow, underflow, underflow_before_rounding, -+ false)); - mpfr_clear (f); - if (ibm_ld) - mpfr_clear (max_value); -diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h -index 8899d15f9b..13e62dd2b0 100644 ---- a/stdlib/tst-strtod-round-data.h -+++ b/stdlib/tst-strtod-round-data.h -@@ -2,1852 +2,1852 @@ - static const struct test tests[] = { - TEST ("3.518437208883201171875E+013", - false, -- 0x2p+44, false, -- 0x2p+44, false, -- 0x2p+44, false, -- 0x2.000004p+44, false, -- false, -- 0x2.0000000000002p+44, false, -- 0x2.0000000000004p+44, false, -- 0x2.0000000000002p+44, false, -- 0x2.0000000000004p+44, false, -- true, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- true, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- true, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- true, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false, -- 0x2.0000000000003p+44, false), -+ 0x2p+44, false, false, -+ 0x2p+44, false, false, -+ 0x2p+44, false, false, -+ 0x2.000004p+44, false, false, -+ false, -+ 0x2.0000000000002p+44, false, false, -+ 0x2.0000000000004p+44, false, false, -+ 0x2.0000000000002p+44, false, false, -+ 0x2.0000000000004p+44, false, false, -+ true, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ true, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ true, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ true, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false, -+ 0x2.0000000000003p+44, false, false), - TEST ("1.00000005960464477550", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000001p+0, false, -- false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000004p+0, false, -- false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000004p+0, false, -- false, -- 0x1.0000010000000002048242f2ffp+0, false, -- 0x1.0000010000000002048242f2ff8p+0, false, -- 0x1.0000010000000002048242f2ffp+0, false, -- 0x1.0000010000000002048242f2ff8p+0, false, -- false, -- 0x1.0000010000000002048242f2ff66p+0, false, -- 0x1.0000010000000002048242f2ff67p+0, false, -- 0x1.0000010000000002048242f2ff66p+0, false, -- 0x1.0000010000000002048242f2ff67p+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000004p+0, false, false, -+ false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000004p+0, false, false, -+ false, -+ 0x1.0000010000000002048242f2ffp+0, false, false, -+ 0x1.0000010000000002048242f2ff8p+0, false, false, -+ 0x1.0000010000000002048242f2ffp+0, false, false, -+ 0x1.0000010000000002048242f2ff8p+0, false, false, -+ false, -+ 0x1.0000010000000002048242f2ff66p+0, false, false, -+ 0x1.0000010000000002048242f2ff67p+0, false, false, -+ 0x1.0000010000000002048242f2ff66p+0, false, false, -+ 0x1.0000010000000002048242f2ff67p+0, false, false), - TEST ("1.0000000596046447755", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000001p+0, false, -- false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000004p+0, false, -- false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000002p+0, false, -- 0x1.0000010000000004p+0, false, -- false, -- 0x1.0000010000000002048242f2ffp+0, false, -- 0x1.0000010000000002048242f2ff8p+0, false, -- 0x1.0000010000000002048242f2ffp+0, false, -- 0x1.0000010000000002048242f2ff8p+0, false, -- false, -- 0x1.0000010000000002048242f2ff66p+0, false, -- 0x1.0000010000000002048242f2ff67p+0, false, -- 0x1.0000010000000002048242f2ff66p+0, false, -- 0x1.0000010000000002048242f2ff67p+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000004p+0, false, false, -+ false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ 0x1.0000010000000004p+0, false, false, -+ false, -+ 0x1.0000010000000002048242f2ffp+0, false, false, -+ 0x1.0000010000000002048242f2ff8p+0, false, false, -+ 0x1.0000010000000002048242f2ffp+0, false, false, -+ 0x1.0000010000000002048242f2ff8p+0, false, false, -+ false, -+ 0x1.0000010000000002048242f2ff66p+0, false, false, -+ 0x1.0000010000000002048242f2ff67p+0, false, false, -+ 0x1.0000010000000002048242f2ff66p+0, false, false, -+ 0x1.0000010000000002048242f2ff67p+0, false, false), - TEST ("1.000000059604644776", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000001p+0, false, -- false, -- 0x1.000001000000000ap+0, false, -- 0x1.000001000000000cp+0, false, -- 0x1.000001000000000ap+0, false, -- 0x1.000001000000000cp+0, false, -- false, -- 0x1.000001000000000ap+0, false, -- 0x1.000001000000000cp+0, false, -- 0x1.000001000000000ap+0, false, -- 0x1.000001000000000cp+0, false, -- false, -- 0x1.000001000000000b3db12bdc21p+0, false, -- 0x1.000001000000000b3db12bdc21p+0, false, -- 0x1.000001000000000b3db12bdc21p+0, false, -- 0x1.000001000000000b3db12bdc218p+0, false, -- false, -- 0x1.000001000000000b3db12bdc213cp+0, false, -- 0x1.000001000000000b3db12bdc213dp+0, false, -- 0x1.000001000000000b3db12bdc213cp+0, false, -- 0x1.000001000000000b3db12bdc213dp+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ false, -+ 0x1.000001000000000ap+0, false, false, -+ 0x1.000001000000000cp+0, false, false, -+ 0x1.000001000000000ap+0, false, false, -+ 0x1.000001000000000cp+0, false, false, -+ false, -+ 0x1.000001000000000ap+0, false, false, -+ 0x1.000001000000000cp+0, false, false, -+ 0x1.000001000000000ap+0, false, false, -+ 0x1.000001000000000cp+0, false, false, -+ false, -+ 0x1.000001000000000b3db12bdc21p+0, false, false, -+ 0x1.000001000000000b3db12bdc21p+0, false, false, -+ 0x1.000001000000000b3db12bdc21p+0, false, false, -+ 0x1.000001000000000b3db12bdc218p+0, false, false, -+ false, -+ 0x1.000001000000000b3db12bdc213cp+0, false, false, -+ 0x1.000001000000000b3db12bdc213dp+0, false, false, -+ 0x1.000001000000000b3db12bdc213cp+0, false, false, -+ 0x1.000001000000000b3db12bdc213dp+0, false, false), - TEST ("1.000000059604644775", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000000fffffffp+0, false, -- 0x1.000001p+0, false, -- 0x1.000000fffffffp+0, false, -- 0x1.000001p+0, false, -- false, -- 0x1.000000fffffffff8p+0, false, -- 0x1.000000fffffffff8p+0, false, -- 0x1.000000fffffffff8p+0, false, -- 0x1.000000fffffffffap+0, false, -- false, -- 0x1.000000fffffffff8p+0, false, -- 0x1.000000fffffffff8p+0, false, -- 0x1.000000fffffffff8p+0, false, -- 0x1.000000fffffffffap+0, false, -- false, -- 0x1.000000fffffffff8cb535a09dd8p+0, false, -- 0x1.000000fffffffff8cb535a09dd8p+0, false, -- 0x1.000000fffffffff8cb535a09dd8p+0, false, -- 0x1.000000fffffffff8cb535a09dep+0, false, -- false, -- 0x1.000000fffffffff8cb535a09dd9p+0, false, -- 0x1.000000fffffffff8cb535a09dd91p+0, false, -- 0x1.000000fffffffff8cb535a09dd9p+0, false, -- 0x1.000000fffffffff8cb535a09dd91p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000000fffffffp+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000000fffffffp+0, false, false, -+ 0x1.000001p+0, false, false, -+ false, -+ 0x1.000000fffffffff8p+0, false, false, -+ 0x1.000000fffffffff8p+0, false, false, -+ 0x1.000000fffffffff8p+0, false, false, -+ 0x1.000000fffffffffap+0, false, false, -+ false, -+ 0x1.000000fffffffff8p+0, false, false, -+ 0x1.000000fffffffff8p+0, false, false, -+ 0x1.000000fffffffff8p+0, false, false, -+ 0x1.000000fffffffffap+0, false, false, -+ false, -+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false, -+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false, -+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false, -+ 0x1.000000fffffffff8cb535a09dep+0, false, false, -+ false, -+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false, -+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false, -+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false, -+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false), - TEST ("1.00000005960464478", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000001p+0, false, -- false, -- 0x1.0000010000000054p+0, false, -- 0x1.0000010000000056p+0, false, -- 0x1.0000010000000054p+0, false, -- 0x1.0000010000000056p+0, false, -- false, -- 0x1.0000010000000054p+0, false, -- 0x1.0000010000000056p+0, false, -- 0x1.0000010000000054p+0, false, -- 0x1.0000010000000056p+0, false, -- false, -- 0x1.0000010000000055072873252f8p+0, false, -- 0x1.0000010000000055072873253p+0, false, -- 0x1.0000010000000055072873252f8p+0, false, -- 0x1.0000010000000055072873253p+0, false, -- false, -- 0x1.0000010000000055072873252febp+0, false, -- 0x1.0000010000000055072873252febp+0, false, -- 0x1.0000010000000055072873252febp+0, false, -- 0x1.0000010000000055072873252fecp+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ false, -+ 0x1.0000010000000054p+0, false, false, -+ 0x1.0000010000000056p+0, false, false, -+ 0x1.0000010000000054p+0, false, false, -+ 0x1.0000010000000056p+0, false, false, -+ false, -+ 0x1.0000010000000054p+0, false, false, -+ 0x1.0000010000000056p+0, false, false, -+ 0x1.0000010000000054p+0, false, false, -+ 0x1.0000010000000056p+0, false, false, -+ false, -+ 0x1.0000010000000055072873252f8p+0, false, false, -+ 0x1.0000010000000055072873253p+0, false, false, -+ 0x1.0000010000000055072873252f8p+0, false, false, -+ 0x1.0000010000000055072873253p+0, false, false, -+ false, -+ 0x1.0000010000000055072873252febp+0, false, false, -+ 0x1.0000010000000055072873252febp+0, false, false, -+ 0x1.0000010000000055072873252febp+0, false, false, -+ 0x1.0000010000000055072873252fecp+0, false, false), - TEST ("1.0000000596046448", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000001p+0, false, -- false, -- 0x1.00000100000001c4p+0, false, -- 0x1.00000100000001c6p+0, false, -- 0x1.00000100000001c4p+0, false, -- 0x1.00000100000001c6p+0, false, -- false, -- 0x1.00000100000001c4p+0, false, -- 0x1.00000100000001c6p+0, false, -- 0x1.00000100000001c4p+0, false, -- 0x1.00000100000001c6p+0, false, -- false, -- 0x1.00000100000001c5f67cd79279p+0, false, -- 0x1.00000100000001c5f67cd792798p+0, false, -- 0x1.00000100000001c5f67cd79279p+0, false, -- 0x1.00000100000001c5f67cd792798p+0, false, -- false, -- 0x1.00000100000001c5f67cd7927953p+0, false, -- 0x1.00000100000001c5f67cd7927954p+0, false, -- 0x1.00000100000001c5f67cd7927953p+0, false, -- 0x1.00000100000001c5f67cd7927954p+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ false, -+ 0x1.00000100000001c4p+0, false, false, -+ 0x1.00000100000001c6p+0, false, false, -+ 0x1.00000100000001c4p+0, false, false, -+ 0x1.00000100000001c6p+0, false, false, -+ false, -+ 0x1.00000100000001c4p+0, false, false, -+ 0x1.00000100000001c6p+0, false, false, -+ 0x1.00000100000001c4p+0, false, false, -+ 0x1.00000100000001c6p+0, false, false, -+ false, -+ 0x1.00000100000001c5f67cd79279p+0, false, false, -+ 0x1.00000100000001c5f67cd792798p+0, false, false, -+ 0x1.00000100000001c5f67cd79279p+0, false, false, -+ 0x1.00000100000001c5f67cd792798p+0, false, false, -+ false, -+ 0x1.00000100000001c5f67cd7927953p+0, false, false, -+ 0x1.00000100000001c5f67cd7927954p+0, false, false, -+ 0x1.00000100000001c5f67cd7927953p+0, false, false, -+ 0x1.00000100000001c5f67cd7927954p+0, false, false), - TEST ("1.000000059604645", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.0000010000001p+0, false, -- 0x1.0000010000001p+0, false, -- 0x1.0000010000001p+0, false, -- 0x1.0000010000002p+0, false, -- false, -- 0x1.000001000000102ep+0, false, -- 0x1.000001000000103p+0, false, -- 0x1.000001000000102ep+0, false, -- 0x1.000001000000103p+0, false, -- false, -- 0x1.000001000000102ep+0, false, -- 0x1.000001000000103p+0, false, -- 0x1.000001000000102ep+0, false, -- 0x1.000001000000103p+0, false, -- false, -- 0x1.000001000000102f4fc8c3d757p+0, false, -- 0x1.000001000000102f4fc8c3d7578p+0, false, -- 0x1.000001000000102f4fc8c3d757p+0, false, -- 0x1.000001000000102f4fc8c3d7578p+0, false, -- false, -- 0x1.000001000000102f4fc8c3d75769p+0, false, -- 0x1.000001000000102f4fc8c3d75769p+0, false, -- 0x1.000001000000102f4fc8c3d75769p+0, false, -- 0x1.000001000000102f4fc8c3d7576ap+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.0000010000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ 0x1.0000010000002p+0, false, false, -+ false, -+ 0x1.000001000000102ep+0, false, false, -+ 0x1.000001000000103p+0, false, false, -+ 0x1.000001000000102ep+0, false, false, -+ 0x1.000001000000103p+0, false, false, -+ false, -+ 0x1.000001000000102ep+0, false, false, -+ 0x1.000001000000103p+0, false, false, -+ 0x1.000001000000102ep+0, false, false, -+ 0x1.000001000000103p+0, false, false, -+ false, -+ 0x1.000001000000102f4fc8c3d757p+0, false, false, -+ 0x1.000001000000102f4fc8c3d7578p+0, false, false, -+ 0x1.000001000000102f4fc8c3d757p+0, false, false, -+ 0x1.000001000000102f4fc8c3d7578p+0, false, false, -+ false, -+ 0x1.000001000000102f4fc8c3d75769p+0, false, false, -+ 0x1.000001000000102f4fc8c3d75769p+0, false, false, -+ 0x1.000001000000102f4fc8c3d75769p+0, false, false, -+ 0x1.000001000000102f4fc8c3d7576ap+0, false, false), - TEST ("1.00000005960464", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000000fffffeap+0, false, -- 0x1.000000fffffeap+0, false, -- 0x1.000000fffffeap+0, false, -- 0x1.000000fffffebp+0, false, -- false, -- 0x1.000000fffffea7e4p+0, false, -- 0x1.000000fffffea7e6p+0, false, -- 0x1.000000fffffea7e4p+0, false, -- 0x1.000000fffffea7e6p+0, false, -- false, -- 0x1.000000fffffea7e4p+0, false, -- 0x1.000000fffffea7e6p+0, false, -- 0x1.000000fffffea7e4p+0, false, -- 0x1.000000fffffea7e6p+0, false, -- false, -- 0x1.000000fffffea7e5975eb11da7p+0, false, -- 0x1.000000fffffea7e5975eb11da78p+0, false, -- 0x1.000000fffffea7e5975eb11da7p+0, false, -- 0x1.000000fffffea7e5975eb11da78p+0, false, -- false, -- 0x1.000000fffffea7e5975eb11da74ap+0, false, -- 0x1.000000fffffea7e5975eb11da74bp+0, false, -- 0x1.000000fffffea7e5975eb11da74ap+0, false, -- 0x1.000000fffffea7e5975eb11da74bp+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000000fffffeap+0, false, false, -+ 0x1.000000fffffeap+0, false, false, -+ 0x1.000000fffffeap+0, false, false, -+ 0x1.000000fffffebp+0, false, false, -+ false, -+ 0x1.000000fffffea7e4p+0, false, false, -+ 0x1.000000fffffea7e6p+0, false, false, -+ 0x1.000000fffffea7e4p+0, false, false, -+ 0x1.000000fffffea7e6p+0, false, false, -+ false, -+ 0x1.000000fffffea7e4p+0, false, false, -+ 0x1.000000fffffea7e6p+0, false, false, -+ 0x1.000000fffffea7e4p+0, false, false, -+ 0x1.000000fffffea7e6p+0, false, false, -+ false, -+ 0x1.000000fffffea7e5975eb11da7p+0, false, false, -+ 0x1.000000fffffea7e5975eb11da78p+0, false, false, -+ 0x1.000000fffffea7e5975eb11da7p+0, false, false, -+ 0x1.000000fffffea7e5975eb11da78p+0, false, false, -+ false, -+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false, -+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false, -+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false, -+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false), - TEST ("1.0000000596046", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000000fffff36p+0, false, -- 0x1.000000fffff36p+0, false, -- 0x1.000000fffff36p+0, false, -- 0x1.000000fffff37p+0, false, -- false, -- 0x1.000000fffff36596p+0, false, -- 0x1.000000fffff36598p+0, false, -- 0x1.000000fffff36596p+0, false, -- 0x1.000000fffff36598p+0, false, -- false, -- 0x1.000000fffff36596p+0, false, -- 0x1.000000fffff36598p+0, false, -- 0x1.000000fffff36596p+0, false, -- 0x1.000000fffff36598p+0, false, -- false, -- 0x1.000000fffff36597d40e1b5026p+0, false, -- 0x1.000000fffff36597d40e1b50268p+0, false, -- 0x1.000000fffff36597d40e1b5026p+0, false, -- 0x1.000000fffff36597d40e1b50268p+0, false, -- false, -- 0x1.000000fffff36597d40e1b502655p+0, false, -- 0x1.000000fffff36597d40e1b502656p+0, false, -- 0x1.000000fffff36597d40e1b502655p+0, false, -- 0x1.000000fffff36597d40e1b502656p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000000fffff36p+0, false, false, -+ 0x1.000000fffff36p+0, false, false, -+ 0x1.000000fffff36p+0, false, false, -+ 0x1.000000fffff37p+0, false, false, -+ false, -+ 0x1.000000fffff36596p+0, false, false, -+ 0x1.000000fffff36598p+0, false, false, -+ 0x1.000000fffff36596p+0, false, false, -+ 0x1.000000fffff36598p+0, false, false, -+ false, -+ 0x1.000000fffff36596p+0, false, false, -+ 0x1.000000fffff36598p+0, false, false, -+ 0x1.000000fffff36596p+0, false, false, -+ 0x1.000000fffff36598p+0, false, false, -+ false, -+ 0x1.000000fffff36597d40e1b5026p+0, false, false, -+ 0x1.000000fffff36597d40e1b50268p+0, false, false, -+ 0x1.000000fffff36597d40e1b5026p+0, false, false, -+ 0x1.000000fffff36597d40e1b50268p+0, false, false, -+ false, -+ 0x1.000000fffff36597d40e1b502655p+0, false, false, -+ 0x1.000000fffff36597d40e1b502656p+0, false, false, -+ 0x1.000000fffff36597d40e1b502655p+0, false, false, -+ 0x1.000000fffff36597d40e1b502656p+0, false, false), - TEST ("1.000000059605", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001000063fp+0, false, -- 0x1.000001000064p+0, false, -- 0x1.000001000063fp+0, false, -- 0x1.000001000064p+0, false, -- false, -- 0x1.000001000063fcap+0, false, -- 0x1.000001000063fca2p+0, false, -- 0x1.000001000063fcap+0, false, -- 0x1.000001000063fca2p+0, false, -- false, -- 0x1.000001000063fcap+0, false, -- 0x1.000001000063fca2p+0, false, -- 0x1.000001000063fcap+0, false, -- 0x1.000001000063fca2p+0, false, -- false, -- 0x1.000001000063fca17533f5572f8p+0, false, -- 0x1.000001000063fca17533f5573p+0, false, -- 0x1.000001000063fca17533f5572f8p+0, false, -- 0x1.000001000063fca17533f5573p+0, false, -- false, -- 0x1.000001000063fca17533f5572fe9p+0, false, -- 0x1.000001000063fca17533f5572feap+0, false, -- 0x1.000001000063fca17533f5572fe9p+0, false, -- 0x1.000001000063fca17533f5572feap+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001000063fp+0, false, false, -+ 0x1.000001000064p+0, false, false, -+ 0x1.000001000063fp+0, false, false, -+ 0x1.000001000064p+0, false, false, -+ false, -+ 0x1.000001000063fcap+0, false, false, -+ 0x1.000001000063fca2p+0, false, false, -+ 0x1.000001000063fcap+0, false, false, -+ 0x1.000001000063fca2p+0, false, false, -+ false, -+ 0x1.000001000063fcap+0, false, false, -+ 0x1.000001000063fca2p+0, false, false, -+ 0x1.000001000063fcap+0, false, false, -+ 0x1.000001000063fca2p+0, false, false, -+ false, -+ 0x1.000001000063fca17533f5572f8p+0, false, false, -+ 0x1.000001000063fca17533f5573p+0, false, false, -+ 0x1.000001000063fca17533f5572f8p+0, false, false, -+ 0x1.000001000063fca17533f5573p+0, false, false, -+ false, -+ 0x1.000001000063fca17533f5572fe9p+0, false, false, -+ 0x1.000001000063fca17533f5572feap+0, false, false, -+ 0x1.000001000063fca17533f5572fe9p+0, false, false, -+ 0x1.000001000063fca17533f5572feap+0, false, false), - TEST ("1.00000005960", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000000fffae49p+0, false, -- 0x1.000000fffae4ap+0, false, -- 0x1.000000fffae49p+0, false, -- 0x1.000000fffae4ap+0, false, -- false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- false, -- 0x1.000000fffae49ca916dacfff38p+0, false, -- 0x1.000000fffae49ca916dacfff38p+0, false, -- 0x1.000000fffae49ca916dacfff38p+0, false, -- 0x1.000000fffae49ca916dacfff388p+0, false, -- false, -- 0x1.000000fffae49ca916dacfff382dp+0, false, -- 0x1.000000fffae49ca916dacfff382dp+0, false, -- 0x1.000000fffae49ca916dacfff382dp+0, false, -- 0x1.000000fffae49ca916dacfff382ep+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000000fffae49p+0, false, false, -+ 0x1.000000fffae4ap+0, false, false, -+ 0x1.000000fffae49p+0, false, false, -+ 0x1.000000fffae4ap+0, false, false, -+ false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ false, -+ 0x1.000000fffae49ca916dacfff38p+0, false, false, -+ 0x1.000000fffae49ca916dacfff38p+0, false, false, -+ 0x1.000000fffae49ca916dacfff38p+0, false, false, -+ 0x1.000000fffae49ca916dacfff388p+0, false, false, -+ false, -+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, -+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, -+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, -+ 0x1.000000fffae49ca916dacfff382ep+0, false, false), - TEST ("1.0000000596", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000000fffae49p+0, false, -- 0x1.000000fffae4ap+0, false, -- 0x1.000000fffae49p+0, false, -- 0x1.000000fffae4ap+0, false, -- false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- 0x1.000000fffae49ca8p+0, false, -- 0x1.000000fffae49caap+0, false, -- false, -- 0x1.000000fffae49ca916dacfff38p+0, false, -- 0x1.000000fffae49ca916dacfff38p+0, false, -- 0x1.000000fffae49ca916dacfff38p+0, false, -- 0x1.000000fffae49ca916dacfff388p+0, false, -- false, -- 0x1.000000fffae49ca916dacfff382dp+0, false, -- 0x1.000000fffae49ca916dacfff382dp+0, false, -- 0x1.000000fffae49ca916dacfff382dp+0, false, -- 0x1.000000fffae49ca916dacfff382ep+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000000fffae49p+0, false, false, -+ 0x1.000000fffae4ap+0, false, false, -+ 0x1.000000fffae49p+0, false, false, -+ 0x1.000000fffae4ap+0, false, false, -+ false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ 0x1.000000fffae49ca8p+0, false, false, -+ 0x1.000000fffae49caap+0, false, false, -+ false, -+ 0x1.000000fffae49ca916dacfff38p+0, false, false, -+ 0x1.000000fffae49ca916dacfff38p+0, false, false, -+ 0x1.000000fffae49ca916dacfff38p+0, false, false, -+ 0x1.000000fffae49ca916dacfff388p+0, false, false, -+ false, -+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, -+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, -+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, -+ 0x1.000000fffae49ca916dacfff382ep+0, false, false), - TEST ("1.000000060", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.00000101b2b29p+0, false, -- 0x1.00000101b2b2ap+0, false, -- 0x1.00000101b2b29p+0, false, -- 0x1.00000101b2b2ap+0, false, -- false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a48p+0, false, -- false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a48p+0, false, -- false, -- 0x1.00000101b2b29a4692b67b7ca3p+0, false, -- 0x1.00000101b2b29a4692b67b7ca3p+0, false, -- 0x1.00000101b2b29a4692b67b7ca3p+0, false, -- 0x1.00000101b2b29a4692b67b7ca38p+0, false, -- false, -- 0x1.00000101b2b29a4692b67b7ca313p+0, false, -- 0x1.00000101b2b29a4692b67b7ca314p+0, false, -- 0x1.00000101b2b29a4692b67b7ca313p+0, false, -- 0x1.00000101b2b29a4692b67b7ca314p+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.00000101b2b29p+0, false, false, -+ 0x1.00000101b2b2ap+0, false, false, -+ 0x1.00000101b2b29p+0, false, false, -+ 0x1.00000101b2b2ap+0, false, false, -+ false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a48p+0, false, false, -+ false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a48p+0, false, false, -+ false, -+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false, -+ false, -+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false), - TEST ("1.00000006", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.00000101b2b29p+0, false, -- 0x1.00000101b2b2ap+0, false, -- 0x1.00000101b2b29p+0, false, -- 0x1.00000101b2b2ap+0, false, -- false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a48p+0, false, -- false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a46p+0, false, -- 0x1.00000101b2b29a48p+0, false, -- false, -- 0x1.00000101b2b29a4692b67b7ca3p+0, false, -- 0x1.00000101b2b29a4692b67b7ca3p+0, false, -- 0x1.00000101b2b29a4692b67b7ca3p+0, false, -- 0x1.00000101b2b29a4692b67b7ca38p+0, false, -- false, -- 0x1.00000101b2b29a4692b67b7ca313p+0, false, -- 0x1.00000101b2b29a4692b67b7ca314p+0, false, -- 0x1.00000101b2b29a4692b67b7ca313p+0, false, -- 0x1.00000101b2b29a4692b67b7ca314p+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.00000101b2b29p+0, false, false, -+ 0x1.00000101b2b2ap+0, false, false, -+ 0x1.00000101b2b29p+0, false, false, -+ 0x1.00000101b2b2ap+0, false, false, -+ false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a48p+0, false, false, -+ false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a46p+0, false, false, -+ 0x1.00000101b2b29a48p+0, false, false, -+ false, -+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false, -+ false, -+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, -+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false), - TEST ("1.0000001", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001ad7f29ap+0, false, -- 0x1.000001ad7f29bp+0, false, -- 0x1.000001ad7f29ap+0, false, -- 0x1.000001ad7f29bp+0, false, -- false, -- 0x1.000001ad7f29abcap+0, false, -- 0x1.000001ad7f29abcap+0, false, -- 0x1.000001ad7f29abcap+0, false, -- 0x1.000001ad7f29abccp+0, false, -- false, -- 0x1.000001ad7f29abcap+0, false, -- 0x1.000001ad7f29abcap+0, false, -- 0x1.000001ad7f29abcap+0, false, -- 0x1.000001ad7f29abccp+0, false, -- false, -- 0x1.000001ad7f29abcaf485787a65p+0, false, -- 0x1.000001ad7f29abcaf485787a65p+0, false, -- 0x1.000001ad7f29abcaf485787a65p+0, false, -- 0x1.000001ad7f29abcaf485787a658p+0, false, -- false, -- 0x1.000001ad7f29abcaf485787a652p+0, false, -- 0x1.000001ad7f29abcaf485787a6521p+0, false, -- 0x1.000001ad7f29abcaf485787a652p+0, false, -- 0x1.000001ad7f29abcaf485787a6521p+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001ad7f29ap+0, false, false, -+ 0x1.000001ad7f29bp+0, false, false, -+ 0x1.000001ad7f29ap+0, false, false, -+ 0x1.000001ad7f29bp+0, false, false, -+ false, -+ 0x1.000001ad7f29abcap+0, false, false, -+ 0x1.000001ad7f29abcap+0, false, false, -+ 0x1.000001ad7f29abcap+0, false, false, -+ 0x1.000001ad7f29abccp+0, false, false, -+ false, -+ 0x1.000001ad7f29abcap+0, false, false, -+ 0x1.000001ad7f29abcap+0, false, false, -+ 0x1.000001ad7f29abcap+0, false, false, -+ 0x1.000001ad7f29abccp+0, false, false, -+ false, -+ 0x1.000001ad7f29abcaf485787a65p+0, false, false, -+ 0x1.000001ad7f29abcaf485787a65p+0, false, false, -+ 0x1.000001ad7f29abcaf485787a65p+0, false, false, -+ 0x1.000001ad7f29abcaf485787a658p+0, false, false, -+ false, -+ 0x1.000001ad7f29abcaf485787a652p+0, false, false, -+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false, -+ 0x1.000001ad7f29abcaf485787a652p+0, false, false, -+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false), - TEST ("1.000000", - true, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- true, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- true, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- true, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- true, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- true, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ true, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ true, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ true, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ true, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ true, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false), - TEST ("1.00000000000000011113", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- false, -- 0x1.0000000000000801fc96557232p+0, false, -- 0x1.0000000000000801fc96557232p+0, false, -- 0x1.0000000000000801fc96557232p+0, false, -- 0x1.0000000000000801fc965572328p+0, false, -- false, -- 0x1.0000000000000801fc9655723222p+0, false, -- 0x1.0000000000000801fc9655723222p+0, false, -- 0x1.0000000000000801fc9655723222p+0, false, -- 0x1.0000000000000801fc9655723223p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ false, -+ 0x1.0000000000000801fc96557232p+0, false, false, -+ 0x1.0000000000000801fc96557232p+0, false, false, -+ 0x1.0000000000000801fc96557232p+0, false, false, -+ 0x1.0000000000000801fc965572328p+0, false, false, -+ false, -+ 0x1.0000000000000801fc9655723222p+0, false, false, -+ 0x1.0000000000000801fc9655723222p+0, false, false, -+ 0x1.0000000000000801fc9655723222p+0, false, false, -+ 0x1.0000000000000801fc9655723223p+0, false, false), - TEST ("1.00000000000000011103", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- false, -- 0x1.00000000000008002459c076c48p+0, false, -- 0x1.00000000000008002459c076c5p+0, false, -- 0x1.00000000000008002459c076c48p+0, false, -- 0x1.00000000000008002459c076c5p+0, false, -- false, -- 0x1.00000000000008002459c076c4f7p+0, false, -- 0x1.00000000000008002459c076c4f8p+0, false, -- 0x1.00000000000008002459c076c4f7p+0, false, -- 0x1.00000000000008002459c076c4f8p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ false, -+ 0x1.00000000000008002459c076c48p+0, false, false, -+ 0x1.00000000000008002459c076c5p+0, false, false, -+ 0x1.00000000000008002459c076c48p+0, false, false, -+ 0x1.00000000000008002459c076c5p+0, false, false, -+ false, -+ 0x1.00000000000008002459c076c4f7p+0, false, false, -+ 0x1.00000000000008002459c076c4f8p+0, false, false, -+ 0x1.00000000000008002459c076c4f7p+0, false, false, -+ 0x1.00000000000008002459c076c4f8p+0, false, false), - TEST ("1.00000000000000011102", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- false, -- 0x1.00000000000007fff5207e5dap+0, false, -- 0x1.00000000000007fff5207e5da08p+0, false, -- 0x1.00000000000007fff5207e5dap+0, false, -- 0x1.00000000000007fff5207e5da08p+0, false, -- false, -- 0x1.00000000000007fff5207e5da073p+0, false, -- 0x1.00000000000007fff5207e5da073p+0, false, -- 0x1.00000000000007fff5207e5da073p+0, false, -- 0x1.00000000000007fff5207e5da074p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ false, -+ 0x1.00000000000007fff5207e5dap+0, false, false, -+ 0x1.00000000000007fff5207e5da08p+0, false, false, -+ 0x1.00000000000007fff5207e5dap+0, false, false, -+ 0x1.00000000000007fff5207e5da08p+0, false, false, -+ false, -+ 0x1.00000000000007fff5207e5da073p+0, false, false, -+ 0x1.00000000000007fff5207e5da073p+0, false, false, -+ 0x1.00000000000007fff5207e5da073p+0, false, false, -+ 0x1.00000000000007fff5207e5da074p+0, false, false), - TEST ("1.00000000000000011101", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- false, -- 0x1.00000000000007ffc5e73c447b8p+0, false, -- 0x1.00000000000007ffc5e73c447cp+0, false, -- 0x1.00000000000007ffc5e73c447b8p+0, false, -- 0x1.00000000000007ffc5e73c447cp+0, false, -- false, -- 0x1.00000000000007ffc5e73c447befp+0, false, -- 0x1.00000000000007ffc5e73c447befp+0, false, -- 0x1.00000000000007ffc5e73c447befp+0, false, -- 0x1.00000000000007ffc5e73c447bfp+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ false, -+ 0x1.00000000000007ffc5e73c447b8p+0, false, false, -+ 0x1.00000000000007ffc5e73c447cp+0, false, false, -+ 0x1.00000000000007ffc5e73c447b8p+0, false, false, -+ 0x1.00000000000007ffc5e73c447cp+0, false, false, -+ false, -+ 0x1.00000000000007ffc5e73c447befp+0, false, false, -+ 0x1.00000000000007ffc5e73c447befp+0, false, false, -+ 0x1.00000000000007ffc5e73c447befp+0, false, false, -+ 0x1.00000000000007ffc5e73c447bfp+0, false, false), - TEST ("1.0000000000000001111", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.0000000000000802p+0, false, -- false, -- 0x1.00000000000008016eea8f26c48p+0, false, -- 0x1.00000000000008016eea8f26c48p+0, false, -- 0x1.00000000000008016eea8f26c48p+0, false, -- 0x1.00000000000008016eea8f26c5p+0, false, -- false, -- 0x1.00000000000008016eea8f26c495p+0, false, -- 0x1.00000000000008016eea8f26c496p+0, false, -- 0x1.00000000000008016eea8f26c495p+0, false, -- 0x1.00000000000008016eea8f26c496p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.0000000000000802p+0, false, false, -+ false, -+ 0x1.00000000000008016eea8f26c48p+0, false, false, -+ 0x1.00000000000008016eea8f26c48p+0, false, false, -+ 0x1.00000000000008016eea8f26c48p+0, false, false, -+ 0x1.00000000000008016eea8f26c5p+0, false, false, -+ false, -+ 0x1.00000000000008016eea8f26c495p+0, false, false, -+ 0x1.00000000000008016eea8f26c496p+0, false, false, -+ 0x1.00000000000008016eea8f26c495p+0, false, false, -+ 0x1.00000000000008016eea8f26c496p+0, false, false), - TEST ("1.000000000000000111", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000007fep+0, false, -- 0x1.00000000000008p+0, false, -- false, -- 0x1.00000000000007ff96adfa2b57p+0, false, -- 0x1.00000000000007ff96adfa2b578p+0, false, -- 0x1.00000000000007ff96adfa2b57p+0, false, -- 0x1.00000000000007ff96adfa2b578p+0, false, -- false, -- 0x1.00000000000007ff96adfa2b576ap+0, false, -- 0x1.00000000000007ff96adfa2b576bp+0, false, -- 0x1.00000000000007ff96adfa2b576ap+0, false, -- 0x1.00000000000007ff96adfa2b576bp+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000007fep+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ false, -+ 0x1.00000000000007ff96adfa2b57p+0, false, false, -+ 0x1.00000000000007ff96adfa2b578p+0, false, false, -+ 0x1.00000000000007ff96adfa2b57p+0, false, false, -+ 0x1.00000000000007ff96adfa2b578p+0, false, false, -+ false, -+ 0x1.00000000000007ff96adfa2b576ap+0, false, false, -+ 0x1.00000000000007ff96adfa2b576bp+0, false, false, -+ 0x1.00000000000007ff96adfa2b576ap+0, false, false, -+ 0x1.00000000000007ff96adfa2b576bp+0, false, false), - TEST ("1.00000000000000011", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.00000000000007ecp+0, false, -- 0x1.00000000000007eep+0, false, -- 0x1.00000000000007ecp+0, false, -- 0x1.00000000000007eep+0, false, -- false, -- 0x1.00000000000007ecp+0, false, -- 0x1.00000000000007eep+0, false, -- 0x1.00000000000007ecp+0, false, -- 0x1.00000000000007eep+0, false, -- false, -- 0x1.00000000000007ed24502859138p+0, false, -- 0x1.00000000000007ed24502859138p+0, false, -- 0x1.00000000000007ed24502859138p+0, false, -- 0x1.00000000000007ed2450285914p+0, false, -- false, -- 0x1.00000000000007ed2450285913bfp+0, false, -- 0x1.00000000000007ed2450285913bfp+0, false, -- 0x1.00000000000007ed2450285913bfp+0, false, -- 0x1.00000000000007ed2450285913cp+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.00000000000007ecp+0, false, false, -+ 0x1.00000000000007eep+0, false, false, -+ 0x1.00000000000007ecp+0, false, false, -+ 0x1.00000000000007eep+0, false, false, -+ false, -+ 0x1.00000000000007ecp+0, false, false, -+ 0x1.00000000000007eep+0, false, false, -+ 0x1.00000000000007ecp+0, false, false, -+ 0x1.00000000000007eep+0, false, false, -+ false, -+ 0x1.00000000000007ed24502859138p+0, false, false, -+ 0x1.00000000000007ed24502859138p+0, false, false, -+ 0x1.00000000000007ed24502859138p+0, false, false, -+ 0x1.00000000000007ed2450285914p+0, false, false, -+ false, -+ 0x1.00000000000007ed2450285913bfp+0, false, false, -+ 0x1.00000000000007ed2450285913bfp+0, false, false, -+ 0x1.00000000000007ed2450285913bfp+0, false, false, -+ 0x1.00000000000007ed2450285913cp+0, false, false), - TEST ("1.0000000000000001", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1.0000000000000734p+0, false, -- 0x1.0000000000000734p+0, false, -- 0x1.0000000000000734p+0, false, -- 0x1.0000000000000736p+0, false, -- false, -- 0x1.0000000000000734p+0, false, -- 0x1.0000000000000734p+0, false, -- 0x1.0000000000000734p+0, false, -- 0x1.0000000000000736p+0, false, -- false, -- 0x1.0000000000000734aca5f6226fp+0, false, -- 0x1.0000000000000734aca5f6226fp+0, false, -- 0x1.0000000000000734aca5f6226fp+0, false, -- 0x1.0000000000000734aca5f6226f8p+0, false, -- false, -- 0x1.0000000000000734aca5f6226f0ap+0, false, -- 0x1.0000000000000734aca5f6226f0bp+0, false, -- 0x1.0000000000000734aca5f6226f0ap+0, false, -- 0x1.0000000000000734aca5f6226f0bp+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1.0000000000000734p+0, false, false, -+ 0x1.0000000000000734p+0, false, false, -+ 0x1.0000000000000734p+0, false, false, -+ 0x1.0000000000000736p+0, false, false, -+ false, -+ 0x1.0000000000000734p+0, false, false, -+ 0x1.0000000000000734p+0, false, false, -+ 0x1.0000000000000734p+0, false, false, -+ 0x1.0000000000000736p+0, false, false, -+ false, -+ 0x1.0000000000000734aca5f6226fp+0, false, false, -+ 0x1.0000000000000734aca5f6226fp+0, false, false, -+ 0x1.0000000000000734aca5f6226fp+0, false, false, -+ 0x1.0000000000000734aca5f6226f8p+0, false, false, -+ false, -+ 0x1.0000000000000734aca5f6226f0ap+0, false, false, -+ 0x1.0000000000000734aca5f6226f0bp+0, false, false, -+ 0x1.0000000000000734aca5f6226f0ap+0, false, false, -+ 0x1.0000000000000734aca5f6226f0bp+0, false, false), - TEST ("3929201589819414e-25", - false, -- 0x1.b0053p-32, false, -- 0x1.b00532p-32, false, -- 0x1.b0053p-32, false, -- 0x1.b00532p-32, false, -- false, -- 0x1.b005314e2421ep-32, false, -- 0x1.b005314e2421ep-32, false, -- 0x1.b005314e2421ep-32, false, -- 0x1.b005314e2421fp-32, false, -- false, -- 0x1.b005314e2421e7fep-32, false, -- 0x1.b005314e2421e8p-32, false, -- 0x1.b005314e2421e7fep-32, false, -- 0x1.b005314e2421e8p-32, false, -- false, -- 0x1.b005314e2421e7fep-32, false, -- 0x1.b005314e2421e8p-32, false, -- 0x1.b005314e2421e7fep-32, false, -- 0x1.b005314e2421e8p-32, false, -- false, -- 0x1.b005314e2421e7ffb472840c5ap-32, false, -- 0x1.b005314e2421e7ffb472840c5a8p-32, false, -- 0x1.b005314e2421e7ffb472840c5ap-32, false, -- 0x1.b005314e2421e7ffb472840c5a8p-32, false, -- false, -- 0x1.b005314e2421e7ffb472840c5a6ep-32, false, -- 0x1.b005314e2421e7ffb472840c5a6fp-32, false, -- 0x1.b005314e2421e7ffb472840c5a6ep-32, false, -- 0x1.b005314e2421e7ffb472840c5a6fp-32, false), -+ 0x1.b0053p-32, false, false, -+ 0x1.b00532p-32, false, false, -+ 0x1.b0053p-32, false, false, -+ 0x1.b00532p-32, false, false, -+ false, -+ 0x1.b005314e2421ep-32, false, false, -+ 0x1.b005314e2421ep-32, false, false, -+ 0x1.b005314e2421ep-32, false, false, -+ 0x1.b005314e2421fp-32, false, false, -+ false, -+ 0x1.b005314e2421e7fep-32, false, false, -+ 0x1.b005314e2421e8p-32, false, false, -+ 0x1.b005314e2421e7fep-32, false, false, -+ 0x1.b005314e2421e8p-32, false, false, -+ false, -+ 0x1.b005314e2421e7fep-32, false, false, -+ 0x1.b005314e2421e8p-32, false, false, -+ 0x1.b005314e2421e7fep-32, false, false, -+ 0x1.b005314e2421e8p-32, false, false, -+ false, -+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false, -+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false, -+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false, -+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false, -+ false, -+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false, -+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false, -+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false, -+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false), - TEST ("0.0000000000000000000000000000000000000000000021019476964872" - "256063855943749348741969203929128147736576356024258346866240" - "28790902229957282543182373046875", - false, -- 0x8p-152, false, -- 0x1p-148, false, -- 0x8p-152, false, -- 0x1p-148, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false), -+ 0x8p-152, false, true, -+ 0x1p-148, false, true, -+ 0x8p-152, false, true, -+ 0x1p-148, false, true, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false), - TEST ("1.00000005960464477539062499", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000000fffffffp+0, false, -- 0x1.000001p+0, false, -- 0x1.000000fffffffp+0, false, -- 0x1.000001p+0, false, -- false, -- 0x1.000000fffffffffep+0, false, -- 0x1.000001p+0, false, -- 0x1.000000fffffffffep+0, false, -- 0x1.000001p+0, false, -- false, -- 0x1.000000fffffffffep+0, false, -- 0x1.000001p+0, false, -- 0x1.000000fffffffffep+0, false, -- 0x1.000001p+0, false, -- false, -- 0x1.000000fffffffffffffffce7b78p+0, false, -- 0x1.000000fffffffffffffffce7b8p+0, false, -- 0x1.000000fffffffffffffffce7b78p+0, false, -- 0x1.000000fffffffffffffffce7b8p+0, false, -- false, -- 0x1.000000fffffffffffffffce7b7e7p+0, false, -- 0x1.000000fffffffffffffffce7b7e7p+0, false, -- 0x1.000000fffffffffffffffce7b7e7p+0, false, -- 0x1.000000fffffffffffffffce7b7e8p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000000fffffffp+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000000fffffffp+0, false, false, -+ 0x1.000001p+0, false, false, -+ false, -+ 0x1.000000fffffffffep+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000000fffffffffep+0, false, false, -+ 0x1.000001p+0, false, false, -+ false, -+ 0x1.000000fffffffffep+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000000fffffffffep+0, false, false, -+ 0x1.000001p+0, false, false, -+ false, -+ 0x1.000000fffffffffffffffce7b78p+0, false, false, -+ 0x1.000000fffffffffffffffce7b8p+0, false, false, -+ 0x1.000000fffffffffffffffce7b78p+0, false, false, -+ 0x1.000000fffffffffffffffce7b8p+0, false, false, -+ false, -+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false, -+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false, -+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false, -+ 0x1.000000fffffffffffffffce7b7e8p+0, false, false), - TEST ("1.000000059604644775390625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- true, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- true, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- true, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- true, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ true, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ true, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ true, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ true, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false), - TEST ("1.00000005960464477539062501", - false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000001p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000000002p+0, false, -- false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.000001p+0, false, -- 0x1.0000010000000002p+0, false, -- false, -- 0x1.00000100000000000000031848p+0, false, -- 0x1.00000100000000000000031848p+0, false, -- 0x1.00000100000000000000031848p+0, false, -- 0x1.000001000000000000000318488p+0, false, -- false, -- 0x1.0000010000000000000003184818p+0, false, -- 0x1.0000010000000000000003184819p+0, false, -- 0x1.0000010000000000000003184818p+0, false, -- 0x1.0000010000000000000003184819p+0, false), -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000001p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.000001p+0, false, false, -+ 0x1.0000010000000002p+0, false, false, -+ false, -+ 0x1.00000100000000000000031848p+0, false, false, -+ 0x1.00000100000000000000031848p+0, false, false, -+ 0x1.00000100000000000000031848p+0, false, false, -+ 0x1.000001000000000000000318488p+0, false, false, -+ false, -+ 0x1.0000010000000000000003184818p+0, false, false, -+ 0x1.0000010000000000000003184819p+0, false, false, -+ 0x1.0000010000000000000003184818p+0, false, false, -+ 0x1.0000010000000000000003184819p+0, false, false), - TEST ("1.00000011920928955078125", - true, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false), -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false), - TEST ("1.00000017881393432617187499", - false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000002p+0, false, -- 0x1.000004p+0, false, -- false, -- 0x1.000002fffffffp+0, false, -- 0x1.000003p+0, false, -- 0x1.000002fffffffp+0, false, -- 0x1.000003p+0, false, -- false, -- 0x1.000002fffffffffep+0, false, -- 0x1.000003p+0, false, -- 0x1.000002fffffffffep+0, false, -- 0x1.000003p+0, false, -- false, -- 0x1.000002fffffffffep+0, false, -- 0x1.000003p+0, false, -- 0x1.000002fffffffffep+0, false, -- 0x1.000003p+0, false, -- false, -- 0x1.000002fffffffffffffffce7b78p+0, false, -- 0x1.000002fffffffffffffffce7b8p+0, false, -- 0x1.000002fffffffffffffffce7b78p+0, false, -- 0x1.000002fffffffffffffffce7b8p+0, false, -- false, -- 0x1.000002fffffffffffffffce7b7e7p+0, false, -- 0x1.000002fffffffffffffffce7b7e7p+0, false, -- 0x1.000002fffffffffffffffce7b7e7p+0, false, -- 0x1.000002fffffffffffffffce7b7e8p+0, false), -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000004p+0, false, false, -+ false, -+ 0x1.000002fffffffp+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000002fffffffp+0, false, false, -+ 0x1.000003p+0, false, false, -+ false, -+ 0x1.000002fffffffffep+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000002fffffffffep+0, false, false, -+ 0x1.000003p+0, false, false, -+ false, -+ 0x1.000002fffffffffep+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000002fffffffffep+0, false, false, -+ 0x1.000003p+0, false, false, -+ false, -+ 0x1.000002fffffffffffffffce7b78p+0, false, false, -+ 0x1.000002fffffffffffffffce7b8p+0, false, false, -+ 0x1.000002fffffffffffffffce7b78p+0, false, false, -+ 0x1.000002fffffffffffffffce7b8p+0, false, false, -+ false, -+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false, -+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false, -+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false, -+ 0x1.000002fffffffffffffffce7b7e8p+0, false, false), - TEST ("1.000000178813934326171875", - false, -- 0x1.000002p+0, false, -- 0x1.000004p+0, false, -- 0x1.000002p+0, false, -- 0x1.000004p+0, false, -- true, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- true, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- true, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- true, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- true, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false), -+ 0x1.000002p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000004p+0, false, false, -+ true, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ true, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ true, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ true, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ true, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false), - TEST ("1.00000017881393432617187501", - false, -- 0x1.000002p+0, false, -- 0x1.000004p+0, false, -- 0x1.000002p+0, false, -- 0x1.000004p+0, false, -- false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.0000030000001p+0, false, -- false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.0000030000000002p+0, false, -- false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.000003p+0, false, -- 0x1.0000030000000002p+0, false, -- false, -- 0x1.00000300000000000000031848p+0, false, -- 0x1.00000300000000000000031848p+0, false, -- 0x1.00000300000000000000031848p+0, false, -- 0x1.000003000000000000000318488p+0, false, -- false, -- 0x1.0000030000000000000003184818p+0, false, -- 0x1.0000030000000000000003184819p+0, false, -- 0x1.0000030000000000000003184818p+0, false, -- 0x1.0000030000000000000003184819p+0, false), -+ 0x1.000002p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000002p+0, false, false, -+ 0x1.000004p+0, false, false, -+ false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.0000030000001p+0, false, false, -+ false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.0000030000000002p+0, false, false, -+ false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.000003p+0, false, false, -+ 0x1.0000030000000002p+0, false, false, -+ false, -+ 0x1.00000300000000000000031848p+0, false, false, -+ 0x1.00000300000000000000031848p+0, false, false, -+ 0x1.00000300000000000000031848p+0, false, false, -+ 0x1.000003000000000000000318488p+0, false, false, -+ false, -+ 0x1.0000030000000000000003184818p+0, false, false, -+ 0x1.0000030000000000000003184819p+0, false, false, -+ 0x1.0000030000000000000003184818p+0, false, false, -+ 0x1.0000030000000000000003184819p+0, false, false), - TEST ("1.0000002384185791015625", - true, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- true, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- true, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- true, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- true, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- true, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false, -- 0x1.000004p+0, false), -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ true, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ true, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ true, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ true, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ true, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false, -+ 0x1.000004p+0, false, false), - TEST ("1.08420217248550443400745280086994171142578125e-19", - true, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- true, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- true, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- true, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- true, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- true, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false), -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ true, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ true, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ true, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ true, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ true, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false), - TEST ("1.0842022371089897897127399001987457793916291848290711641311" - "645507812499e-19", - false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2.000004p-64, false, -- false, -- 0x2.000001ffffffep-64, false, -- 0x2.000002p-64, false, -- 0x2.000001ffffffep-64, false, -- 0x2.000002p-64, false, -- false, -- 0x2.000001fffffffffcp-64, false, -- 0x2.000002p-64, false, -- 0x2.000001fffffffffcp-64, false, -- 0x2.000002p-64, false, -- false, -- 0x2.000001fffffffffcp-64, false, -- 0x2.000002p-64, false, -- 0x2.000001fffffffffcp-64, false, -- 0x2.000002p-64, false, -- false, -- 0x2.000001ffffffffffffffffffffp-64, false, -- 0x2.000002p-64, false, -- 0x2.000001ffffffffffffffffffffp-64, false, -- 0x2.000002p-64, false, -- false, -- 0x2.000001fffffffffffffffffffffep-64, false, -- 0x2.000002p-64, false, -- 0x2.000001fffffffffffffffffffffep-64, false, -- 0x2.000002p-64, false), -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2.000004p-64, false, false, -+ false, -+ 0x2.000001ffffffep-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000001ffffffep-64, false, false, -+ 0x2.000002p-64, false, false, -+ false, -+ 0x2.000001fffffffffcp-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000001fffffffffcp-64, false, false, -+ 0x2.000002p-64, false, false, -+ false, -+ 0x2.000001fffffffffcp-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000001fffffffffcp-64, false, false, -+ 0x2.000002p-64, false, false, -+ false, -+ 0x2.000001ffffffffffffffffffffp-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000001ffffffffffffffffffffp-64, false, false, -+ 0x2.000002p-64, false, false, -+ false, -+ 0x2.000001fffffffffffffffffffffep-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000001fffffffffffffffffffffep-64, false, false, -+ 0x2.000002p-64, false, false), - TEST ("1.0842022371089897897127399001987457793916291848290711641311" - "6455078125e-19", - false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2p-64, false, -- 0x2.000004p-64, false, -- true, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- true, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- true, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- true, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- true, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false), -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2.000004p-64, false, false, -+ true, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ true, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ true, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ true, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ true, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false), - TEST ("1.0842022371089897897127399001987457793916291848290711641311" - "645507812501e-19", - false, -- 0x2p-64, false, -- 0x2.000004p-64, false, -- 0x2p-64, false, -- 0x2.000004p-64, false, -- false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.0000020000002p-64, false, -- false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.0000020000000004p-64, false, -- false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.0000020000000004p-64, false, -- false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.00000200000000000000000001p-64, false, -- false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.000002p-64, false, -- 0x2.0000020000000000000000000002p-64, false), -+ 0x2p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2p-64, false, false, -+ 0x2.000004p-64, false, false, -+ false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.0000020000002p-64, false, false, -+ false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.0000020000000004p-64, false, false, -+ false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.0000020000000004p-64, false, false, -+ false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.00000200000000000000000001p-64, false, false, -+ false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.000002p-64, false, false, -+ 0x2.0000020000000000000000000002p-64, false, false), - TEST ("1.0842023017324751454180269995275498473574771196581423282623" - "291015625e-19", - true, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- true, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- true, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- true, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- true, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- true, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false), -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ true, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ true, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ true, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ true, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ true, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false), - TEST ("1.0842023663559605011233140988563539153233250544872134923934" - "936523437499e-19", - false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000004p-64, false, -- 0x2.000008p-64, false, -- false, -- 0x2.000005ffffffep-64, false, -- 0x2.000006p-64, false, -- 0x2.000005ffffffep-64, false, -- 0x2.000006p-64, false, -- false, -- 0x2.000005fffffffffcp-64, false, -- 0x2.000006p-64, false, -- 0x2.000005fffffffffcp-64, false, -- 0x2.000006p-64, false, -- false, -- 0x2.000005fffffffffcp-64, false, -- 0x2.000006p-64, false, -- 0x2.000005fffffffffcp-64, false, -- 0x2.000006p-64, false, -- false, -- 0x2.000005ffffffffffffffffffffp-64, false, -- 0x2.000006p-64, false, -- 0x2.000005ffffffffffffffffffffp-64, false, -- 0x2.000006p-64, false, -- false, -- 0x2.000005fffffffffffffffffffffep-64, false, -- 0x2.000006p-64, false, -- 0x2.000005fffffffffffffffffffffep-64, false, -- 0x2.000006p-64, false), -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000008p-64, false, false, -+ false, -+ 0x2.000005ffffffep-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000005ffffffep-64, false, false, -+ 0x2.000006p-64, false, false, -+ false, -+ 0x2.000005fffffffffcp-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000005fffffffffcp-64, false, false, -+ 0x2.000006p-64, false, false, -+ false, -+ 0x2.000005fffffffffcp-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000005fffffffffcp-64, false, false, -+ 0x2.000006p-64, false, false, -+ false, -+ 0x2.000005ffffffffffffffffffffp-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000005ffffffffffffffffffffp-64, false, false, -+ 0x2.000006p-64, false, false, -+ false, -+ 0x2.000005fffffffffffffffffffffep-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000005fffffffffffffffffffffep-64, false, false, -+ 0x2.000006p-64, false, false), - TEST ("1.0842023663559605011233140988563539153233250544872134923934" - "9365234375e-19", - false, -- 0x2.000004p-64, false, -- 0x2.000008p-64, false, -- 0x2.000004p-64, false, -- 0x2.000008p-64, false, -- true, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- true, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- true, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- true, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- true, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false), -+ 0x2.000004p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000008p-64, false, false, -+ true, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ true, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ true, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ true, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ true, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false), - TEST ("1.0842023663559605011233140988563539153233250544872134923934" - "936523437501e-19", - false, -- 0x2.000004p-64, false, -- 0x2.000008p-64, false, -- 0x2.000004p-64, false, -- 0x2.000008p-64, false, -- false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.0000060000002p-64, false, -- false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.0000060000000004p-64, false, -- false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.0000060000000004p-64, false, -- false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.00000600000000000000000001p-64, false, -- false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.000006p-64, false, -- 0x2.0000060000000000000000000002p-64, false), -+ 0x2.000004p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000004p-64, false, false, -+ 0x2.000008p-64, false, false, -+ false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.0000060000002p-64, false, false, -+ false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.0000060000000004p-64, false, false, -+ false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.0000060000000004p-64, false, false, -+ false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.00000600000000000000000001p-64, false, false, -+ false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.000006p-64, false, false, -+ 0x2.0000060000000000000000000002p-64, false, false), - TEST ("1.0842024309794458568286011981851579832891729893162846565246" - "58203125e-19", - true, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- true, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- true, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- true, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- true, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- true, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false, -- 0x2.000008p-64, false), -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ true, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ true, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ true, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ true, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ true, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false, -+ 0x2.000008p-64, false, false), - TEST ("7.5231638452626400509999138382223723380394595633413601376560" - "1092018187046051025390625e-37", - true, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- true, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- true, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- true, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- true, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- true, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false), -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ true, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ true, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ true, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ true, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ true, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false), - TEST ("7.5231642936781486349413765338158389908126215730251815381410" - "578824437213052434003657253924757242202758789062499e-37", - false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1.000002p-120, false, -- false, -- 0x1.000000fffffffp-120, false, -- 0x1.000001p-120, false, -- 0x1.000000fffffffp-120, false, -- 0x1.000001p-120, false, -- false, -- 0x1.000000fffffffffep-120, false, -- 0x1.000001p-120, false, -- 0x1.000000fffffffffep-120, false, -- 0x1.000001p-120, false, -- false, -- 0x1.000000fffffffffep-120, false, -- 0x1.000001p-120, false, -- 0x1.000000fffffffffep-120, false, -- 0x1.000001p-120, false, -- false, -- 0x1.000000ffffffffffffffffffff8p-120, false, -- 0x1.000001p-120, false, -- 0x1.000000ffffffffffffffffffff8p-120, false, -- 0x1.000001p-120, false, -- false, -- 0x1.000000ffffffffffffffffffffffp-120, false, -- 0x1.000001p-120, false, -- 0x1.000000ffffffffffffffffffffffp-120, false, -- 0x1.000001p-120, false), -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1.000002p-120, false, false, -+ false, -+ 0x1.000000fffffffp-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000000fffffffp-120, false, false, -+ 0x1.000001p-120, false, false, -+ false, -+ 0x1.000000fffffffffep-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000000fffffffffep-120, false, false, -+ 0x1.000001p-120, false, false, -+ false, -+ 0x1.000000fffffffffep-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000000fffffffffep-120, false, false, -+ 0x1.000001p-120, false, false, -+ false, -+ 0x1.000000ffffffffffffffffffff8p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000000ffffffffffffffffffff8p-120, false, false, -+ 0x1.000001p-120, false, false, -+ false, -+ 0x1.000000ffffffffffffffffffffffp-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000000ffffffffffffffffffffffp-120, false, false, -+ 0x1.000001p-120, false, false), - TEST ("7.5231642936781486349413765338158389908126215730251815381410" - "5788244372130524340036572539247572422027587890625e-37", - false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1p-120, false, -- 0x1.000002p-120, false, -- true, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- true, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- true, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- true, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- true, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false), -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1.000002p-120, false, false, -+ true, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ true, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ true, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ true, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ true, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false), - TEST ("7.5231642936781486349413765338158389908126215730251815381410" - "578824437213052434003657253924757242202758789062501e-37", - false, -- 0x1p-120, false, -- 0x1.000002p-120, false, -- 0x1p-120, false, -- 0x1.000002p-120, false, -- false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.0000010000001p-120, false, -- false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.0000010000000002p-120, false, -- false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.0000010000000002p-120, false, -- false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001000000000000000000008p-120, false, -- false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.000001p-120, false, -- 0x1.0000010000000000000000000001p-120, false), -+ 0x1p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1p-120, false, false, -+ 0x1.000002p-120, false, false, -+ false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.0000010000001p-120, false, false, -+ false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.0000010000000002p-120, false, false, -+ false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.0000010000000002p-120, false, false, -+ false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001000000000000000000008p-120, false, false, -+ false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.000001p-120, false, false, -+ 0x1.0000010000000000000000000001p-120, false, false), - TEST ("7.5231647420936572188828392294093056435857835827090029386261" - "048447055721499765468252007849514484405517578125e-37", - true, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- true, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- true, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- true, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- true, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- true, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false), -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ true, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ true, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ true, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ true, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ true, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false), - TEST ("7.5231651905091658028243019250027722963589455923928243391111" - "518069674229947096932846761774271726608276367187499e-37", - false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000002p-120, false, -- 0x1.000004p-120, false, -- false, -- 0x1.000002fffffffp-120, false, -- 0x1.000003p-120, false, -- 0x1.000002fffffffp-120, false, -- 0x1.000003p-120, false, -- false, -- 0x1.000002fffffffffep-120, false, -- 0x1.000003p-120, false, -- 0x1.000002fffffffffep-120, false, -- 0x1.000003p-120, false, -- false, -- 0x1.000002fffffffffep-120, false, -- 0x1.000003p-120, false, -- 0x1.000002fffffffffep-120, false, -- 0x1.000003p-120, false, -- false, -- 0x1.000002ffffffffffffffffffff8p-120, false, -- 0x1.000003p-120, false, -- 0x1.000002ffffffffffffffffffff8p-120, false, -- 0x1.000003p-120, false, -- false, -- 0x1.000002ffffffffffffffffffffffp-120, false, -- 0x1.000003p-120, false, -- 0x1.000002ffffffffffffffffffffffp-120, false, -- 0x1.000003p-120, false), -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000004p-120, false, false, -+ false, -+ 0x1.000002fffffffp-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000002fffffffp-120, false, false, -+ 0x1.000003p-120, false, false, -+ false, -+ 0x1.000002fffffffffep-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000002fffffffffep-120, false, false, -+ 0x1.000003p-120, false, false, -+ false, -+ 0x1.000002fffffffffep-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000002fffffffffep-120, false, false, -+ 0x1.000003p-120, false, false, -+ false, -+ 0x1.000002ffffffffffffffffffff8p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000002ffffffffffffffffffff8p-120, false, false, -+ 0x1.000003p-120, false, false, -+ false, -+ 0x1.000002ffffffffffffffffffffffp-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000002ffffffffffffffffffffffp-120, false, false, -+ 0x1.000003p-120, false, false), - TEST ("7.5231651905091658028243019250027722963589455923928243391111" - "5180696742299470969328467617742717266082763671875e-37", - false, -- 0x1.000002p-120, false, -- 0x1.000004p-120, false, -- 0x1.000002p-120, false, -- 0x1.000004p-120, false, -- true, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- true, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- true, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- true, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- true, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false), -+ 0x1.000002p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000004p-120, false, false, -+ true, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ true, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ true, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ true, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ true, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false), - TEST ("7.5231651905091658028243019250027722963589455923928243391111" - "518069674229947096932846761774271726608276367187501e-37", - false, -- 0x1.000002p-120, false, -- 0x1.000004p-120, false, -- 0x1.000002p-120, false, -- 0x1.000004p-120, false, -- false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.0000030000001p-120, false, -- false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.0000030000000002p-120, false, -- false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.0000030000000002p-120, false, -- false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003000000000000000000008p-120, false, -- false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.000003p-120, false, -- 0x1.0000030000000000000000000001p-120, false), -+ 0x1.000002p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000002p-120, false, false, -+ 0x1.000004p-120, false, false, -+ false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.0000030000001p-120, false, false, -+ false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.0000030000000002p-120, false, false, -+ false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.0000030000000002p-120, false, false, -+ false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003000000000000000000008p-120, false, false, -+ false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.000003p-120, false, false, -+ 0x1.0000030000000000000000000001p-120, false, false), - TEST ("7.5231656389246743867657646205962389491321076020766457395961" - "98769229273839442839744151569902896881103515625e-37", - true, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- true, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- true, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- true, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- true, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- true, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false, -- 0x1.000004p-120, false), -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ true, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ true, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ true, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ true, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ true, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false, -+ 0x1.000004p-120, false, false), - TEST ("340282356779733661637539395458142568447.999", - false, -- 0xf.fffffp+124, false, -- 0xf.fffffp+124, false, -- 0xf.fffffp+124, false, -- INF, true, -- false, -- 0xf.fffff7ffffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff7ffffff8p+124, false, -- 0xf.fffff8p+124, false, -- false, -- 0xf.fffff7fffffffffp+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff7fffffffffp+124, false, -- 0xf.fffff8p+124, false, -- false, -- 0xf.fffff7fffffffffp+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff7fffffffffp+124, false, -- 0xf.fffff8p+124, false, -- false, -- 0xf.fffff7fffffffffffffffffffcp+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff7fffffffffffffffffffcp+124, false, -- 0xf.fffff8p+124, false, -- false, -- 0xf.fffff7fffffffffffffffffffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff7fffffffffffffffffffff8p+124, false, -- 0xf.fffff8p+124, false), -+ 0xf.fffffp+124, false, false, -+ 0xf.fffffp+124, false, false, -+ 0xf.fffffp+124, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffff7ffffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff7ffffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ false, -+ 0xf.fffff7fffffffffp+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff7fffffffffp+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ false, -+ 0xf.fffff7fffffffffp+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff7fffffffffp+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ false, -+ 0xf.fffff7fffffffffffffffffffcp+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff7fffffffffffffffffffcp+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ false, -+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false), - TEST ("340282356779733661637539395458142568448", - false, -- 0xf.fffffp+124, false, -- INF, true, -- 0xf.fffffp+124, false, -- INF, true, -- true, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- true, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- true, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- true, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- true, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false), -+ 0xf.fffffp+124, false, false, -+ INF, true, false, -+ 0xf.fffffp+124, false, false, -+ INF, true, false, -+ true, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ true, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ true, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ true, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ true, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false), - TEST ("340282356779733661637539395458142568448.001", - false, -- 0xf.fffffp+124, false, -- INF, true, -- 0xf.fffffp+124, false, -- INF, true, -- false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff80000008p+124, false, -- false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8000000001p+124, false, -- false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8000000001p+124, false, -- false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff800000000000000000004p+124, false, -- false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff8p+124, false, -- 0xf.fffff80000000000000000000008p+124, false), -+ 0xf.fffffp+124, false, false, -+ INF, true, false, -+ 0xf.fffffp+124, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff80000008p+124, false, false, -+ false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8000000001p+124, false, false, -+ false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8000000001p+124, false, false, -+ false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff800000000000000000004p+124, false, false, -+ false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff8p+124, false, false, -+ 0xf.fffff80000000000000000000008p+124, false, false), - TEST ("-340282356779733661637539395458142568447.999", - false, -- -INF, true, -- -0xf.fffffp+124, false, -- -0xf.fffffp+124, false, -- -0xf.fffffp+124, false, -- false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff7ffffff8p+124, false, -- -0xf.fffff7ffffff8p+124, false, -- false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff7fffffffffp+124, false, -- -0xf.fffff7fffffffffp+124, false, -- false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff7fffffffffp+124, false, -- -0xf.fffff7fffffffffp+124, false, -- false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff7fffffffffffffffffffcp+124, false, -- -0xf.fffff7fffffffffffffffffffcp+124, false, -- false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff7fffffffffffffffffffff8p+124, false, -- -0xf.fffff7fffffffffffffffffffff8p+124, false), -+ -INF, true, false, -+ -0xf.fffffp+124, false, false, -+ -0xf.fffffp+124, false, false, -+ -0xf.fffffp+124, false, false, -+ false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff7ffffff8p+124, false, false, -+ -0xf.fffff7ffffff8p+124, false, false, -+ false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff7fffffffffp+124, false, false, -+ -0xf.fffff7fffffffffp+124, false, false, -+ false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff7fffffffffp+124, false, false, -+ -0xf.fffff7fffffffffp+124, false, false, -+ false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff7fffffffffffffffffffcp+124, false, false, -+ -0xf.fffff7fffffffffffffffffffcp+124, false, false, -+ false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false, -+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false), - TEST ("-340282356779733661637539395458142568448", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, false, -- -0xf.fffffp+124, false, -- true, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- true, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- true, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- true, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- true, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, false, false, -+ -0xf.fffffp+124, false, false, -+ true, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ true, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ true, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ true, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ true, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false), - TEST ("-340282356779733661637539395458142568448.001", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, false, -- -0xf.fffffp+124, false, -- false, -- -0xf.fffff80000008p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- false, -- -0xf.fffff8000000001p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- false, -- -0xf.fffff8000000001p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- false, -- -0xf.fffff800000000000000000004p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- false, -- -0xf.fffff80000000000000000000008p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false, -- -0xf.fffff8p+124, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, false, false, -+ -0xf.fffffp+124, false, false, -+ false, -+ -0xf.fffff80000008p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ false, -+ -0xf.fffff8000000001p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ false, -+ -0xf.fffff8000000001p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ false, -+ -0xf.fffff800000000000000000004p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ false, -+ -0xf.fffff80000000000000000000008p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false, -+ -0xf.fffff8p+124, false, false), - TEST ("179769313486231580793728971405303415079934132710037826936173" - "778980444968292764750946649017977587207096330286416692887910" - "946555547851940402630657488671505820681908902000708383676273" -@@ -1855,35 +1855,35 @@ static const struct test tests[] = { - "936475292719074168444365510704342711559699508093042880177904" - "174497791.999", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, false, -- 0xf.ffffffffffff8p+1020, false, -- 0xf.ffffffffffff8p+1020, false, -- INF, true, -- false, -- 0xf.ffffffffffffbffp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffbffp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- false, -- 0xf.ffffffffffffbffp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffbffp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- false, -- 0xf.ffffffffffffbffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, true, -- 0xf.ffffffffffffbffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, true, -- false, -- 0xf.ffffffffffffbffffffffffffff8p+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffbffffffffffffff8p+1020, false, -- 0xf.ffffffffffffcp+1020, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffffbffp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffbffp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ false, -+ 0xf.ffffffffffffbffp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffbffp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ false, -+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ false, -+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false), - TEST ("179769313486231580793728971405303415079934132710037826936173" - "778980444968292764750946649017977587207096330286416692887910" - "946555547851940402630657488671505820681908902000708383676273" -@@ -1891,35 +1891,35 @@ static const struct test tests[] = { - "936475292719074168444365510704342711559699508093042880177904" - "174497792", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, false, -- INF, true, -- 0xf.ffffffffffff8p+1020, false, -- INF, true, -- true, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- true, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- false, -- 0xf.ffffffffffffcp+1020, true, -- 0xf.ffffffffffffcp+1020, true, -- 0xf.ffffffffffffcp+1020, true, -- 0xf.ffffffffffffcp+1020, true, -- true, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ INF, true, false, -+ true, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ true, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ true, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false), - TEST ("179769313486231580793728971405303415079934132710037826936173" - "778980444968292764750946649017977587207096330286416692887910" - "946555547851940402630657488671505820681908902000708383676273" -@@ -1927,35 +1927,35 @@ static const struct test tests[] = { - "936475292719074168444365510704342711559699508093042880177904" - "174497792.001", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, false, -- INF, true, -- 0xf.ffffffffffff8p+1020, false, -- INF, true, -- false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffc01p+1020, false, -- false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffc01p+1020, false, -- false, -- 0xf.ffffffffffffcp+1020, true, -- 0xf.ffffffffffffcp+1020, true, -- 0xf.ffffffffffffcp+1020, true, -- 0xf.ffffffffffffc0000000000004p+1020, true, -- false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffcp+1020, false, -- 0xf.ffffffffffffc000000000000008p+1020, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffc01p+1020, false, false, -+ false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffc01p+1020, false, false, -+ false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ 0xf.ffffffffffffcp+1020, true, false, -+ 0xf.ffffffffffffc0000000000004p+1020, true, false, -+ false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffcp+1020, false, false, -+ 0xf.ffffffffffffc000000000000008p+1020, false, false), - TEST ("-17976931348623158079372897140530341507993413271003782693617" - "377898044496829276475094664901797758720709633028641669288791" - "094655554785194040263065748867150582068190890200070838367627" -@@ -1963,35 +1963,35 @@ static const struct test tests[] = { - "493647529271907416844436551070434271155969950809304288017790" - "4174497791.999", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -0xf.ffffffffffff8p+1020, false, -- -0xf.ffffffffffff8p+1020, false, -- -0xf.ffffffffffff8p+1020, false, -- false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffbffp+1020, false, -- -0xf.ffffffffffffbffp+1020, false, -- false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffbffp+1020, false, -- -0xf.ffffffffffffbffp+1020, false, -- false, -- -0xf.ffffffffffffcp+1020, true, -- -0xf.ffffffffffffcp+1020, true, -- -0xf.ffffffffffffbffffffffffffcp+1020, false, -- -0xf.ffffffffffffbffffffffffffcp+1020, false, -- false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffbffffffffffffff8p+1020, false, -- -0xf.ffffffffffffbffffffffffffff8p+1020, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffbffp+1020, false, false, -+ -0xf.ffffffffffffbffp+1020, false, false, -+ false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffbffp+1020, false, false, -+ -0xf.ffffffffffffbffp+1020, false, false, -+ false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false, -+ false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false, -+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false), - TEST ("-17976931348623158079372897140530341507993413271003782693617" - "377898044496829276475094664901797758720709633028641669288791" - "094655554785194040263065748867150582068190890200070838367627" -@@ -1999,35 +1999,35 @@ static const struct test tests[] = { - "493647529271907416844436551070434271155969950809304288017790" - "4174497792", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, false, -- -0xf.ffffffffffff8p+1020, false, -- true, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- true, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- false, -- -0xf.ffffffffffffcp+1020, true, -- -0xf.ffffffffffffcp+1020, true, -- -0xf.ffffffffffffcp+1020, true, -- -0xf.ffffffffffffcp+1020, true, -- true, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ true, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ true, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ true, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false), - TEST ("-17976931348623158079372897140530341507993413271003782693617" - "377898044496829276475094664901797758720709633028641669288791" - "094655554785194040263065748867150582068190890200070838367627" -@@ -2035,35 +2035,35 @@ static const struct test tests[] = { - "493647529271907416844436551070434271155969950809304288017790" - "4174497792.001", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, false, -- -0xf.ffffffffffff8p+1020, false, -- false, -- -0xf.ffffffffffffc01p+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- false, -- -0xf.ffffffffffffc01p+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- false, -- -0xf.ffffffffffffc0000000000004p+1020, true, -- -0xf.ffffffffffffcp+1020, true, -- -0xf.ffffffffffffcp+1020, true, -- -0xf.ffffffffffffcp+1020, true, -- false, -- -0xf.ffffffffffffc000000000000008p+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false, -- -0xf.ffffffffffffcp+1020, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ false, -+ -0xf.ffffffffffffc01p+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ false, -+ -0xf.ffffffffffffc01p+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ false, -+ -0xf.ffffffffffffc0000000000004p+1020, true, false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ -0xf.ffffffffffffcp+1020, true, false, -+ false, -+ -0xf.ffffffffffffc000000000000008p+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false, -+ -0xf.ffffffffffffcp+1020, false, false), - TEST ("118973149535723176505351158982948866796625400469556721895649" - "927756249918185172720476044944290457046138433056764616744328" - "666255526748948793023632513609765434237723241753648908036202" -@@ -2148,35 +2148,35 @@ static const struct test tests[] = { - "578031503869424406179027994752890226443351619365453243328968" - "8740976918527.999", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- 0xf.fffffffffffffffp+16380, false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- 0xf.fffffffffffffffp+16380, false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffff7fffffffffff8p+16380, false, -- 0xf.fffffffffffffff8p+16380, false, -- 0xf.fffffffffffffff7fffffffffff8p+16380, false, -- 0xf.fffffffffffffff8p+16380, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8p+16380, false, false), - TEST ("118973149535723176505351158982948866796625400469556721895649" - "927756249918185172720476044944290457046138433056764616744328" - "666255526748948793023632513609765434237723241753648908036202" -@@ -2261,35 +2261,35 @@ static const struct test tests[] = { - "578031503869424406179027994752890226443351619365453243328968" - "8740976918528", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- true, -- 0xf.fffffffffffffff8p+16380, false, -- 0xf.fffffffffffffff8p+16380, false, -- 0xf.fffffffffffffff8p+16380, false, -- 0xf.fffffffffffffff8p+16380, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ true, -+ 0xf.fffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8p+16380, false, false), - TEST ("118973149535723176505351158982948866796625400469556721895649" - "927756249918185172720476044944290457046138433056764616744328" - "666255526748948793023632513609765434237723241753648908036202" -@@ -2374,35 +2374,35 @@ static const struct test tests[] = { - "578031503869424406179027994752890226443351619365453243328968" - "8740976918528.001", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffff8p+16380, false, -- 0xf.fffffffffffffff8p+16380, false, -- 0xf.fffffffffffffff8p+16380, false, -- 0xf.fffffffffffffff8000000000008p+16380, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffff8000000000008p+16380, false, false), - TEST ("-11897314953572317650535115898294886679662540046955672189564" - "992775624991818517272047604494429045704613843305676461674432" - "866625552674894879302363251360976543423772324175364890803620" -@@ -2487,35 +2487,35 @@ static const struct test tests[] = { - "557803150386942440617902799475289022644335161936545324332896" - "88740976918527.999", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, true, -- -0xf.ffffffffffff8p+1020, true, -- false, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- false, -- -0xf.fffffffffffffff8p+16380, false, -- -0xf.fffffffffffffff8p+16380, false, -- -0xf.fffffffffffffff7fffffffffff8p+16380, false, -- -0xf.fffffffffffffff7fffffffffff8p+16380, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ false, -+ -0xf.fffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false), - TEST ("-11897314953572317650535115898294886679662540046955672189564" - "992775624991818517272047604494429045704613843305676461674432" - "866625552674894879302363251360976543423772324175364890803620" -@@ -2600,35 +2600,35 @@ static const struct test tests[] = { - "557803150386942440617902799475289022644335161936545324332896" - "88740976918528", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, true, -- -0xf.ffffffffffff8p+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- true, -- -0xf.fffffffffffffff8p+16380, false, -- -0xf.fffffffffffffff8p+16380, false, -- -0xf.fffffffffffffff8p+16380, false, -- -0xf.fffffffffffffff8p+16380, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ true, -+ -0xf.fffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff8p+16380, false, false), - TEST ("-11897314953572317650535115898294886679662540046955672189564" - "992775624991818517272047604494429045704613843305676461674432" - "866625552674894879302363251360976543423772324175364890803620" -@@ -2713,35 +2713,35 @@ static const struct test tests[] = { - "557803150386942440617902799475289022644335161936545324332896" - "88740976918528.001", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, true, -- -0xf.ffffffffffff8p+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- false, -- -0xf.fffffffffffffff8000000000008p+16380, false, -- -0xf.fffffffffffffff8p+16380, false, -- -0xf.fffffffffffffff8p+16380, false, -- -0xf.fffffffffffffff8p+16380, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ false, -+ -0xf.fffffffffffffff8000000000008p+16380, false, false, -+ -0xf.fffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffff8p+16380, false, false), - TEST ("118973149535723176508575932662800707347995686986910214150118" - "685272271246896789803961473130416053705672050873552479421805" - "932646640744124594447361172514341324846716679654551308018400" -@@ -2826,35 +2826,35 @@ static const struct test tests[] = { - "972233447491583165728635513802591543441145939539353470970452" - "5536550715391.999", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- INF, true), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ INF, true, false), - TEST ("118973149535723176508575932662800707347995686986910214150118" - "685272271246896789803961473130416053705672050873552479421805" - "932646640744124594447361172514341324846716679654551308018400" -@@ -2939,35 +2939,35 @@ static const struct test tests[] = { - "972233447491583165728635513802591543441145939539353470970452" - "5536550715392", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- INF, true, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- INF, true), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ INF, true, false), - TEST ("118973149535723176508575932662800707347995686986910214150118" - "685272271246896789803961473130416053705672050873552479421805" - "932646640744124594447361172514341324846716679654551308018400" -@@ -3052,35 +3052,35 @@ static const struct test tests[] = { - "972233447491583165728635513802591543441145939539353470970452" - "5536550715392.001", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- INF, true, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- INF, true), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ INF, true, false), - TEST ("-11897314953572317650857593266280070734799568698691021415011" - "868527227124689678980396147313041605370567205087355247942180" - "593264664074412459444736117251434132484671667965455130801840" -@@ -3165,35 +3165,35 @@ static const struct test tests[] = { - "097223344749158316572863551380259154344114593953935347097045" - "25536550715391.999", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, true, -- -0xf.ffffffffffff8p+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- false, -- -INF, true, -- -0xf.fffffffffffffffffffffffffff8p+16380, false, -- -0xf.fffffffffffffffffffffffffff8p+16380, false, -- -0xf.fffffffffffffffffffffffffff8p+16380, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), - TEST ("-11897314953572317650857593266280070734799568698691021415011" - "868527227124689678980396147313041605370567205087355247942180" - "593264664074412459444736117251434132484671667965455130801840" -@@ -3278,35 +3278,35 @@ static const struct test tests[] = { - "097223344749158316572863551380259154344114593953935347097045" - "25536550715392", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, true, -- -0xf.ffffffffffff8p+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffff8p+16380, false, -- -0xf.fffffffffffffffffffffffffff8p+16380, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), - TEST ("-11897314953572317650857593266280070734799568698691021415011" - "868527227124689678980396147313041605370567205087355247942180" - "593264664074412459444736117251434132484671667965455130801840" -@@ -3391,419 +3391,419 @@ static const struct test tests[] = { - "097223344749158316572863551380259154344114593953935347097045" - "25536550715392.001", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, true, -- -0xf.ffffffffffff8p+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffff8p+16380, false, -- -0xf.fffffffffffffffffffffffffff8p+16380, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), - TEST ("2.1019476964872256063855943749348741969203929128147736576356" - "0242583468662402879090222995728254318237304687499e-45", - false, -- 0x8p-152, false, -- 0x8p-152, false, -- 0x8p-152, false, -- 0x1p-148, false, -- false, -- 0xb.ffffffffffff8p-152, false, -- 0xcp-152, false, -- 0xb.ffffffffffff8p-152, false, -- 0xcp-152, false, -- false, -- 0xb.fffffffffffffffp-152, false, -- 0xcp-152, false, -- 0xb.fffffffffffffffp-152, false, -- 0xcp-152, false, -- false, -- 0xb.fffffffffffffffp-152, false, -- 0xcp-152, false, -- 0xb.fffffffffffffffp-152, false, -- 0xcp-152, false, -- false, -- 0xb.fffffffffffffffffffffffffcp-152, false, -- 0xcp-152, false, -- 0xb.fffffffffffffffffffffffffcp-152, false, -- 0xcp-152, false, -- false, -- 0xb.fffffffffffffffffffffffffff8p-152, false, -- 0xcp-152, false, -- 0xb.fffffffffffffffffffffffffff8p-152, false, -- 0xcp-152, false), -+ 0x8p-152, false, true, -+ 0x8p-152, false, true, -+ 0x8p-152, false, true, -+ 0x1p-148, false, true, -+ false, -+ 0xb.ffffffffffff8p-152, false, false, -+ 0xcp-152, false, false, -+ 0xb.ffffffffffff8p-152, false, false, -+ 0xcp-152, false, false, -+ false, -+ 0xb.fffffffffffffffp-152, false, false, -+ 0xcp-152, false, false, -+ 0xb.fffffffffffffffp-152, false, false, -+ 0xcp-152, false, false, -+ false, -+ 0xb.fffffffffffffffp-152, false, false, -+ 0xcp-152, false, false, -+ 0xb.fffffffffffffffp-152, false, false, -+ 0xcp-152, false, false, -+ false, -+ 0xb.fffffffffffffffffffffffffcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xb.fffffffffffffffffffffffffcp-152, false, false, -+ 0xcp-152, false, false, -+ false, -+ 0xb.fffffffffffffffffffffffffff8p-152, false, false, -+ 0xcp-152, false, false, -+ 0xb.fffffffffffffffffffffffffff8p-152, false, false, -+ 0xcp-152, false, false), - TEST ("2.1019476964872256063855943749348741969203929128147736576356" - "02425834686624028790902229957282543182373046875e-45", - false, -- 0x8p-152, false, -- 0x1p-148, false, -- 0x8p-152, false, -- 0x1p-148, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- true, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false), -+ 0x8p-152, false, true, -+ 0x1p-148, false, true, -+ 0x8p-152, false, true, -+ 0x1p-148, false, true, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ true, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false), - TEST ("2.1019476964872256063855943749348741969203929128147736576356" - "0242583468662402879090222995728254318237304687501e-45", - false, -- 0x8p-152, false, -- 0x1p-148, false, -- 0x8p-152, false, -- 0x1p-148, false, -- false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xc.0000000000008p-152, false, -- false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xc.000000000000001p-152, false, -- false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xc.000000000000001p-152, false, -- false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xc.00000000000000000000000004p-152, false, -- false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xcp-152, false, -- 0xc.0000000000000000000000000008p-152, false), -+ 0x8p-152, false, true, -+ 0x1p-148, false, true, -+ 0x8p-152, false, true, -+ 0x1p-148, false, true, -+ false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xc.0000000000008p-152, false, false, -+ false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xc.000000000000001p-152, false, false, -+ false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xc.000000000000001p-152, false, false, -+ false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xc.00000000000000000000000004p-152, false, false, -+ false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xcp-152, false, false, -+ 0xc.0000000000000000000000000008p-152, false, false), - TEST ("-2.101947696487225606385594374934874196920392912814773657635" - "60242583468662402879090222995728254318237304687499e-45", - false, -- -0x1p-148, false, -- -0x8p-152, false, -- -0x8p-152, false, -- -0x8p-152, false, -- false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xb.ffffffffffff8p-152, false, -- -0xb.ffffffffffff8p-152, false, -- false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xb.fffffffffffffffp-152, false, -- -0xb.fffffffffffffffp-152, false, -- false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xb.fffffffffffffffp-152, false, -- -0xb.fffffffffffffffp-152, false, -- false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xb.fffffffffffffffffffffffffcp-152, false, -- -0xb.fffffffffffffffffffffffffcp-152, false, -- false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xb.fffffffffffffffffffffffffff8p-152, false, -- -0xb.fffffffffffffffffffffffffff8p-152, false), -+ -0x1p-148, false, true, -+ -0x8p-152, false, true, -+ -0x8p-152, false, true, -+ -0x8p-152, false, true, -+ false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xb.ffffffffffff8p-152, false, false, -+ -0xb.ffffffffffff8p-152, false, false, -+ false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xb.fffffffffffffffp-152, false, false, -+ -0xb.fffffffffffffffp-152, false, false, -+ false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xb.fffffffffffffffp-152, false, false, -+ -0xb.fffffffffffffffp-152, false, false, -+ false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xb.fffffffffffffffffffffffffcp-152, false, false, -+ -0xb.fffffffffffffffffffffffffcp-152, false, false, -+ false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xb.fffffffffffffffffffffffffff8p-152, false, false, -+ -0xb.fffffffffffffffffffffffffff8p-152, false, false), - TEST ("-2.101947696487225606385594374934874196920392912814773657635" - "602425834686624028790902229957282543182373046875e-45", - false, -- -0x1p-148, false, -- -0x1p-148, false, -- -0x8p-152, false, -- -0x8p-152, false, -- true, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- true, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- true, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- true, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- true, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false), -+ -0x1p-148, false, true, -+ -0x1p-148, false, true, -+ -0x8p-152, false, true, -+ -0x8p-152, false, true, -+ true, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ true, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ true, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ true, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ true, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false), - TEST ("-2.101947696487225606385594374934874196920392912814773657635" - "60242583468662402879090222995728254318237304687501e-45", - false, -- -0x1p-148, false, -- -0x1p-148, false, -- -0x8p-152, false, -- -0x8p-152, false, -- false, -- -0xc.0000000000008p-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- false, -- -0xc.000000000000001p-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- false, -- -0xc.000000000000001p-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- false, -- -0xc.00000000000000000000000004p-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- false, -- -0xc.0000000000000000000000000008p-152, false, -- -0xcp-152, false, -- -0xcp-152, false, -- -0xcp-152, false), -+ -0x1p-148, false, true, -+ -0x1p-148, false, true, -+ -0x8p-152, false, true, -+ -0x8p-152, false, true, -+ false, -+ -0xc.0000000000008p-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ false, -+ -0xc.000000000000001p-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ false, -+ -0xc.000000000000001p-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ false, -+ -0xc.00000000000000000000000004p-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ false, -+ -0xc.0000000000000000000000000008p-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false, -+ -0xcp-152, false, false), - TEST ("3.5032461608120426773093239582247903282006548546912894293926" - "7070972447770671465150371659547090530395507812499e-45", - false, -- 0x1p-148, false, -- 0x1p-148, false, -- 0x1p-148, false, -- 0x1.8p-148, false, -- false, -- 0x1.3ffffffffffffp-148, false, -- 0x1.4p-148, false, -- 0x1.3ffffffffffffp-148, false, -- 0x1.4p-148, false, -- false, -- 0x1.3ffffffffffffffep-148, false, -- 0x1.4p-148, false, -- 0x1.3ffffffffffffffep-148, false, -- 0x1.4p-148, false, -- false, -- 0x1.3ffffffffffffffep-148, false, -- 0x1.4p-148, false, -- 0x1.3ffffffffffffffep-148, false, -- 0x1.4p-148, false, -- false, -- 0x1.3fffffffffffffffffffffffff8p-148, false, -- 0x1.4p-148, false, -- 0x1.3fffffffffffffffffffffffff8p-148, false, -- 0x1.4p-148, false, -- false, -- 0x1.3fffffffffffffffffffffffffffp-148, false, -- 0x1.4p-148, false, -- 0x1.3fffffffffffffffffffffffffffp-148, false, -- 0x1.4p-148, false), -+ 0x1p-148, false, true, -+ 0x1p-148, false, true, -+ 0x1p-148, false, true, -+ 0x1.8p-148, false, true, -+ false, -+ 0x1.3ffffffffffffp-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.3ffffffffffffp-148, false, false, -+ 0x1.4p-148, false, false, -+ false, -+ 0x1.3ffffffffffffffep-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.3ffffffffffffffep-148, false, false, -+ 0x1.4p-148, false, false, -+ false, -+ 0x1.3ffffffffffffffep-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.3ffffffffffffffep-148, false, false, -+ 0x1.4p-148, false, false, -+ false, -+ 0x1.3fffffffffffffffffffffffff8p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.3fffffffffffffffffffffffff8p-148, false, false, -+ 0x1.4p-148, false, false, -+ false, -+ 0x1.3fffffffffffffffffffffffffffp-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.3fffffffffffffffffffffffffffp-148, false, false, -+ 0x1.4p-148, false, false), - TEST ("3.5032461608120426773093239582247903282006548546912894293926" - "70709724477706714651503716595470905303955078125e-45", - false, -- 0x1p-148, false, -- 0x1p-148, false, -- 0x1p-148, false, -- 0x1.8p-148, false, -- true, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- true, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- true, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- true, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- true, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false), -+ 0x1p-148, false, true, -+ 0x1p-148, false, true, -+ 0x1p-148, false, true, -+ 0x1.8p-148, false, true, -+ true, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ true, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ true, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ true, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ true, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false), - TEST ("3.5032461608120426773093239582247903282006548546912894293926" - "7070972447770671465150371659547090530395507812501e-45", - false, -- 0x1p-148, false, -- 0x1.8p-148, false, -- 0x1p-148, false, -- 0x1.8p-148, false, -- false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4000000000001p-148, false, -- false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4000000000000002p-148, false, -- false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4000000000000002p-148, false, -- false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.400000000000000000000000008p-148, false, -- false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4p-148, false, -- 0x1.4000000000000000000000000001p-148, false), -+ 0x1p-148, false, true, -+ 0x1.8p-148, false, true, -+ 0x1p-148, false, true, -+ 0x1.8p-148, false, true, -+ false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4000000000001p-148, false, false, -+ false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4000000000000002p-148, false, false, -+ false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4000000000000002p-148, false, false, -+ false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.400000000000000000000000008p-148, false, false, -+ false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4p-148, false, false, -+ 0x1.4000000000000000000000000001p-148, false, false), - TEST ("-3.503246160812042677309323958224790328200654854691289429392" - "67070972447770671465150371659547090530395507812499e-45", - false, -- -0x1.8p-148, false, -- -0x1p-148, false, -- -0x1p-148, false, -- -0x1p-148, false, -- false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.3ffffffffffffp-148, false, -- -0x1.3ffffffffffffp-148, false, -- false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.3ffffffffffffffep-148, false, -- -0x1.3ffffffffffffffep-148, false, -- false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.3ffffffffffffffep-148, false, -- -0x1.3ffffffffffffffep-148, false, -- false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.3fffffffffffffffffffffffff8p-148, false, -- -0x1.3fffffffffffffffffffffffff8p-148, false, -- false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.3fffffffffffffffffffffffffffp-148, false, -- -0x1.3fffffffffffffffffffffffffffp-148, false), -+ -0x1.8p-148, false, true, -+ -0x1p-148, false, true, -+ -0x1p-148, false, true, -+ -0x1p-148, false, true, -+ false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.3ffffffffffffp-148, false, false, -+ -0x1.3ffffffffffffp-148, false, false, -+ false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.3ffffffffffffffep-148, false, false, -+ -0x1.3ffffffffffffffep-148, false, false, -+ false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.3ffffffffffffffep-148, false, false, -+ -0x1.3ffffffffffffffep-148, false, false, -+ false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.3fffffffffffffffffffffffff8p-148, false, false, -+ -0x1.3fffffffffffffffffffffffff8p-148, false, false, -+ false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.3fffffffffffffffffffffffffffp-148, false, false, -+ -0x1.3fffffffffffffffffffffffffffp-148, false, false), - TEST ("-3.503246160812042677309323958224790328200654854691289429392" - "670709724477706714651503716595470905303955078125e-45", - false, -- -0x1.8p-148, false, -- -0x1p-148, false, -- -0x1p-148, false, -- -0x1p-148, false, -- true, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- true, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- true, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- true, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- true, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false), -+ -0x1.8p-148, false, true, -+ -0x1p-148, false, true, -+ -0x1p-148, false, true, -+ -0x1p-148, false, true, -+ true, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ true, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ true, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ true, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ true, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false), - TEST ("-3.503246160812042677309323958224790328200654854691289429392" - "67070972447770671465150371659547090530395507812501e-45", - false, -- -0x1.8p-148, false, -- -0x1.8p-148, false, -- -0x1p-148, false, -- -0x1p-148, false, -- false, -- -0x1.4000000000001p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- false, -- -0x1.4000000000000002p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- false, -- -0x1.4000000000000002p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- false, -- -0x1.400000000000000000000000008p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- false, -- -0x1.4000000000000000000000000001p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false, -- -0x1.4p-148, false), -+ -0x1.8p-148, false, true, -+ -0x1.8p-148, false, true, -+ -0x1p-148, false, true, -+ -0x1p-148, false, true, -+ false, -+ -0x1.4000000000001p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ false, -+ -0x1.4000000000000002p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ false, -+ -0x1.4000000000000002p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ false, -+ -0x1.400000000000000000000000008p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ false, -+ -0x1.4000000000000000000000000001p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false, -+ -0x1.4p-148, false, false), - TEST ("7.4109846876186981626485318930233205854758970392148714663837" - "852375101326090531312779794975454245398856969484704316857659" - "638998506553390969459816219401617281718945106978546710679176" -@@ -3818,35 +3818,35 @@ static const struct test tests[] = { - "337560846003984904972149117463085539556354188641513168478436" - "31308023759629577398300170898437499e-324", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x4p-1076, false, -- 0x4p-1076, false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- false, -- 0x5.fffffffffffffff8p-1076, false, -- 0x6p-1076, false, -- 0x5.fffffffffffffff8p-1076, false, -- 0x6p-1076, false, -- false, -- 0x5.fffffffffffffff8p-1076, false, -- 0x6p-1076, false, -- 0x5.fffffffffffffff8p-1076, false, -- 0x6p-1076, false, -- false, -- 0x4p-1076, false, -- 0x4p-1076, false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- false, -- 0x5.fffffffffffffffffffffffffffcp-1076, false, -- 0x6p-1076, false, -- 0x5.fffffffffffffffffffffffffffcp-1076, false, -- 0x6p-1076, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x4p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ false, -+ 0x5.fffffffffffffff8p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x5.fffffffffffffff8p-1076, false, false, -+ 0x6p-1076, false, false, -+ false, -+ 0x5.fffffffffffffff8p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x5.fffffffffffffff8p-1076, false, false, -+ 0x6p-1076, false, false, -+ false, -+ 0x4p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ false, -+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false, -+ 0x6p-1076, false, false), - TEST ("7.4109846876186981626485318930233205854758970392148714663837" - "852375101326090531312779794975454245398856969484704316857659" - "638998506553390969459816219401617281718945106978546710679176" -@@ -3861,35 +3861,35 @@ static const struct test tests[] = { - "337560846003984904972149117463085539556354188641513168478436" - "313080237596295773983001708984375e-324", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- true, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- true, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- true, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ true, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ true, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ false, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ true, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false), - TEST ("7.4109846876186981626485318930233205854758970392148714663837" - "852375101326090531312779794975454245398856969484704316857659" - "638998506553390969459816219401617281718945106978546710679176" -@@ -3904,35 +3904,35 @@ static const struct test tests[] = { - "337560846003984904972149117463085539556354188641513168478436" - "31308023759629577398300170898437501e-324", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6.0000000000000008p-1076, false, -- false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6.0000000000000008p-1076, false, -- false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- 0x4p-1076, false, -- 0x8p-1076, false, -- false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6p-1076, false, -- 0x6.0000000000000000000000000004p-1076, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6.0000000000000008p-1076, false, false, -+ false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6.0000000000000008p-1076, false, false, -+ false, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ 0x4p-1076, false, true, -+ 0x8p-1076, false, true, -+ false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6p-1076, false, false, -+ 0x6.0000000000000000000000000004p-1076, false, false), - TEST ("-7.410984687618698162648531893023320585475897039214871466383" - "785237510132609053131277979497545424539885696948470431685765" - "963899850655339096945981621940161728171894510697854671067917" -@@ -3947,35 +3947,35 @@ static const struct test tests[] = { - "433756084600398490497214911746308553955635418864151316847843" - "631308023759629577398300170898437499e-324", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x5.fffffffffffffff8p-1076, false, -- -0x5.fffffffffffffff8p-1076, false, -- false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x5.fffffffffffffff8p-1076, false, -- -0x5.fffffffffffffff8p-1076, false, -- false, -- -0x8p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x5.fffffffffffffffffffffffffffcp-1076, false, -- -0x5.fffffffffffffffffffffffffffcp-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x5.fffffffffffffff8p-1076, false, false, -+ -0x5.fffffffffffffff8p-1076, false, false, -+ false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x5.fffffffffffffff8p-1076, false, false, -+ -0x5.fffffffffffffff8p-1076, false, false, -+ false, -+ -0x8p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false, -+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false), - TEST ("-7.410984687618698162648531893023320585475897039214871466383" - "785237510132609053131277979497545424539885696948470431685765" - "963899850655339096945981621940161728171894510697854671067917" -@@ -3990,35 +3990,35 @@ static const struct test tests[] = { - "433756084600398490497214911746308553955635418864151316847843" - "6313080237596295773983001708984375e-324", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-1076, false, -- -0x8p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- true, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- true, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- false, -- -0x8p-1076, false, -- -0x8p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- true, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-1076, false, true, -+ -0x8p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ true, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ true, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ false, -+ -0x8p-1076, false, true, -+ -0x8p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ true, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false), - TEST ("-7.410984687618698162648531893023320585475897039214871466383" - "785237510132609053131277979497545424539885696948470431685765" - "963899850655339096945981621940161728171894510697854671067917" -@@ -4033,35 +4033,35 @@ static const struct test tests[] = { - "433756084600398490497214911746308553955635418864151316847843" - "631308023759629577398300170898437501e-324", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-1076, false, -- -0x8p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- false, -- -0x6.0000000000000008p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- false, -- -0x6.0000000000000008p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- false, -- -0x8p-1076, false, -- -0x8p-1076, false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- false, -- -0x6.0000000000000000000000000004p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false, -- -0x6p-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-1076, false, true, -+ -0x8p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ false, -+ -0x6.0000000000000008p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ false, -+ -0x6.0000000000000008p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ false, -+ -0x8p-1076, false, true, -+ -0x8p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ false, -+ -0x6.0000000000000000000000000004p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false, -+ -0x6p-1076, false, false), - TEST ("5.4677992978237119037926089004291297245985762235403450155814" - "707305425575329500966052143410629387408077958710210208052966" - "529504784489330482549602621133847135082257338717668975178538" -@@ -4255,35 +4255,35 @@ static const struct test tests[] = { - "866268925981702690270202829595794350800918257913991744455922" - "683343374046671669930219650268554687499e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x8p-16448, false, -- 0x8p-16448, false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- false, -- 0x8p-16448, false, -- 0xcp-16448, false, -- 0x8p-16448, false, -- 0xcp-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0xb.fffffffffffcp-16448, false, -- 0xcp-16448, false, -- 0xb.fffffffffffcp-16448, false, -- 0xcp-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0x8p-16448, false, true, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0xcp-16448, false, true, -+ 0x8p-16448, false, true, -+ 0xcp-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0xb.fffffffffffcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xb.fffffffffffcp-16448, false, true, -+ 0xcp-16448, false, true), - TEST ("5.4677992978237119037926089004291297245985762235403450155814" - "707305425575329500966052143410629387408077958710210208052966" - "529504784489330482549602621133847135082257338717668975178538" -@@ -4477,35 +4477,35 @@ static const struct test tests[] = { - "866268925981702690270202829595794350800918257913991744455922" - "6833433740466716699302196502685546875e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- true, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ true, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false), - TEST ("5.4677992978237119037926089004291297245985762235403450155814" - "707305425575329500966052143410629387408077958710210208052966" - "529504784489330482549602621133847135082257338717668975178538" -@@ -4699,35 +4699,35 @@ static const struct test tests[] = { - "866268925981702690270202829595794350800918257913991744455922" - "683343374046671669930219650268554687501e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0x1p-16444, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xc.000000000004p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ false, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0x1p-16444, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xc.000000000004p-16448, false, true), - TEST ("-5.467799297823711903792608900429129724598576223540345015581" - "470730542557532950096605214341062938740807795871021020805296" - "652950478448933048254960262113384713508225733871766897517853" -@@ -4921,35 +4921,35 @@ static const struct test tests[] = { - "386626892598170269027020282959579435080091825791399174445592" - "2683343374046671669930219650268554687499e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x1p-16444, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xb.fffffffffffcp-16448, false, -- -0xb.fffffffffffcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ false, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xb.fffffffffffcp-16448, false, true, -+ -0xb.fffffffffffcp-16448, false, true), - TEST ("-5.467799297823711903792608900429129724598576223540345015581" - "470730542557532950096605214341062938740807795871021020805296" - "652950478448933048254960262113384713508225733871766897517853" -@@ -5143,35 +5143,35 @@ static const struct test tests[] = { - "386626892598170269027020282959579435080091825791399174445592" - "26833433740466716699302196502685546875e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x1p-16444, false, -- -0x1p-16444, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- true, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0x1p-16444, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ true, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false), - TEST ("-5.467799297823711903792608900429129724598576223540345015581" - "470730542557532950096605214341062938740807795871021020805296" - "652950478448933048254960262113384713508225733871766897517853" -@@ -5365,35 +5365,35 @@ static const struct test tests[] = { - "386626892598170269027020282959579435080091825791399174445592" - "2683343374046671669930219650268554687501e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x1p-16444, false, -- -0x1p-16444, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- false, -- -0x1p-16444, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0xc.000000000004p-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0x1p-16444, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0xc.000000000004p-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true), - TEST ("5.4677992978237119037926089004291297245985762235403450155814" - "707305425575329500966052143410629387408077958710210208052966" - "529504784489330482549602621133847135082257338717668975178538" -@@ -5587,35 +5587,35 @@ static const struct test tests[] = { - "866268925981702690270202829595794350800918257913991744455922" - "683343374046671669930219650268554687499e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x8p-16448, false, -- 0x8p-16448, false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- false, -- 0x8p-16448, false, -- 0xcp-16448, false, -- 0x8p-16448, false, -- 0xcp-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0xb.fffffffffffcp-16448, false, -- 0xcp-16448, false, -- 0xb.fffffffffffcp-16448, false, -- 0xcp-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0x8p-16448, false, true, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0xcp-16448, false, true, -+ 0x8p-16448, false, true, -+ 0xcp-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0xb.fffffffffffcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xb.fffffffffffcp-16448, false, true, -+ 0xcp-16448, false, true), - TEST ("5.4677992978237119037926089004291297245985762235403450155814" - "707305425575329500966052143410629387408077958710210208052966" - "529504784489330482549602621133847135082257338717668975178538" -@@ -5809,35 +5809,35 @@ static const struct test tests[] = { - "866268925981702690270202829595794350800918257913991744455922" - "6833433740466716699302196502685546875e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- true, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ true, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false, -+ 0xcp-16448, false, false), - TEST ("5.4677992978237119037926089004291297245985762235403450155814" - "707305425575329500966052143410629387408077958710210208052966" - "529504784489330482549602621133847135082257338717668975178538" -@@ -6031,35 +6031,35 @@ static const struct test tests[] = { - "866268925981702690270202829595794350800918257913991744455922" - "683343374046671669930219650268554687501e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- 0x8p-16448, false, -- 0x1p-16444, false, -- false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0x1p-16444, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xcp-16448, false, -- 0xc.000000000004p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ 0x8p-16448, false, true, -+ 0x1p-16444, false, true, -+ false, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0x1p-16444, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xcp-16448, false, true, -+ 0xc.000000000004p-16448, false, true), - TEST ("-5.467799297823711903792608900429129724598576223540345015581" - "470730542557532950096605214341062938740807795871021020805296" - "652950478448933048254960262113384713508225733871766897517853" -@@ -6253,35 +6253,35 @@ static const struct test tests[] = { - "386626892598170269027020282959579435080091825791399174445592" - "2683343374046671669930219650268554687499e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x1p-16444, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xb.fffffffffffcp-16448, false, -- -0xb.fffffffffffcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ false, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xb.fffffffffffcp-16448, false, true, -+ -0xb.fffffffffffcp-16448, false, true), - TEST ("-5.467799297823711903792608900429129724598576223540345015581" - "470730542557532950096605214341062938740807795871021020805296" - "652950478448933048254960262113384713508225733871766897517853" -@@ -6475,35 +6475,35 @@ static const struct test tests[] = { - "386626892598170269027020282959579435080091825791399174445592" - "26833433740466716699302196502685546875e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x1p-16444, false, -- -0x1p-16444, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- true, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0x1p-16444, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ true, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false, -+ -0xcp-16448, false, false), - TEST ("-5.467799297823711903792608900429129724598576223540345015581" - "470730542557532950096605214341062938740807795871021020805296" - "652950478448933048254960262113384713508225733871766897517853" -@@ -6697,630 +6697,630 @@ static const struct test tests[] = { - "386626892598170269027020282959579435080091825791399174445592" - "2683343374046671669930219650268554687501e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x1p-16444, false, -- -0x1p-16444, false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- false, -- -0x1p-16444, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0xc.000000000004p-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false, -- -0xcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0x1p-16444, false, true, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ false, -+ -0x1p-16444, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0xc.000000000004p-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true, -+ -0xcp-16448, false, true), - TEST ("-0x0.7p-149", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- true, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- true, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- true, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- true, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false, -- -0x3.8p-152, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ true, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ true, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ true, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ true, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false, -+ -0x3.8p-152, false, false), - TEST ("-0x0.7p-1074", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- true, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false, -- -0x1.cp-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ true, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false, -+ -0x1.cp-1076, false, false), - TEST ("-0x0.7p-16445", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x3.8p-16448, false, -- -0x3.8p-16448, false, -- -0x3.8p-16448, false, -- -0x3.8p-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x3.8p-16448, false, false, -+ -0x3.8p-16448, false, false, -+ -0x3.8p-16448, false, false, -+ -0x3.8p-16448, false, false), - TEST ("-0x0.7p-16494", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16496, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16496, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true), - TEST ("0x1p-150", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false), - TEST ("0x1p-1075", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- true, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ true, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false), - TEST ("0x1p-16446", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- true, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ true, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false), - TEST ("0x1p-16495", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16496, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16496, false, true), - TEST ("-0x1p-150", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false), - TEST ("-0x1p-1075", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- true, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ true, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false), - TEST ("-0x1p-16446", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false), - TEST ("-0x1p-16495", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16496, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16496, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true), - TEST (".70064923216240853546186479164495807e-45", - false, -- 0x0p+0, false, -- 0x8p-152, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000004p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000000008p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000000008p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.00000000000000000000000002p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000000000000000000004p-152, false), -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000004p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000000008p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000000008p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.00000000000000000000000002p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000000000000000000004p-152, false, false), - TEST ("7.0064923216240853546186479164495806564013097093825788587853" - "4141944895541342930300743319094181060791015624e-46", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x3.ffffffffffffep-152, false, -- 0x4p-152, false, -- 0x3.ffffffffffffep-152, false, -- 0x4p-152, false, -- false, -- 0x3.fffffffffffffffcp-152, false, -- 0x4p-152, false, -- 0x3.fffffffffffffffcp-152, false, -- 0x4p-152, false, -- false, -- 0x3.fffffffffffffffcp-152, false, -- 0x4p-152, false, -- 0x3.fffffffffffffffcp-152, false, -- 0x4p-152, false, -- false, -- 0x3.ffffffffffffffffffffffffffp-152, false, -- 0x4p-152, false, -- 0x3.ffffffffffffffffffffffffffp-152, false, -- 0x4p-152, false, -- false, -- 0x3.fffffffffffffffffffffffffffep-152, false, -- 0x4p-152, false, -- 0x3.fffffffffffffffffffffffffffep-152, false, -- 0x4p-152, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x3.ffffffffffffep-152, false, false, -+ 0x4p-152, false, false, -+ 0x3.ffffffffffffep-152, false, false, -+ 0x4p-152, false, false, -+ false, -+ 0x3.fffffffffffffffcp-152, false, false, -+ 0x4p-152, false, false, -+ 0x3.fffffffffffffffcp-152, false, false, -+ 0x4p-152, false, false, -+ false, -+ 0x3.fffffffffffffffcp-152, false, false, -+ 0x4p-152, false, false, -+ 0x3.fffffffffffffffcp-152, false, false, -+ 0x4p-152, false, false, -+ false, -+ 0x3.ffffffffffffffffffffffffffp-152, false, false, -+ 0x4p-152, false, false, -+ 0x3.ffffffffffffffffffffffffffp-152, false, false, -+ 0x4p-152, false, false, -+ false, -+ 0x3.fffffffffffffffffffffffffffep-152, false, false, -+ 0x4p-152, false, false, -+ 0x3.fffffffffffffffffffffffffffep-152, false, false, -+ 0x4p-152, false, false), - TEST ("7.0064923216240853546186479164495806564013097093825788587853" - "4141944895541342930300743319094181060791015625e-46", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- true, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ true, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false), - TEST ("7.0064923216240853546186479164495806564013097093825788587853" - "4141944895541342930300743319094181060791015626e-46", - false, -- 0x0p+0, false, -- 0x8p-152, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000004p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000000008p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000000008p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.00000000000000000000000002p-152, false, -- false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4p-152, false, -- 0x4.0000000000000000000000000004p-152, false), -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000004p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000000008p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000000008p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.00000000000000000000000002p-152, false, false, -+ false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4p-152, false, false, -+ 0x4.0000000000000000000000000004p-152, false, false), - TEST ("-7.006492321624085354618647916449580656401309709382578858785" - "34141944895541342930300743319094181060791015624e-46", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x3.ffffffffffffep-152, false, -- -0x3.ffffffffffffep-152, false, -- false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x3.fffffffffffffffcp-152, false, -- -0x3.fffffffffffffffcp-152, false, -- false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x3.fffffffffffffffcp-152, false, -- -0x3.fffffffffffffffcp-152, false, -- false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x3.ffffffffffffffffffffffffffp-152, false, -- -0x3.ffffffffffffffffffffffffffp-152, false, -- false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x3.fffffffffffffffffffffffffffep-152, false, -- -0x3.fffffffffffffffffffffffffffep-152, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x3.ffffffffffffep-152, false, false, -+ -0x3.ffffffffffffep-152, false, false, -+ false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x3.fffffffffffffffcp-152, false, false, -+ -0x3.fffffffffffffffcp-152, false, false, -+ false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x3.fffffffffffffffcp-152, false, false, -+ -0x3.fffffffffffffffcp-152, false, false, -+ false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x3.ffffffffffffffffffffffffffp-152, false, false, -+ -0x3.ffffffffffffffffffffffffffp-152, false, false, -+ false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x3.fffffffffffffffffffffffffffep-152, false, false, -+ -0x3.fffffffffffffffffffffffffffep-152, false, false), - TEST ("-7.006492321624085354618647916449580656401309709382578858785" - "34141944895541342930300743319094181060791015625e-46", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- true, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ true, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false), - TEST ("-7.006492321624085354618647916449580656401309709382578858785" - "34141944895541342930300743319094181060791015626e-46", - false, -- -0x8p-152, false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4.0000000000004p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- false, -- -0x4.0000000000000008p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- false, -- -0x4.0000000000000008p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- false, -- -0x4.00000000000000000000000002p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- false, -- -0x4.0000000000000000000000000004p-152, false, -- -0x4p-152, false, -- -0x4p-152, false, -- -0x4p-152, false), -+ -0x8p-152, false, true, -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4.0000000000004p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ false, -+ -0x4.0000000000000008p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ false, -+ -0x4.0000000000000008p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ false, -+ -0x4.00000000000000000000000002p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ false, -+ -0x4.0000000000000000000000000004p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false, -+ -0x4p-152, false, false), - TEST ("2.4703282292062327208828439643411068618252990130716238221279" - "284125033775363510437593264991818081799618989828234772285886" - "546332835517796989819938739800539093906315035659515570226392" -@@ -7335,35 +7335,35 @@ static const struct test tests[] = { - "779186948667994968324049705821028513185451396213837722826145" - "437693412532098591327667236328124e-324", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x1.fffffffffffffffep-1076, false, -- 0x2p-1076, false, -- 0x1.fffffffffffffffep-1076, false, -- 0x2p-1076, false, -- false, -- 0x1.fffffffffffffffep-1076, false, -- 0x2p-1076, false, -- 0x1.fffffffffffffffep-1076, false, -- 0x2p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x1.ffffffffffffffffffffffffffffp-1076, false, -- 0x2p-1076, false, -- 0x1.ffffffffffffffffffffffffffffp-1076, false, -- 0x2p-1076, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.fffffffffffffffep-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x1.fffffffffffffffep-1076, false, false, -+ 0x2p-1076, false, false, -+ false, -+ 0x1.fffffffffffffffep-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x1.fffffffffffffffep-1076, false, false, -+ 0x2p-1076, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false, -+ 0x2p-1076, false, false), - TEST ("2.4703282292062327208828439643411068618252990130716238221279" - "284125033775363510437593264991818081799618989828234772285886" - "546332835517796989819938739800539093906315035659515570226392" -@@ -7378,35 +7378,35 @@ static const struct test tests[] = { - "779186948667994968324049705821028513185451396213837722826145" - "437693412532098591327667236328125e-324", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- true, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ true, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false), - TEST ("2.4703282292062327208828439643411068618252990130716238221279" - "284125033775363510437593264991818081799618989828234772285886" - "546332835517796989819938739800539093906315035659515570226392" -@@ -7421,35 +7421,35 @@ static const struct test tests[] = { - "779186948667994968324049705821028513185451396213837722826145" - "437693412532098591327667236328126e-324", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x4p-1076, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2.0000000000000004p-1076, false, -- false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2.0000000000000004p-1076, false, -- false, -- 0x0p+0, false, -- 0x4p-1076, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2p-1076, false, -- 0x2.0000000000000000000000000002p-1076, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2.0000000000000004p-1076, false, false, -+ false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2.0000000000000004p-1076, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2p-1076, false, false, -+ 0x2.0000000000000000000000000002p-1076, false, false), - TEST ("-2.470328229206232720882843964341106861825299013071623822127" - "928412503377536351043759326499181808179961898982823477228588" - "654633283551779698981993873980053909390631503565951557022639" -@@ -7464,35 +7464,35 @@ static const struct test tests[] = { - "477918694866799496832404970582102851318545139621383772282614" - "5437693412532098591327667236328124e-324", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x1.fffffffffffffffep-1076, false, -- -0x1.fffffffffffffffep-1076, false, -- false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x1.fffffffffffffffep-1076, false, -- -0x1.fffffffffffffffep-1076, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x1.ffffffffffffffffffffffffffffp-1076, false, -- -0x1.ffffffffffffffffffffffffffffp-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x1.fffffffffffffffep-1076, false, false, -+ -0x1.fffffffffffffffep-1076, false, false, -+ false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x1.fffffffffffffffep-1076, false, false, -+ -0x1.fffffffffffffffep-1076, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false, -+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false), - TEST ("-2.470328229206232720882843964341106861825299013071623822127" - "928412503377536351043759326499181808179961898982823477228588" - "654633283551779698981993873980053909390631503565951557022639" -@@ -7507,35 +7507,35 @@ static const struct test tests[] = { - "477918694866799496832404970582102851318545139621383772282614" - "5437693412532098591327667236328125e-324", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- true, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ true, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false), - TEST ("-2.470328229206232720882843964341106861825299013071623822127" - "928412503377536351043759326499181808179961898982823477228588" - "654633283551779698981993873980053909390631503565951557022639" -@@ -7550,35 +7550,35 @@ static const struct test tests[] = { - "477918694866799496832404970582102851318545139621383772282614" - "5437693412532098591327667236328126e-324", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x2.0000000000000004p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- false, -- -0x2.0000000000000004p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- false, -- -0x4p-1076, false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x2.0000000000000000000000000002p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false, -- -0x2p-1076, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x2.0000000000000004p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ false, -+ -0x2.0000000000000004p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x2.0000000000000000000000000002p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false, -+ -0x2p-1076, false, false), - TEST ("1.8225997659412373012642029668097099081995254078467816718604" - "902435141858443166988684047803543129136025986236736736017655" - "509834928163110160849867540377949045027419112905889658392846" -@@ -7772,35 +7772,35 @@ static const struct test tests[] = { - "622089641993900896756734276531931450266972752637997248151974" - "2277811246822238899767398834228515624e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x4p-16448, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x3.fffffffffffcp-16448, false, -- 0x4p-16448, false, -- 0x3.fffffffffffcp-16448, false, -- 0x4p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x3.fffffffffffcp-16448, false, true, -+ 0x4p-16448, false, true, -+ 0x3.fffffffffffcp-16448, false, true, -+ 0x4p-16448, false, true), - TEST ("1.8225997659412373012642029668097099081995254078467816718604" - "902435141858443166988684047803543129136025986236736736017655" - "509834928163110160849867540377949045027419112905889658392846" -@@ -7994,35 +7994,35 @@ static const struct test tests[] = { - "622089641993900896756734276531931450266972752637997248151974" - "2277811246822238899767398834228515625e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- true, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ true, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false, -+ 0x4p-16448, false, false), - TEST ("1.8225997659412373012642029668097099081995254078467816718604" - "902435141858443166988684047803543129136025986236736736017655" - "509834928163110160849867540377949045027419112905889658392846" -@@ -8216,35 +8216,35 @@ static const struct test tests[] = { - "622089641993900896756734276531931450266972752637997248151974" - "2277811246822238899767398834228515626e-4951", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x8p-16448, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4p-16448, false, -- 0x4.000000000004p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x4p-16448, false, true, -+ 0x4p-16448, false, true, -+ 0x4p-16448, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x4p-16448, false, true, -+ 0x4p-16448, false, true, -+ 0x4p-16448, false, true, -+ 0x4.000000000004p-16448, false, true), - TEST ("-1.822599765941237301264202966809709908199525407846781671860" - "490243514185844316698868404780354312913602598623673673601765" - "550983492816311016084986754037794904502741911290588965839284" -@@ -8438,35 +8438,35 @@ static const struct test tests[] = { - "462208964199390089675673427653193145026697275263799724815197" - "42277811246822238899767398834228515624e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x3.fffffffffffcp-16448, false, -- -0x3.fffffffffffcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x3.fffffffffffcp-16448, false, true, -+ -0x3.fffffffffffcp-16448, false, true), - TEST ("-1.822599765941237301264202966809709908199525407846781671860" - "490243514185844316698868404780354312913602598623673673601765" - "550983492816311016084986754037794904502741911290588965839284" -@@ -8660,35 +8660,35 @@ static const struct test tests[] = { - "462208964199390089675673427653193145026697275263799724815197" - "42277811246822238899767398834228515625e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false, -+ -0x4p-16448, false, false), - TEST ("-1.822599765941237301264202966809709908199525407846781671860" - "490243514185844316698868404780354312913602598623673673601765" - "550983492816311016084986754037794904502741911290588965839284" -@@ -8882,35 +8882,35 @@ static const struct test tests[] = { - "462208964199390089675673427653193145026697275263799724815197" - "42277811246822238899767398834228515626e-4951", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4.000000000004p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x4p-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4.000000000004p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true), - TEST ("9.1129988297061865063210148340485495409976270392339083593024" - "512175709292215834943420239017715645680129931183683680088277" - "549174640815550804249337701889745225137095564529448291964230" -@@ -9104,35 +9104,35 @@ static const struct test tests[] = { - "110448209969504483783671382659657251334863763189986240759871" - "1389056234111194498836994171142578124e-4952", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x1.fffffffffffcp-16448, false, -- 0x2p-16448, false, -- 0x1.fffffffffffcp-16448, false, -- 0x2p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.fffffffffffcp-16448, false, true, -+ 0x2p-16448, false, true, -+ 0x1.fffffffffffcp-16448, false, true, -+ 0x2p-16448, false, true), - TEST ("9.1129988297061865063210148340485495409976270392339083593024" - "512175709292215834943420239017715645680129931183683680088277" - "549174640815550804249337701889745225137095564529448291964230" -@@ -9326,35 +9326,35 @@ static const struct test tests[] = { - "110448209969504483783671382659657251334863763189986240759871" - "1389056234111194498836994171142578125e-4952", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- true, -- 0x2p-16448, false, -- 0x2p-16448, false, -- 0x2p-16448, false, -- 0x2p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x2p-16448, false, false, -+ 0x2p-16448, false, false, -+ 0x2p-16448, false, false, -+ 0x2p-16448, false, false), - TEST ("9.1129988297061865063210148340485495409976270392339083593024" - "512175709292215834943420239017715645680129931183683680088277" - "549174640815550804249337701889745225137095564529448291964230" -@@ -9548,35 +9548,35 @@ static const struct test tests[] = { - "110448209969504483783671382659657251334863763189986240759871" - "1389056234111194498836994171142578126e-4952", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x4p-16448, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x2p-16448, false, -- 0x2p-16448, false, -- 0x2p-16448, false, -- 0x2.000000000004p-16448, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x2p-16448, false, true, -+ 0x2p-16448, false, true, -+ 0x2p-16448, false, true, -+ 0x2.000000000004p-16448, false, true), - TEST ("-9.112998829706186506321014834048549540997627039233908359302" - "451217570929221583494342023901771564568012993118368368008827" - "754917464081555080424933770188974522513709556452944829196423" -@@ -9770,35 +9770,35 @@ static const struct test tests[] = { - "311044820996950448378367138265965725133486376318998624075987" - "11389056234111194498836994171142578124e-4952", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x2p-16448, false, -- -0x2p-16448, false, -- -0x1.fffffffffffcp-16448, false, -- -0x1.fffffffffffcp-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x2p-16448, false, true, -+ -0x2p-16448, false, true, -+ -0x1.fffffffffffcp-16448, false, true, -+ -0x1.fffffffffffcp-16448, false, true), - TEST ("-9.112998829706186506321014834048549540997627039233908359302" - "451217570929221583494342023901771564568012993118368368008827" - "754917464081555080424933770188974522513709556452944829196423" -@@ -9992,35 +9992,35 @@ static const struct test tests[] = { - "311044820996950448378367138265965725133486376318998624075987" - "11389056234111194498836994171142578125e-4952", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- true, -- -0x2p-16448, false, -- -0x2p-16448, false, -- -0x2p-16448, false, -- -0x2p-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ true, -+ -0x2p-16448, false, false, -+ -0x2p-16448, false, false, -+ -0x2p-16448, false, false, -+ -0x2p-16448, false, false), - TEST ("-9.112998829706186506321014834048549540997627039233908359302" - "451217570929221583494342023901771564568012993118368368008827" - "754917464081555080424933770188974522513709556452944829196423" -@@ -10214,35 +10214,35 @@ static const struct test tests[] = { - "311044820996950448378367138265965725133486376318998624075987" - "11389056234111194498836994171142578126e-4952", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x2.000000000004p-16448, false, -- -0x2p-16448, false, -- -0x2p-16448, false, -- -0x2p-16448, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x2.000000000004p-16448, false, true, -+ -0x2p-16448, false, true, -+ -0x2p-16448, false, true, -+ -0x2p-16448, false, true), - TEST ("3.2375875597190125554622194791138232762497846690173405048449" - "421945985197700620596855088357456383249701279390707384240598" - "382936099431912710233425550359863089915213963553756674672083" -@@ -10437,35 +10437,35 @@ static const struct test tests[] = { - "182358152808745703724362178773168996492870519432472065091133" - "11767578124e-4966", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16496, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16496, false, true), - TEST ("3.2375875597190125554622194791138232762497846690173405048449" - "421945985197700620596855088357456383249701279390707384240598" - "382936099431912710233425550359863089915213963553756674672083" -@@ -10660,35 +10660,35 @@ static const struct test tests[] = { - "182358152808745703724362178773168996492870519432472065091133" - "11767578125e-4966", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16496, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16496, false, true), - TEST ("3.2375875597190125554622194791138232762497846690173405048449" - "421945985197700620596855088357456383249701279390707384240598" - "382936099431912710233425550359863089915213963553756674672083" -@@ -10883,35 +10883,35 @@ static const struct test tests[] = { - "182358152808745703724362178773168996492870519432472065091133" - "11767578126e-4966", - false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-152, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x8p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-16448, false, -- false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x0p+0, false, -- 0x4p-1076, false, -- false, -- 0x0p+0, false, -- 0x4p-16496, false, -- 0x0p+0, false, -- 0x4p-16496, false), -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16448, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x4p-16496, false, true, -+ 0x0p+0, false, true, -+ 0x4p-16496, false, true), - TEST ("-3.237587559719012555462219479113823276249784669017340504844" - "942194598519770062059685508835745638324970127939070738424059" - "838293609943191271023342555035986308991521396355375667467208" -@@ -11106,35 +11106,35 @@ static const struct test tests[] = { - "218235815280874570372436217877316899649287051943247206509113" - "311767578124e-4966", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16496, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16496, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true), - TEST ("-3.237587559719012555462219479113823276249784669017340504844" - "942194598519770062059685508835745638324970127939070738424059" - "838293609943191271023342555035986308991521396355375667467208" -@@ -11329,35 +11329,35 @@ static const struct test tests[] = { - "218235815280874570372436217877316899649287051943247206509113" - "311767578125e-4966", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16496, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16496, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true), - TEST ("-3.237587559719012555462219479113823276249784669017340504844" - "942194598519770062059685508835745638324970127939070738424059" - "838293609943191271023342555035986308991521396355375667467208" -@@ -11552,66 +11552,66 @@ static const struct test tests[] = { - "218235815280874570372436217877316899649287051943247206509113" - "311767578126e-4966", - false, -- -0x8p-152, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x8p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16448, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-1076, false, -- -0x0p+0, false, -- -0x0p+0, false, -- -0x0p+0, false, -- false, -- -0x4p-16496, false, -- -0x4p-16496, false, -- -0x0p+0, false, -- -0x0p+0, false), -+ -0x8p-152, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x8p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16448, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-1076, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true, -+ false, -+ -0x4p-16496, false, true, -+ -0x4p-16496, false, true, -+ -0x0p+0, false, true, -+ -0x0p+0, false, true), - TEST ("340282366920938463463374607431768211455", - false, -- 0xf.fffffp+124, false, -- INF, true, -- 0xf.fffffp+124, false, -- INF, true, -- false, -- 0xf.ffffffffffff8p+124, false, -- 0x1p+128, false, -- 0xf.ffffffffffff8p+124, false, -- 0x1p+128, false, -- false, -- 0xf.fffffffffffffffp+124, false, -- 0x1p+128, false, -- 0xf.fffffffffffffffp+124, false, -- 0x1p+128, false, -- false, -- 0xf.fffffffffffffffp+124, false, -- 0x1p+128, false, -- 0xf.fffffffffffffffp+124, false, -- 0x1p+128, false, -- false, -- 0xf.fffffffffffffffffffffffffcp+124, false, -- 0x1p+128, false, -- 0xf.fffffffffffffffffffffffffcp+124, false, -- 0x1p+128, false, -- false, -- 0xf.fffffffffffffffffffffffffff8p+124, false, -- 0x1p+128, false, -- 0xf.fffffffffffffffffffffffffff8p+124, false, -- 0x1p+128, false), -+ 0xf.fffffp+124, false, false, -+ INF, true, false, -+ 0xf.fffffp+124, false, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+124, false, false, -+ 0x1p+128, false, false, -+ 0xf.ffffffffffff8p+124, false, false, -+ 0x1p+128, false, false, -+ false, -+ 0xf.fffffffffffffffp+124, false, false, -+ 0x1p+128, false, false, -+ 0xf.fffffffffffffffp+124, false, false, -+ 0x1p+128, false, false, -+ false, -+ 0xf.fffffffffffffffp+124, false, false, -+ 0x1p+128, false, false, -+ 0xf.fffffffffffffffp+124, false, false, -+ 0x1p+128, false, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+124, false, false, -+ 0x1p+128, false, false, -+ 0xf.fffffffffffffffffffffffffcp+124, false, false, -+ 0x1p+128, false, false, -+ false, -+ 0xf.fffffffffffffffffffffffffff8p+124, false, false, -+ 0x1p+128, false, false, -+ 0xf.fffffffffffffffffffffffffff8p+124, false, false, -+ 0x1p+128, false, false), - TEST ("179769313486231590772930519078902473361797697894230657273430" - "081157732675805500963132708477322407536021120113879871393357" - "658789768814416622492847430639474124377767893424865485276302" -@@ -11619,35 +11619,35 @@ static const struct test tests[] = { - "540827237163350510684586298239947245938479716304835356329624" - "224137215", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, false, -- INF, true, -- 0xf.ffffffffffff8p+1020, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+1020, false, -- 0x1p+1024, false, -- 0xf.fffffffffffffffp+1020, false, -- 0x1p+1024, false, -- false, -- 0xf.fffffffffffffffp+1020, false, -- 0x1p+1024, false, -- 0xf.fffffffffffffffp+1020, false, -- 0x1p+1024, false, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffff8p+1020, false, -- 0x1p+1024, false, -- 0xf.fffffffffffffffffffffffffff8p+1020, false, -- 0x1p+1024, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+1020, false, false, -+ 0x1p+1024, false, false, -+ 0xf.fffffffffffffffp+1020, false, false, -+ 0x1p+1024, false, false, -+ false, -+ 0xf.fffffffffffffffp+1020, false, false, -+ 0x1p+1024, false, false, -+ 0xf.fffffffffffffffp+1020, false, false, -+ 0x1p+1024, false, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false, -+ 0x1p+1024, false, false, -+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false, -+ 0x1p+1024, false, false), - TEST ("118973149535723176508575932662800713076344468709651023747267" - "482123326135818048368690448859547261203991511543748483930925" - "889766738130868742627452469834156500608087163436600489752214" -@@ -11732,66 +11732,66 @@ static const struct test tests[] = { - "047398248889922809181821393428829567971736994315246044702729" - "0669964066815", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- 0xf.fffffffffffffffp+16380, false, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- INF, true, -- 0xf.fffffffffffffffffffffffffff8p+16380, false, -- INF, true), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffp+16380, false, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ INF, true, false), - TEST ("-340282366920938463463374607431768211455", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, false, -- -0xf.fffffp+124, false, -- false, -- -0x1p+128, false, -- -0x1p+128, false, -- -0xf.ffffffffffff8p+124, false, -- -0xf.ffffffffffff8p+124, false, -- false, -- -0x1p+128, false, -- -0x1p+128, false, -- -0xf.fffffffffffffffp+124, false, -- -0xf.fffffffffffffffp+124, false, -- false, -- -0x1p+128, false, -- -0x1p+128, false, -- -0xf.fffffffffffffffp+124, false, -- -0xf.fffffffffffffffp+124, false, -- false, -- -0x1p+128, false, -- -0x1p+128, false, -- -0xf.fffffffffffffffffffffffffcp+124, false, -- -0xf.fffffffffffffffffffffffffcp+124, false, -- false, -- -0x1p+128, false, -- -0x1p+128, false, -- -0xf.fffffffffffffffffffffffffff8p+124, false, -- -0xf.fffffffffffffffffffffffffff8p+124, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, false, false, -+ -0xf.fffffp+124, false, false, -+ false, -+ -0x1p+128, false, false, -+ -0x1p+128, false, false, -+ -0xf.ffffffffffff8p+124, false, false, -+ -0xf.ffffffffffff8p+124, false, false, -+ false, -+ -0x1p+128, false, false, -+ -0x1p+128, false, false, -+ -0xf.fffffffffffffffp+124, false, false, -+ -0xf.fffffffffffffffp+124, false, false, -+ false, -+ -0x1p+128, false, false, -+ -0x1p+128, false, false, -+ -0xf.fffffffffffffffp+124, false, false, -+ -0xf.fffffffffffffffp+124, false, false, -+ false, -+ -0x1p+128, false, false, -+ -0x1p+128, false, false, -+ -0xf.fffffffffffffffffffffffffcp+124, false, false, -+ -0xf.fffffffffffffffffffffffffcp+124, false, false, -+ false, -+ -0x1p+128, false, false, -+ -0x1p+128, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+124, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+124, false, false), - TEST ("-17976931348623159077293051907890247336179769789423065727343" - "008115773267580550096313270847732240753602112011387987139335" - "765878976881441662249284743063947412437776789342486548527630" -@@ -11799,35 +11799,35 @@ static const struct test tests[] = { - "054082723716335051068458629823994724593847971630483535632962" - "4224137215", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, false, -- -0xf.ffffffffffff8p+1020, false, -- false, -- -0x1p+1024, false, -- -0x1p+1024, false, -- -0xf.fffffffffffffffp+1020, false, -- -0xf.fffffffffffffffp+1020, false, -- false, -- -0x1p+1024, false, -- -0x1p+1024, false, -- -0xf.fffffffffffffffp+1020, false, -- -0xf.fffffffffffffffp+1020, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- false, -- -0x1p+1024, false, -- -0x1p+1024, false, -- -0xf.fffffffffffffffffffffffffff8p+1020, false, -- -0xf.fffffffffffffffffffffffffff8p+1020, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ -0xf.ffffffffffff8p+1020, false, false, -+ false, -+ -0x1p+1024, false, false, -+ -0x1p+1024, false, false, -+ -0xf.fffffffffffffffp+1020, false, false, -+ -0xf.fffffffffffffffp+1020, false, false, -+ false, -+ -0x1p+1024, false, false, -+ -0x1p+1024, false, false, -+ -0xf.fffffffffffffffp+1020, false, false, -+ -0xf.fffffffffffffffp+1020, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ false, -+ -0x1p+1024, false, false, -+ -0x1p+1024, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false), - TEST ("-11897314953572317650857593266280071307634446870965102374726" - "748212332613581804836869044885954726120399151154374848393092" - "588976673813086874262745246983415650060808716343660048975221" -@@ -11912,3529 +11912,3529 @@ static const struct test tests[] = { - "904739824888992280918182139342882956797173699431524604470272" - "90669964066815", - false, -- -INF, true, -- -INF, true, -- -0xf.fffffp+124, true, -- -0xf.fffffp+124, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.ffffffffffff8p+1020, true, -- -0xf.ffffffffffff8p+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffp+16380, false, -- -0xf.fffffffffffffffp+16380, false, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- -0xf.fffffffffffffffffffffffffcp+1020, true, -- false, -- -INF, true, -- -INF, true, -- -0xf.fffffffffffffffffffffffffff8p+16380, false, -- -0xf.fffffffffffffffffffffffffff8p+16380, false), -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffp+124, true, false, -+ -0xf.fffffp+124, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ -0xf.ffffffffffff8p+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ -0xf.fffffffffffffffp+16380, false, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ false, -+ -INF, true, false, -+ -INF, true, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, -+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), - TEST ("+0x.80000000000000000000000000000001p1025", - false, -- 0xf.fffffp+124, true, -- INF, true, -- 0xf.fffffp+124, true, -- INF, true, -- false, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- 0xf.ffffffffffff8p+1020, true, -- INF, true, -- false, -- 0x1p+1024, false, -- 0x1p+1024, false, -- 0x1p+1024, false, -- 0x1.0000000000000002p+1024, false, -- false, -- 0x1p+1024, false, -- 0x1p+1024, false, -- 0x1p+1024, false, -- 0x1.0000000000000002p+1024, false, -- false, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- 0xf.fffffffffffffffffffffffffcp+1020, true, -- INF, true, -- false, -- 0x1p+1024, false, -- 0x1p+1024, false, -- 0x1p+1024, false, -- 0x1.0000000000000000000000000001p+1024, false), -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ 0xf.fffffp+124, true, false, -+ INF, true, false, -+ false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ 0xf.ffffffffffff8p+1020, true, false, -+ INF, true, false, -+ false, -+ 0x1p+1024, false, false, -+ 0x1p+1024, false, false, -+ 0x1p+1024, false, false, -+ 0x1.0000000000000002p+1024, false, false, -+ false, -+ 0x1p+1024, false, false, -+ 0x1p+1024, false, false, -+ 0x1p+1024, false, false, -+ 0x1.0000000000000002p+1024, false, false, -+ false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, -+ INF, true, false, -+ false, -+ 0x1p+1024, false, false, -+ 0x1p+1024, false, false, -+ 0x1p+1024, false, false, -+ 0x1.0000000000000000000000000001p+1024, false, false), - TEST ("1.5", - true, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- true, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- true, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- true, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- true, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- true, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false, -- 0x1.8p+0, false), -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ true, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ true, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ true, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ true, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ true, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false, -+ 0x1.8p+0, false, false), - TEST ("1.25", - true, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- true, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- true, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- true, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- true, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- true, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false, -- 0x1.4p+0, false), -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ true, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ true, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ true, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ true, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ true, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false, -+ 0x1.4p+0, false, false), - TEST ("1.125", - true, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- true, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- true, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- true, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- true, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- true, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false, -- 0x1.2p+0, false), -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ true, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ true, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ true, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ true, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ true, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false, -+ 0x1.2p+0, false, false), - TEST ("1.0625", - true, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- true, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- true, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- true, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- true, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- true, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false, -- 0x1.1p+0, false), -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ true, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ true, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ true, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ true, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ true, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false, -+ 0x1.1p+0, false, false), - TEST ("1.03125", - true, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- true, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- true, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- true, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- true, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- true, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false, -- 0x1.08p+0, false), -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ true, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ true, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ true, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ true, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ true, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false, -+ 0x1.08p+0, false, false), - TEST ("1.015625", - true, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- true, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- true, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- true, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- true, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- true, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false, -- 0x1.04p+0, false), -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ true, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ true, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ true, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ true, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ true, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false, -+ 0x1.04p+0, false, false), - TEST ("1.0078125", - true, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- true, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- true, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- true, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- true, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- true, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false, -- 0x1.02p+0, false), -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ true, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ true, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ true, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ true, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ true, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false, -+ 0x1.02p+0, false, false), - TEST ("1.00390625", - true, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- true, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- true, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- true, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- true, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- true, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false, -- 0x1.01p+0, false), -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ true, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ true, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ true, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ true, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ true, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false, -+ 0x1.01p+0, false, false), - TEST ("1.001953125", - true, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- true, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- true, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- true, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- true, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- true, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false, -- 0x1.008p+0, false), -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ true, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ true, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ true, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ true, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ true, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false, -+ 0x1.008p+0, false, false), - TEST ("1.0009765625", - true, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- true, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- true, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- true, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- true, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- true, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false, -- 0x1.004p+0, false), -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ true, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ true, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ true, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ true, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ true, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false, -+ 0x1.004p+0, false, false), - TEST ("1.00048828125", - true, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- true, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- true, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- true, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- true, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- true, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false, -- 0x1.002p+0, false), -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ true, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ true, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ true, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ true, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ true, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false, -+ 0x1.002p+0, false, false), - TEST ("1.000244140625", - true, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- true, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- true, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- true, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- true, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- true, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false, -- 0x1.001p+0, false), -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ true, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ true, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ true, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ true, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ true, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false, -+ 0x1.001p+0, false, false), - TEST ("1.0001220703125", - true, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- true, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- true, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- true, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- true, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- true, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false, -- 0x1.0008p+0, false), -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ true, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ true, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ true, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ true, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ true, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false, -+ 0x1.0008p+0, false, false), - TEST ("1.00006103515625", - true, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- true, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- true, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- true, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- true, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- true, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false, -- 0x1.0004p+0, false), -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ true, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ true, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ true, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ true, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ true, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false, -+ 0x1.0004p+0, false, false), - TEST ("1.000030517578125", - true, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- true, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- true, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- true, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- true, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- true, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false, -- 0x1.0002p+0, false), -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ true, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ true, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ true, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ true, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ true, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false, -+ 0x1.0002p+0, false, false), - TEST ("1.0000152587890625", - true, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- true, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- true, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- true, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- true, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- true, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false, -- 0x1.0001p+0, false), -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ true, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ true, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ true, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ true, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ true, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false, -+ 0x1.0001p+0, false, false), - TEST ("1.00000762939453125", - true, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- true, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- true, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- true, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- true, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- true, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false, -- 0x1.00008p+0, false), -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ true, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ true, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ true, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ true, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ true, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false, -+ 0x1.00008p+0, false, false), - TEST ("1.000003814697265625", - true, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- true, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- true, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- true, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- true, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- true, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false, -- 0x1.00004p+0, false), -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ true, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ true, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ true, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ true, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ true, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false, -+ 0x1.00004p+0, false, false), - TEST ("1.0000019073486328125", - true, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- true, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- true, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- true, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- true, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- true, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false, -- 0x1.00002p+0, false), -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ true, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ true, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ true, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ true, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ true, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false, -+ 0x1.00002p+0, false, false), - TEST ("1.00000095367431640625", - true, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- true, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- true, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- true, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- true, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- true, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false, -- 0x1.00001p+0, false), -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ true, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ true, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ true, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ true, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ true, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false, -+ 0x1.00001p+0, false, false), - TEST ("1.000000476837158203125", - true, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- true, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- true, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- true, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- true, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- true, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false, -- 0x1.000008p+0, false), -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ true, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ true, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ true, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ true, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ true, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false, -+ 0x1.000008p+0, false, false), - TEST ("1.0000000298023223876953125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- true, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- true, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- true, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- true, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false, -- 0x1.0000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ true, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ true, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ true, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ true, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false, -+ 0x1.0000008p+0, false, false), - TEST ("1.00000001490116119384765625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- true, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- true, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- true, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- true, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false, -- 0x1.0000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ true, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ true, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ true, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ true, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false, -+ 0x1.0000004p+0, false, false), - TEST ("1.000000007450580596923828125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- true, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- true, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- true, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- true, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false, -- 0x1.0000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ true, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ true, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ true, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ true, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false, -+ 0x1.0000002p+0, false, false), - TEST ("1.0000000037252902984619140625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- true, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- true, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- true, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- true, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false, -- 0x1.0000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ true, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ true, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ true, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ true, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false, -+ 0x1.0000001p+0, false, false), - TEST ("1.00000000186264514923095703125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- true, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- true, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- true, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- true, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false, -- 0x1.00000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ true, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ true, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ true, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ true, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false, -+ 0x1.00000008p+0, false, false), - TEST ("1.000000000931322574615478515625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- true, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- true, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- true, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- true, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false, -- 0x1.00000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ true, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ true, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ true, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ true, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false, -+ 0x1.00000004p+0, false, false), - TEST ("1.0000000004656612873077392578125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- true, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- true, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- true, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- true, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false, -- 0x1.00000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ true, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ true, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ true, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ true, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false, -+ 0x1.00000002p+0, false, false), - TEST ("1.00000000023283064365386962890625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- true, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- true, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- true, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- true, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false, -- 0x1.00000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ true, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ true, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ true, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ true, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false, -+ 0x1.00000001p+0, false, false), - TEST ("1.000000000116415321826934814453125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- true, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- true, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- true, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- true, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false, -- 0x1.000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ true, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ true, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ true, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ true, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false, -+ 0x1.000000008p+0, false, false), - TEST ("1.0000000000582076609134674072265625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- true, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- true, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- true, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- true, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false, -- 0x1.000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ true, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ true, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ true, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ true, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false, -+ 0x1.000000004p+0, false, false), - TEST ("1.00000000002910383045673370361328125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- true, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- true, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- true, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- true, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false, -- 0x1.000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ true, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ true, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ true, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ true, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false, -+ 0x1.000000002p+0, false, false), - TEST ("1.000000000014551915228366851806640625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- true, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- true, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- true, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- true, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false, -- 0x1.000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ true, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ true, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ true, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ true, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false, -+ 0x1.000000001p+0, false, false), - TEST ("1.0000000000072759576141834259033203125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- true, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- true, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- true, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- true, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false, -- 0x1.0000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ true, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ true, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ true, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ true, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false, -+ 0x1.0000000008p+0, false, false), - TEST ("1.00000000000363797880709171295166015625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- true, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- true, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- true, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- true, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false, -- 0x1.0000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ true, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ true, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ true, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ true, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false, -+ 0x1.0000000004p+0, false, false), - TEST ("1.000000000001818989403545856475830078125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- true, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- true, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- true, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- true, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false, -- 0x1.0000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ true, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ true, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ true, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ true, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false, -+ 0x1.0000000002p+0, false, false), - TEST ("1.0000000000009094947017729282379150390625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- true, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- true, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- true, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- true, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false, -- 0x1.0000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ true, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ true, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ true, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ true, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false, -+ 0x1.0000000001p+0, false, false), - TEST ("1.00000000000045474735088646411895751953125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- true, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- true, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- true, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- true, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false, -- 0x1.00000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ true, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ true, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ true, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ true, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false, -+ 0x1.00000000008p+0, false, false), - TEST ("1.000000000000227373675443232059478759765625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- true, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- true, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- true, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- true, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false, -- 0x1.00000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ true, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ true, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ true, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ true, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false, -+ 0x1.00000000004p+0, false, false), - TEST ("1.0000000000001136868377216160297393798828125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- true, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- true, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- true, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- true, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false, -- 0x1.00000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ true, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ true, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ true, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ true, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false, -+ 0x1.00000000002p+0, false, false), - TEST ("1.00000000000005684341886080801486968994140625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- true, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- true, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- true, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- true, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false, -- 0x1.00000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ true, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ true, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ true, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ true, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false, -+ 0x1.00000000001p+0, false, false), - TEST ("1.000000000000028421709430404007434844970703125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- true, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- true, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- true, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- true, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false, -- 0x1.000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ true, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ true, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ true, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ true, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false, -+ 0x1.000000000008p+0, false, false), - TEST ("1.0000000000000142108547152020037174224853515625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- true, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- true, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- true, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- true, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false, -- 0x1.000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ true, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ true, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ true, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ true, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false, -+ 0x1.000000000004p+0, false, false), - TEST ("1.00000000000000710542735760100185871124267578125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- true, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- true, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- true, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- true, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false, -- 0x1.000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ true, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ true, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ true, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ true, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false, -+ 0x1.000000000002p+0, false, false), - TEST ("1.000000000000003552713678800500929355621337890625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- true, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- true, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- true, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- true, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false, -- 0x1.000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ true, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ true, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ true, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ true, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false, -+ 0x1.000000000001p+0, false, false), - TEST ("1.0000000000000017763568394002504646778106689453125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- true, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- true, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- true, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- true, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false, -- 0x1.0000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ true, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ true, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ true, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ true, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false, -+ 0x1.0000000000008p+0, false, false), - TEST ("1.00000000000000088817841970012523233890533447265625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- true, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- true, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- true, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- true, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false, -- 0x1.0000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ true, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ true, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ true, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ true, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false, -+ 0x1.0000000000004p+0, false, false), - TEST ("1.000000000000000444089209850062616169452667236328125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- true, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- true, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- true, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- true, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false, -- 0x1.0000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ true, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ true, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ true, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ true, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false, -+ 0x1.0000000000002p+0, false, false), - TEST ("1.0000000000000002220446049250313080847263336181640625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- true, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false, -- 0x1.0000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ true, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ 0x1.0000000000001p+0, false, false), - TEST ("1.00000000000000011102230246251565404236316680908203125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- true, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- true, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- true, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false, -- 0x1.00000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ true, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ true, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ true, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false, -+ 0x1.00000000000008p+0, false, false), - TEST ("1.000000000000000055511151231257827021181583404541015625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- true, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- true, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- true, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false, -- 0x1.00000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ true, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ true, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ true, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false, -+ 0x1.00000000000004p+0, false, false), - TEST ("1.0000000000000000277555756156289135105907917022705078125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- true, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- true, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- true, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false, -- 0x1.00000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ true, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ true, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ true, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false, -+ 0x1.00000000000002p+0, false, false), - TEST ("1.00000000000000001387778780781445675529539585113525390625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- true, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- true, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- true, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false, -- 0x1.00000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ true, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ true, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ true, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false, -+ 0x1.00000000000001p+0, false, false), - TEST ("1.000000000000000006938893903907228377647697925567626953125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- true, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- true, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- true, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false, -- 0x1.000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false, -+ 0x1.000000000000008p+0, false, false), - TEST ("1.0000000000000000034694469519536141888238489627838134765625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- true, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- true, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- true, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false, -- 0x1.000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ true, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ true, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ true, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false, -+ 0x1.000000000000004p+0, false, false), - TEST ("1.0000000000000000017347234759768070944119244813919067382812" - "5", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- true, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- true, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- true, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false, -- 0x1.000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false, -+ 0x1.000000000000002p+0, false, false), - TEST ("1.0000000000000000008673617379884035472059622406959533691406" - "25", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- true, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- true, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- true, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false, -- 0x1.000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ true, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ true, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ true, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false, -+ 0x1.000000000000001p+0, false, false), - TEST ("1.0000000000000000004336808689942017736029811203479766845703" - "125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- true, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- true, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- true, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false, -- 0x1.0000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false, -+ 0x1.0000000000000008p+0, false, false), - TEST ("1.0000000000000000002168404344971008868014905601739883422851" - "5625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- true, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- true, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- true, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false, -- 0x1.0000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ true, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ true, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ true, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false, -+ 0x1.0000000000000004p+0, false, false), - TEST ("1.0000000000000000001084202172485504434007452800869941711425" - "78125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- true, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false, -- 0x1.0000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ true, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ 0x1.0000000000000002p+0, false, false), - TEST ("1.0000000000000000000542101086242752217003726400434970855712" - "890625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000001p+0, false, -- 0x1.0000000000000001p+0, false, -- 0x1.0000000000000001p+0, false, -- 0x1.0000000000000001p+0, false, -- true, -- 0x1.0000000000000001p+0, false, -- 0x1.0000000000000001p+0, false, -- 0x1.0000000000000001p+0, false, -- 0x1.0000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000001p+0, false, false, -+ 0x1.0000000000000001p+0, false, false, -+ 0x1.0000000000000001p+0, false, false, -+ 0x1.0000000000000001p+0, false, false, -+ true, -+ 0x1.0000000000000001p+0, false, false, -+ 0x1.0000000000000001p+0, false, false, -+ 0x1.0000000000000001p+0, false, false, -+ 0x1.0000000000000001p+0, false, false), - TEST ("1.0000000000000000000271050543121376108501863200217485427856" - "4453125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000008p+0, false, -- 0x1.00000000000000008p+0, false, -- 0x1.00000000000000008p+0, false, -- 0x1.00000000000000008p+0, false, -- true, -- 0x1.00000000000000008p+0, false, -- 0x1.00000000000000008p+0, false, -- 0x1.00000000000000008p+0, false, -- 0x1.00000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000008p+0, false, false, -+ 0x1.00000000000000008p+0, false, false, -+ 0x1.00000000000000008p+0, false, false, -+ 0x1.00000000000000008p+0, false, false, -+ true, -+ 0x1.00000000000000008p+0, false, false, -+ 0x1.00000000000000008p+0, false, false, -+ 0x1.00000000000000008p+0, false, false, -+ 0x1.00000000000000008p+0, false, false), - TEST ("1.0000000000000000000135525271560688054250931600108742713928" - "22265625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000004p+0, false, -- 0x1.00000000000000004p+0, false, -- 0x1.00000000000000004p+0, false, -- 0x1.00000000000000004p+0, false, -- true, -- 0x1.00000000000000004p+0, false, -- 0x1.00000000000000004p+0, false, -- 0x1.00000000000000004p+0, false, -- 0x1.00000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000004p+0, false, false, -+ 0x1.00000000000000004p+0, false, false, -+ 0x1.00000000000000004p+0, false, false, -+ 0x1.00000000000000004p+0, false, false, -+ true, -+ 0x1.00000000000000004p+0, false, false, -+ 0x1.00000000000000004p+0, false, false, -+ 0x1.00000000000000004p+0, false, false, -+ 0x1.00000000000000004p+0, false, false), - TEST ("1.0000000000000000000067762635780344027125465800054371356964" - "111328125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000002p+0, false, -- 0x1.00000000000000002p+0, false, -- 0x1.00000000000000002p+0, false, -- 0x1.00000000000000002p+0, false, -- true, -- 0x1.00000000000000002p+0, false, -- 0x1.00000000000000002p+0, false, -- 0x1.00000000000000002p+0, false, -- 0x1.00000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000002p+0, false, false, -+ 0x1.00000000000000002p+0, false, false, -+ 0x1.00000000000000002p+0, false, false, -+ 0x1.00000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000002p+0, false, false, -+ 0x1.00000000000000002p+0, false, false, -+ 0x1.00000000000000002p+0, false, false, -+ 0x1.00000000000000002p+0, false, false), - TEST ("1.0000000000000000000033881317890172013562732900027185678482" - "0556640625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000001p+0, false, -- 0x1.00000000000000001p+0, false, -- 0x1.00000000000000001p+0, false, -- 0x1.00000000000000001p+0, false, -- true, -- 0x1.00000000000000001p+0, false, -- 0x1.00000000000000001p+0, false, -- 0x1.00000000000000001p+0, false, -- 0x1.00000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000001p+0, false, false, -+ 0x1.00000000000000001p+0, false, false, -+ 0x1.00000000000000001p+0, false, false, -+ 0x1.00000000000000001p+0, false, false, -+ true, -+ 0x1.00000000000000001p+0, false, false, -+ 0x1.00000000000000001p+0, false, false, -+ 0x1.00000000000000001p+0, false, false, -+ 0x1.00000000000000001p+0, false, false), - TEST ("1.0000000000000000000016940658945086006781366450013592839241" - "02783203125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000008p+0, false, -- 0x1.000000000000000008p+0, false, -- 0x1.000000000000000008p+0, false, -- 0x1.000000000000000008p+0, false, -- true, -- 0x1.000000000000000008p+0, false, -- 0x1.000000000000000008p+0, false, -- 0x1.000000000000000008p+0, false, -- 0x1.000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000008p+0, false, false, -+ 0x1.000000000000000008p+0, false, false, -+ 0x1.000000000000000008p+0, false, false, -+ 0x1.000000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000000008p+0, false, false, -+ 0x1.000000000000000008p+0, false, false, -+ 0x1.000000000000000008p+0, false, false, -+ 0x1.000000000000000008p+0, false, false), - TEST ("1.0000000000000000000008470329472543003390683225006796419620" - "513916015625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000004p+0, false, -- 0x1.000000000000000004p+0, false, -- 0x1.000000000000000004p+0, false, -- 0x1.000000000000000004p+0, false, -- true, -- 0x1.000000000000000004p+0, false, -- 0x1.000000000000000004p+0, false, -- 0x1.000000000000000004p+0, false, -- 0x1.000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000004p+0, false, false, -+ 0x1.000000000000000004p+0, false, false, -+ 0x1.000000000000000004p+0, false, false, -+ 0x1.000000000000000004p+0, false, false, -+ true, -+ 0x1.000000000000000004p+0, false, false, -+ 0x1.000000000000000004p+0, false, false, -+ 0x1.000000000000000004p+0, false, false, -+ 0x1.000000000000000004p+0, false, false), - TEST ("1.0000000000000000000004235164736271501695341612503398209810" - "2569580078125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000002p+0, false, -- 0x1.000000000000000002p+0, false, -- 0x1.000000000000000002p+0, false, -- 0x1.000000000000000002p+0, false, -- true, -- 0x1.000000000000000002p+0, false, -- 0x1.000000000000000002p+0, false, -- 0x1.000000000000000002p+0, false, -- 0x1.000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000002p+0, false, false, -+ 0x1.000000000000000002p+0, false, false, -+ 0x1.000000000000000002p+0, false, false, -+ 0x1.000000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000002p+0, false, false, -+ 0x1.000000000000000002p+0, false, false, -+ 0x1.000000000000000002p+0, false, false, -+ 0x1.000000000000000002p+0, false, false), - TEST ("1.0000000000000000000002117582368135750847670806251699104905" - "12847900390625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000001p+0, false, -- 0x1.000000000000000001p+0, false, -- 0x1.000000000000000001p+0, false, -- 0x1.000000000000000001p+0, false, -- true, -- 0x1.000000000000000001p+0, false, -- 0x1.000000000000000001p+0, false, -- 0x1.000000000000000001p+0, false, -- 0x1.000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000001p+0, false, false, -+ 0x1.000000000000000001p+0, false, false, -+ 0x1.000000000000000001p+0, false, false, -+ 0x1.000000000000000001p+0, false, false, -+ true, -+ 0x1.000000000000000001p+0, false, false, -+ 0x1.000000000000000001p+0, false, false, -+ 0x1.000000000000000001p+0, false, false, -+ 0x1.000000000000000001p+0, false, false), - TEST ("1.0000000000000000000001058791184067875423835403125849552452" - "564239501953125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000008p+0, false, -- 0x1.0000000000000000008p+0, false, -- 0x1.0000000000000000008p+0, false, -- 0x1.0000000000000000008p+0, false, -- true, -- 0x1.0000000000000000008p+0, false, -- 0x1.0000000000000000008p+0, false, -- 0x1.0000000000000000008p+0, false, -- 0x1.0000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000008p+0, false, false, -+ 0x1.0000000000000000008p+0, false, false, -+ 0x1.0000000000000000008p+0, false, false, -+ 0x1.0000000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000000008p+0, false, false, -+ 0x1.0000000000000000008p+0, false, false, -+ 0x1.0000000000000000008p+0, false, false, -+ 0x1.0000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000529395592033937711917701562924776226" - "2821197509765625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000004p+0, false, -- 0x1.0000000000000000004p+0, false, -- 0x1.0000000000000000004p+0, false, -- 0x1.0000000000000000004p+0, false, -- true, -- 0x1.0000000000000000004p+0, false, -- 0x1.0000000000000000004p+0, false, -- 0x1.0000000000000000004p+0, false, -- 0x1.0000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000004p+0, false, false, -+ 0x1.0000000000000000004p+0, false, false, -+ 0x1.0000000000000000004p+0, false, false, -+ 0x1.0000000000000000004p+0, false, false, -+ true, -+ 0x1.0000000000000000004p+0, false, false, -+ 0x1.0000000000000000004p+0, false, false, -+ 0x1.0000000000000000004p+0, false, false, -+ 0x1.0000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000264697796016968855958850781462388113" - "14105987548828125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000002p+0, false, -- 0x1.0000000000000000002p+0, false, -- 0x1.0000000000000000002p+0, false, -- 0x1.0000000000000000002p+0, false, -- true, -- 0x1.0000000000000000002p+0, false, -- 0x1.0000000000000000002p+0, false, -- 0x1.0000000000000000002p+0, false, -- 0x1.0000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000002p+0, false, false, -+ 0x1.0000000000000000002p+0, false, false, -+ 0x1.0000000000000000002p+0, false, false, -+ 0x1.0000000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000002p+0, false, false, -+ 0x1.0000000000000000002p+0, false, false, -+ 0x1.0000000000000000002p+0, false, false, -+ 0x1.0000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000132348898008484427979425390731194056" - "570529937744140625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000001p+0, false, -- 0x1.0000000000000000001p+0, false, -- 0x1.0000000000000000001p+0, false, -- 0x1.0000000000000000001p+0, false, -- true, -- 0x1.0000000000000000001p+0, false, -- 0x1.0000000000000000001p+0, false, -- 0x1.0000000000000000001p+0, false, -- 0x1.0000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000001p+0, false, false, -+ 0x1.0000000000000000001p+0, false, false, -+ 0x1.0000000000000000001p+0, false, false, -+ 0x1.0000000000000000001p+0, false, false, -+ true, -+ 0x1.0000000000000000001p+0, false, false, -+ 0x1.0000000000000000001p+0, false, false, -+ 0x1.0000000000000000001p+0, false, false, -+ 0x1.0000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000066174449004242213989712695365597028" - "2852649688720703125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000008p+0, false, -- 0x1.00000000000000000008p+0, false, -- 0x1.00000000000000000008p+0, false, -- 0x1.00000000000000000008p+0, false, -- true, -- 0x1.00000000000000000008p+0, false, -- 0x1.00000000000000000008p+0, false, -- 0x1.00000000000000000008p+0, false, -- 0x1.00000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000008p+0, false, false, -+ 0x1.00000000000000000008p+0, false, false, -+ 0x1.00000000000000000008p+0, false, false, -+ 0x1.00000000000000000008p+0, false, false, -+ true, -+ 0x1.00000000000000000008p+0, false, false, -+ 0x1.00000000000000000008p+0, false, false, -+ 0x1.00000000000000000008p+0, false, false, -+ 0x1.00000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000033087224502121106994856347682798514" - "14263248443603515625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000004p+0, false, -- 0x1.00000000000000000004p+0, false, -- 0x1.00000000000000000004p+0, false, -- 0x1.00000000000000000004p+0, false, -- true, -- 0x1.00000000000000000004p+0, false, -- 0x1.00000000000000000004p+0, false, -- 0x1.00000000000000000004p+0, false, -- 0x1.00000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000004p+0, false, false, -+ 0x1.00000000000000000004p+0, false, false, -+ 0x1.00000000000000000004p+0, false, false, -+ 0x1.00000000000000000004p+0, false, false, -+ true, -+ 0x1.00000000000000000004p+0, false, false, -+ 0x1.00000000000000000004p+0, false, false, -+ 0x1.00000000000000000004p+0, false, false, -+ 0x1.00000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000016543612251060553497428173841399257" - "071316242218017578125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000002p+0, false, -- 0x1.00000000000000000002p+0, false, -- 0x1.00000000000000000002p+0, false, -- 0x1.00000000000000000002p+0, false, -- true, -- 0x1.00000000000000000002p+0, false, -- 0x1.00000000000000000002p+0, false, -- 0x1.00000000000000000002p+0, false, -- 0x1.00000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000002p+0, false, false, -+ 0x1.00000000000000000002p+0, false, false, -+ 0x1.00000000000000000002p+0, false, false, -+ 0x1.00000000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000002p+0, false, false, -+ 0x1.00000000000000000002p+0, false, false, -+ 0x1.00000000000000000002p+0, false, false, -+ 0x1.00000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000008271806125530276748714086920699628" - "5356581211090087890625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000001p+0, false, -- 0x1.00000000000000000001p+0, false, -- 0x1.00000000000000000001p+0, false, -- 0x1.00000000000000000001p+0, false, -- true, -- 0x1.00000000000000000001p+0, false, -- 0x1.00000000000000000001p+0, false, -- 0x1.00000000000000000001p+0, false, -- 0x1.00000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000001p+0, false, false, -+ 0x1.00000000000000000001p+0, false, false, -+ 0x1.00000000000000000001p+0, false, false, -+ 0x1.00000000000000000001p+0, false, false, -+ true, -+ 0x1.00000000000000000001p+0, false, false, -+ 0x1.00000000000000000001p+0, false, false, -+ 0x1.00000000000000000001p+0, false, false, -+ 0x1.00000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000004135903062765138374357043460349814" - "26782906055450439453125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000008p+0, false, -- 0x1.000000000000000000008p+0, false, -- 0x1.000000000000000000008p+0, false, -- 0x1.000000000000000000008p+0, false, -- true, -- 0x1.000000000000000000008p+0, false, -- 0x1.000000000000000000008p+0, false, -- 0x1.000000000000000000008p+0, false, -- 0x1.000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000008p+0, false, false, -+ 0x1.000000000000000000008p+0, false, false, -+ 0x1.000000000000000000008p+0, false, false, -+ 0x1.000000000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000000000008p+0, false, false, -+ 0x1.000000000000000000008p+0, false, false, -+ 0x1.000000000000000000008p+0, false, false, -+ 0x1.000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000002067951531382569187178521730174907" - "133914530277252197265625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000004p+0, false, -- 0x1.000000000000000000004p+0, false, -- 0x1.000000000000000000004p+0, false, -- 0x1.000000000000000000004p+0, false, -- true, -- 0x1.000000000000000000004p+0, false, -- 0x1.000000000000000000004p+0, false, -- 0x1.000000000000000000004p+0, false, -- 0x1.000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000004p+0, false, false, -+ 0x1.000000000000000000004p+0, false, false, -+ 0x1.000000000000000000004p+0, false, false, -+ 0x1.000000000000000000004p+0, false, false, -+ true, -+ 0x1.000000000000000000004p+0, false, false, -+ 0x1.000000000000000000004p+0, false, false, -+ 0x1.000000000000000000004p+0, false, false, -+ 0x1.000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000001033975765691284593589260865087453" - "5669572651386260986328125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000002p+0, false, -- 0x1.000000000000000000002p+0, false, -- 0x1.000000000000000000002p+0, false, -- 0x1.000000000000000000002p+0, false, -- true, -- 0x1.000000000000000000002p+0, false, -- 0x1.000000000000000000002p+0, false, -- 0x1.000000000000000000002p+0, false, -- 0x1.000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000002p+0, false, false, -+ 0x1.000000000000000000002p+0, false, false, -+ 0x1.000000000000000000002p+0, false, false, -+ 0x1.000000000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000002p+0, false, false, -+ 0x1.000000000000000000002p+0, false, false, -+ 0x1.000000000000000000002p+0, false, false, -+ 0x1.000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000516987882845642296794630432543726" - "78347863256931304931640625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000001p+0, false, -- 0x1.000000000000000000001p+0, false, -- 0x1.000000000000000000001p+0, false, -- 0x1.000000000000000000001p+0, false, -- true, -- 0x1.000000000000000000001p+0, false, -- 0x1.000000000000000000001p+0, false, -- 0x1.000000000000000000001p+0, false, -- 0x1.000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000001p+0, false, false, -+ 0x1.000000000000000000001p+0, false, false, -+ 0x1.000000000000000000001p+0, false, false, -+ 0x1.000000000000000000001p+0, false, false, -+ true, -+ 0x1.000000000000000000001p+0, false, false, -+ 0x1.000000000000000000001p+0, false, false, -+ 0x1.000000000000000000001p+0, false, false, -+ 0x1.000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000258493941422821148397315216271863" - "391739316284656524658203125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000008p+0, false, -- 0x1.0000000000000000000008p+0, false, -- 0x1.0000000000000000000008p+0, false, -- 0x1.0000000000000000000008p+0, false, -- true, -- 0x1.0000000000000000000008p+0, false, -- 0x1.0000000000000000000008p+0, false, -- 0x1.0000000000000000000008p+0, false, -- 0x1.0000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000000129246970711410574198657608135931" - "6958696581423282623291015625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000004p+0, false, -- 0x1.0000000000000000000004p+0, false, -- 0x1.0000000000000000000004p+0, false, -- 0x1.0000000000000000000004p+0, false, -- true, -- 0x1.0000000000000000000004p+0, false, -- 0x1.0000000000000000000004p+0, false, -- 0x1.0000000000000000000004p+0, false, -- 0x1.0000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000004p+0, false, false, -+ true, -+ 0x1.0000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000000064623485355705287099328804067965" - "84793482907116413116455078125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000002p+0, false, -- 0x1.0000000000000000000002p+0, false, -- 0x1.0000000000000000000002p+0, false, -- 0x1.0000000000000000000002p+0, false, -- true, -- 0x1.0000000000000000000002p+0, false, -- 0x1.0000000000000000000002p+0, false, -- 0x1.0000000000000000000002p+0, false, -- 0x1.0000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000032311742677852643549664402033982" - "923967414535582065582275390625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000001p+0, false, -- 0x1.0000000000000000000001p+0, false, -- 0x1.0000000000000000000001p+0, false, -- 0x1.0000000000000000000001p+0, false, -- true, -- 0x1.0000000000000000000001p+0, false, -- 0x1.0000000000000000000001p+0, false, -- 0x1.0000000000000000000001p+0, false, -- 0x1.0000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000001p+0, false, false, -+ true, -+ 0x1.0000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000016155871338926321774832201016991" - "4619837072677910327911376953125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000008p+0, false, -- 0x1.00000000000000000000008p+0, false, -- 0x1.00000000000000000000008p+0, false, -- 0x1.00000000000000000000008p+0, false, -- true, -- 0x1.00000000000000000000008p+0, false, -- 0x1.00000000000000000000008p+0, false, -- 0x1.00000000000000000000008p+0, false, -- 0x1.00000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000008p+0, false, false, -+ true, -+ 0x1.00000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000000008077935669463160887416100508495" - "73099185363389551639556884765625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000004p+0, false, -- 0x1.00000000000000000000004p+0, false, -- 0x1.00000000000000000000004p+0, false, -- 0x1.00000000000000000000004p+0, false, -- true, -- 0x1.00000000000000000000004p+0, false, -- 0x1.00000000000000000000004p+0, false, -- 0x1.00000000000000000000004p+0, false, -- 0x1.00000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000004p+0, false, false, -+ true, -+ 0x1.00000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000000004038967834731580443708050254247" - "865495926816947758197784423828125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000002p+0, false, -- 0x1.00000000000000000000002p+0, false, -- 0x1.00000000000000000000002p+0, false, -- 0x1.00000000000000000000002p+0, false, -- true, -- 0x1.00000000000000000000002p+0, false, -- 0x1.00000000000000000000002p+0, false, -- 0x1.00000000000000000000002p+0, false, -- 0x1.00000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000002019483917365790221854025127123" - "9327479634084738790988922119140625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000001p+0, false, -- 0x1.00000000000000000000001p+0, false, -- 0x1.00000000000000000000001p+0, false, -- 0x1.00000000000000000000001p+0, false, -- true, -- 0x1.00000000000000000000001p+0, false, -- 0x1.00000000000000000000001p+0, false, -- 0x1.00000000000000000000001p+0, false, -- 0x1.00000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000001p+0, false, false, -+ true, -+ 0x1.00000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000001009741958682895110927012563561" - "96637398170423693954944610595703125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000000008p+0, false, -- 0x1.000000000000000000000008p+0, false, -- 0x1.000000000000000000000008p+0, false, -- 0x1.000000000000000000000008p+0, false, -- true, -- 0x1.000000000000000000000008p+0, false, -- 0x1.000000000000000000000008p+0, false, -- 0x1.000000000000000000000008p+0, false, -- 0x1.000000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000000000504870979341447555463506281780" - "983186990852118469774723052978515625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000000004p+0, false, -- 0x1.000000000000000000000004p+0, false, -- 0x1.000000000000000000000004p+0, false, -- 0x1.000000000000000000000004p+0, false, -- true, -- 0x1.000000000000000000000004p+0, false, -- 0x1.000000000000000000000004p+0, false, -- 0x1.000000000000000000000004p+0, false, -- 0x1.000000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000004p+0, false, false, -+ true, -+ 0x1.000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000000000252435489670723777731753140890" - "4915934954260592348873615264892578125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000000002p+0, false, -- 0x1.000000000000000000000002p+0, false, -- 0x1.000000000000000000000002p+0, false, -- 0x1.000000000000000000000002p+0, false, -- true, -- 0x1.000000000000000000000002p+0, false, -- 0x1.000000000000000000000002p+0, false, -- 0x1.000000000000000000000002p+0, false, -- 0x1.000000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000000126217744835361888865876570445" - "24579674771302961744368076324462890625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000000001p+0, false, -- 0x1.000000000000000000000001p+0, false, -- 0x1.000000000000000000000001p+0, false, -- 0x1.000000000000000000000001p+0, false, -- true, -- 0x1.000000000000000000000001p+0, false, -- 0x1.000000000000000000000001p+0, false, -- 0x1.000000000000000000000001p+0, false, -- 0x1.000000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000001p+0, false, false, -+ true, -+ 0x1.000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000000063108872417680944432938285222" - "622898373856514808721840381622314453125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000000008p+0, false, -- 0x1.0000000000000000000000008p+0, false, -- 0x1.0000000000000000000000008p+0, false, -- 0x1.0000000000000000000000008p+0, false, -- true, -- 0x1.0000000000000000000000008p+0, false, -- 0x1.0000000000000000000000008p+0, false, -- 0x1.0000000000000000000000008p+0, false, -- 0x1.0000000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000000000031554436208840472216469142611" - "3114491869282574043609201908111572265625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000000004p+0, false, -- 0x1.0000000000000000000000004p+0, false, -- 0x1.0000000000000000000000004p+0, false, -- 0x1.0000000000000000000000004p+0, false, -- true, -- 0x1.0000000000000000000000004p+0, false, -- 0x1.0000000000000000000000004p+0, false, -- 0x1.0000000000000000000000004p+0, false, -- 0x1.0000000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000004p+0, false, false, -+ true, -+ 0x1.0000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000000000015777218104420236108234571305" - "65572459346412870218046009540557861328125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000000002p+0, false, -- 0x1.0000000000000000000000002p+0, false, -- 0x1.0000000000000000000000002p+0, false, -- 0x1.0000000000000000000000002p+0, false, -- true, -- 0x1.0000000000000000000000002p+0, false, -- 0x1.0000000000000000000000002p+0, false, -- 0x1.0000000000000000000000002p+0, false, -- 0x1.0000000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000000007888609052210118054117285652" - "827862296732064351090230047702789306640625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.0000000000000000000000001p+0, false, -- 0x1.0000000000000000000000001p+0, false, -- 0x1.0000000000000000000000001p+0, false, -- 0x1.0000000000000000000000001p+0, false, -- true, -- 0x1.0000000000000000000000001p+0, false, -- 0x1.0000000000000000000000001p+0, false, -- 0x1.0000000000000000000000001p+0, false, -- 0x1.0000000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.0000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000001p+0, false, false, -+ true, -+ 0x1.0000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000000003944304526105059027058642826" - "4139311483660321755451150238513946533203125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000000008p+0, false, -- 0x1.00000000000000000000000008p+0, false, -- 0x1.00000000000000000000000008p+0, false, -- 0x1.00000000000000000000000008p+0, false, -- true, -- 0x1.00000000000000000000000008p+0, false, -- 0x1.00000000000000000000000008p+0, false, -- 0x1.00000000000000000000000008p+0, false, -- 0x1.00000000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000000008p+0, false, false, -+ true, -+ 0x1.00000000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000000008p+0, false, false, -+ 0x1.00000000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000000000001972152263052529513529321413" - "20696557418301608777255751192569732666015625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000000004p+0, false, -- 0x1.00000000000000000000000004p+0, false, -- 0x1.00000000000000000000000004p+0, false, -- 0x1.00000000000000000000000004p+0, false, -- true, -- 0x1.00000000000000000000000004p+0, false, -- 0x1.00000000000000000000000004p+0, false, -- 0x1.00000000000000000000000004p+0, false, -- 0x1.00000000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000000004p+0, false, false, -+ true, -+ 0x1.00000000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000000004p+0, false, false, -+ 0x1.00000000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000000000000986076131526264756764660706" - "603482787091508043886278755962848663330078125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000000002p+0, false, -- 0x1.00000000000000000000000002p+0, false, -- 0x1.00000000000000000000000002p+0, false, -- 0x1.00000000000000000000000002p+0, false, -- true, -- 0x1.00000000000000000000000002p+0, false, -- 0x1.00000000000000000000000002p+0, false, -- 0x1.00000000000000000000000002p+0, false, -- 0x1.00000000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000000002p+0, false, false, -+ 0x1.00000000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000000000493038065763132378382330353" - "3017413935457540219431393779814243316650390625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.00000000000000000000000001p+0, false, -- 0x1.00000000000000000000000001p+0, false, -- 0x1.00000000000000000000000001p+0, false, -- 0x1.00000000000000000000000001p+0, false, -- true, -- 0x1.00000000000000000000000001p+0, false, -- 0x1.00000000000000000000000001p+0, false, -- 0x1.00000000000000000000000001p+0, false, -- 0x1.00000000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.00000000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000000001p+0, false, false, -+ true, -+ 0x1.00000000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000000001p+0, false, false, -+ 0x1.00000000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000000000246519032881566189191165176" - "65087069677287701097156968899071216583251953125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- true, -- 0x1.000000000000000000000000008p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.000000000000000000000000008p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- 0x1.000000000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ true, -+ 0x1.000000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000000000000123259516440783094595582588" - "325435348386438505485784844495356082916259765625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.000000000000000000000000004p+0, false, -- 0x1.000000000000000000000000004p+0, false, -- 0x1.000000000000000000000000004p+0, false, -- 0x1.000000000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000000004p+0, false, false, -+ 0x1.000000000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000000000000061629758220391547297791294" - "1627176741932192527428924222476780414581298828125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.000000000000000000000000002p+0, false, -- 0x1.000000000000000000000000002p+0, false, -- 0x1.000000000000000000000000002p+0, false, -- 0x1.000000000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000000002p+0, false, false, -+ 0x1.000000000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000000000030814879110195773648895647" - "08135883709660962637144621112383902072906494140625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.000000000000000000000000001p+0, false, -- 0x1.000000000000000000000000001p+0, false, -- 0x1.000000000000000000000000001p+0, false, -- 0x1.000000000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.000000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000000001p+0, false, false, -+ 0x1.000000000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000000000015407439555097886824447823" - "540679418548304813185723105561919510364532470703125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.0000000000000000000000000008p+0, false, -- 0x1.0000000000000000000000000008p+0, false, -- 0x1.0000000000000000000000000008p+0, false, -- 0x1.0000000000000000000000000008p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000000008p+0, false, false, -+ 0x1.0000000000000000000000000008p+0, false, false), - TEST ("1.0000000000000000000000000000000007703719777548943412223911" - "7703397092741524065928615527809597551822662353515625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.0000000000000000000000000004p+0, false, -- 0x1.0000000000000000000000000004p+0, false, -- 0x1.0000000000000000000000000004p+0, false, -- 0x1.0000000000000000000000000004p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000000004p+0, false, false, -+ 0x1.0000000000000000000000000004p+0, false, false), - TEST ("1.0000000000000000000000000000000003851859888774471706111955" - "88516985463707620329643077639047987759113311767578125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.0000000000000000000000000002p+0, false, -- 0x1.0000000000000000000000000002p+0, false, -- 0x1.0000000000000000000000000002p+0, false, -- 0x1.0000000000000000000000000002p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000000002p+0, false, false, -+ 0x1.0000000000000000000000000002p+0, false, false), - TEST ("1.0000000000000000000000000000000001925929944387235853055977" - "942584927318538101648215388195239938795566558837890625", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- true, -- 0x1.0000000000000000000000000001p+0, false, -- 0x1.0000000000000000000000000001p+0, false, -- 0x1.0000000000000000000000000001p+0, false, -- 0x1.0000000000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ true, -+ 0x1.0000000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000000001p+0, false, false, -+ 0x1.0000000000000000000000000001p+0, false, false), - TEST ("1.0000000000000000000000000000000000962964972193617926527988" - "9712924636592690508241076940976199693977832794189453125", - false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000001p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000002p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.000000000000000000000000008p+0, false, -- false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1p+0, false, -- 0x1.0000000000000000000000000001p+0, false), -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000001p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000002p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.000000000000000000000000008p+0, false, false, -+ false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1p+0, false, false, -+ 0x1.0000000000000000000000000001p+0, false, false), - }; -diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c -index c3cc0201d4..be081ba416 100644 ---- a/stdlib/tst-strtod-round-skeleton.c -+++ b/stdlib/tst-strtod-round-skeleton.c -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - - #include "tst-strtod.h" - -@@ -139,16 +140,26 @@ - gen-tst-strtod-round utility to select the appropriately - rounded long double value for a given format. */ - #define TEST(s, \ -- fx, fd, fdo, fn, fno, fz, fzo, fu, fuo, \ -- dx, dd, ddo, dn, dno, dz, dzo, du, duo, \ -- ld64ix, ld64id, ld64ido, ld64in, ld64ino, \ -- ld64iz, ld64izo, ld64iu, ld64iuo, \ -- ld64mx, ld64md, ld64mdo, ld64mn, ld64mno, \ -- ld64mz, ld64mzo, ld64mu, ld64muo, \ -- ld106x, ld106d, ld106do, ld106n, ld106no, \ -- ld106z, ld106zo, ld106u, ld106uo, \ -- ld113x, ld113d, ld113do, ld113n, ld113no, \ -- ld113z, ld113zo, ld113u, ld113uo) \ -+ fx, fd, fdo, fdu, fn, fno, fnu, \ -+ fz, fzo, fzu, fu, fuo, fuu, \ -+ dx, dd, ddo, ddu, dn, dno, dnu, \ -+ dz, dzo, dzu, du, duo, duu, \ -+ ld64ix, ld64id, ld64ido, ld64idu, \ -+ ld64in, ld64ino, ld64inu, \ -+ ld64iz, ld64izo, ld64izu, \ -+ ld64iu, ld64iuo, ld64iuu, \ -+ ld64mx, ld64md, ld64mdo, ld64mdu, \ -+ ld64mn, ld64mno, ld64mnu, \ -+ ld64mz, ld64mzo, ld64mzu, \ -+ ld64mu, ld64muo, ld64muu, \ -+ ld106x, ld106d, ld106do, ld106du, \ -+ ld106n, ld106no, ld106nu, \ -+ ld106z, ld106zo, ld106zu, \ -+ ld106u, ld106uo, ld106uu, \ -+ ld113x, ld113d, ld113do, ld113du, \ -+ ld113n, ld113no, ld113nu, \ -+ ld113z, ld113zo, ld113zu, \ -+ ld113u, ld113uo, ld113uu) \ - { \ - L_ (s), \ - { XNTRY (fx, dx, ld64ix, ld64mx, ld106x, ld113x) }, \ -@@ -163,6 +174,12 @@ - { XNTRY (fdo, ddo, ld64ido, ld64mdo, ld106do, ld113do) }, \ - { XNTRY (fzo, dzo, ld64izo, ld64mzo, ld106zo, ld113zo) }, \ - { XNTRY (fuo, duo, ld64iuo, ld64muo, ld106uo, ld113uo) } \ -+ }, \ -+ { \ -+ { XNTRY (fnu, dnu, ld64inu, ld64mnu, ld106nu, ld113nu) }, \ -+ { XNTRY (fdu, ddu, ld64idu, ld64mdu, ld106du, ld113du) }, \ -+ { XNTRY (fzu, dzu, ld64izu, ld64mzu, ld106zu, ld113zu) }, \ -+ { XNTRY (fuu, duu, ld64iuu, ld64muu, ld106uu, ld113uu) } \ - } \ - } - -@@ -181,11 +198,17 @@ struct test_overflow - STRUCT_FOREACH_FLOAT_BOOL - }; - -+struct test_underflow -+ { -+ STRUCT_FOREACH_FLOAT_BOOL -+ }; -+ - struct test { - const CHAR *s; - struct test_exactness exact; - struct test_results r[4]; - struct test_overflow o[4]; -+ struct test_underflow u[4]; - }; - - /* Include the generated test data. */ -@@ -203,10 +226,14 @@ struct test { - # define FE_OVERFLOW 0 - #endif - -+#ifndef FE_UNDERFLOW -+# define FE_UNDERFLOW 0 -+#endif -+ - #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ - { \ - feclearexcept (FE_ALL_EXCEPT); \ -- errno = 0; \ -+ errno = 12345; \ - FTYPE f = STRTO (FSUF) (s, NULL); \ - int new_errno = errno; \ - if (f != expected->FSUF \ -@@ -265,6 +292,40 @@ struct test { - s, new_errno, ERANGE); \ - result = 1; \ - } \ -+ if (FE_UNDERFLOW != 0) \ -+ { \ -+ bool underflow_raised \ -+ = fetestexcept (FE_UNDERFLOW) != 0; \ -+ if (underflow_raised != underflow->FSUF) \ -+ { \ -+ printf (FNPFXS "to" #FSUF \ -+ " (" STRM ") underflow %d " \ -+ "not %d\n", s, underflow_raised, \ -+ underflow->FSUF); \ -+ if (EXCEPTION_TESTS (FTYPE)) \ -+ result = 1; \ -+ else \ -+ printf ("ignoring this exception error\n"); \ -+ } \ -+ } \ -+ if (underflow->FSUF && new_errno != ERANGE) \ -+ { \ -+ printf (FNPFXS "to" #FSUF \ -+ " (" STRM ") left errno == %d," \ -+ " not %d (ERANGE)\n", \ -+ s, new_errno, ERANGE); \ -+ result = 1; \ -+ } \ -+ if (!overflow->FSUF \ -+ && !underflow->FSUF \ -+ && new_errno != 12345) \ -+ { \ -+ printf (FNPFXS "to" #FSUF \ -+ " (" STRM ") set errno == %d," \ -+ " should be unchanged\n", \ -+ s, new_errno); \ -+ result = 1; \ -+ } \ - } \ - } - -@@ -272,6 +333,7 @@ static int - test_in_one_mode (const CHAR *s, const struct test_results *expected, - const struct test_exactness *exact, - const struct test_overflow *overflow, -+ const struct test_underflow *underflow, - const char *mode_name, int rnd_mode) - { - int result = 0; -@@ -307,6 +369,7 @@ do_test (void) - { - result |= test_in_one_mode (tests[i].s, &tests[i].r[modes[0].rnd_i], - &tests[i].exact, &tests[i].o[modes[0].rnd_i], -+ &tests[i].u[modes[0].rnd_i], - modes[0].mode_name, modes[0].rnd_mode); - for (const struct fetestmodes *m = &modes[1]; m->mode_name != NULL; m++) - { -@@ -314,7 +377,9 @@ do_test (void) - { - result |= test_in_one_mode (tests[i].s, &tests[i].r[m->rnd_i], - &tests[i].exact, -- &tests[i].o[m->rnd_i], m->mode_name, -+ &tests[i].o[m->rnd_i], -+ &tests[i].u[m->rnd_i], -+ m->mode_name, - m->rnd_mode); - fesetround (save_round_mode); - } - -commit d0c1792ad269566f877208ffda91c21dcd1a72e6 -Author: Joseph Myers -Date: Tue Aug 27 12:41:02 2024 +0000 - - Fix strtod subnormal rounding (bug 30220) - - As reported in bug 30220, the implementation of strtod-family - functions has a bug in the following case: the input string would, - with infinite exponent range, take one more bit to represent than is - available in the normal precision of the return type; the value - represented is in the subnormal range; and there are no nonzero bits - in the value, below those that can be represented in subnormal - precision, other than the least significant bit and possibly the - 0.5ulp bit. In this case, round_and_return ends up discarding the - least significant bit. - - Fix by saving that bit to merge into more_bits (it can't be merged in - at the time it's computed, because more_bits mustn't include this bit - in the case of after-rounding tininess detection checking if the - result is still subnormal when rounded to normal precision, so merging - this bit into more_bits needs to take place after that check). - - Tested for x86_64. - - (cherry picked from commit 457622c2fa8f9f7435822d5287a437bc8be8090d) - -diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c -index be515ce659..beb97b3d0c 100644 ---- a/stdlib/strtod_l.c -+++ b/stdlib/strtod_l.c -@@ -222,6 +222,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, - - mp_size_t shift = MIN_EXP - 1 - exponent; - bool is_tiny = true; -+ bool old_half_bit = (round_limb & (((mp_limb_t) 1) << round_bit)) != 0; - - more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0; - if (shift == MANT_DIG) -@@ -292,6 +293,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, - round_bit = shift - 1; - (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift); - } -+ more_bits |= old_half_bit; - /* This is a hook for the m68k long double format, where the - exponent bias is the same for normalized and denormalized - numbers. */ -diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data -index 84ab705709..9489fbcc9c 100644 ---- a/stdlib/tst-strtod-round-data -+++ b/stdlib/tst-strtod-round-data -@@ -265,3 +265,15 @@ - 1.000000000000000000000000000000000385185988877447170611195588516985463707620329643077639047987759113311767578125 - 1.0000000000000000000000000000000001925929944387235853055977942584927318538101648215388195239938795566558837890625 - 1.00000000000000000000000000000000009629649721936179265279889712924636592690508241076940976199693977832794189453125 -+0x30000002222225p-1077 -+0x0.7fffffffffffeap-1022 -+0x0.7fffffffffffe9p-1022 -+0x0.7ffffd4p-126 -+0x0.7ffffffffffffffd4p-16382 -+0x0.7ffffffffffffffd4p-16383 -+0x0.7ffffffffffffffffffffffffffeap-16382 -+0x0.7000004p-126 -+0x0.70000000000002p-1022 -+0x0.70000000000000004p-16382 -+0x0.70000000000000004p-16383 -+0x0.70000000000000000000000000002p-16382 -diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h -index 13e62dd2b0..ed50eb2537 100644 ---- a/stdlib/tst-strtod-round-data.h -+++ b/stdlib/tst-strtod-round-data.h -@@ -15437,4 +15437,376 @@ static const struct test tests[] = { - 0x1p+0, false, false, - 0x1p+0, false, false, - 0x1.0000000000000000000000000001p+0, false, false), -+ TEST ("0x30000002222225p-1077", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x1.800000111111p-1024, false, true, -+ 0x1.8000001111114p-1024, false, true, -+ 0x1.800000111111p-1024, false, true, -+ 0x1.8000001111114p-1024, false, true, -+ true, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ true, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ false, -+ 0x1.800000111111p-1024, false, true, -+ 0x1.8000001111114p-1024, false, true, -+ 0x1.800000111111p-1024, false, true, -+ 0x1.8000001111114p-1024, false, true, -+ true, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false, -+ 0x1.80000011111128p-1024, false, false), -+ TEST ("0x0.7fffffffffffeap-1022", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ true, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ true, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ false, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ true, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false, -+ 0x1.ffffffffffffa8p-1024, false, false), -+ TEST ("0x0.7fffffffffffe9p-1022", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ true, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ true, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ false, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ 0x1.ffffffffffff8p-1024, false, true, -+ 0x1.ffffffffffffcp-1024, false, true, -+ true, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false, -+ 0x1.ffffffffffffa4p-1024, false, false), -+ TEST ("0x0.7ffffd4p-126", -+ false, -+ 0x1.fffffp-128, false, true, -+ 0x1.fffff8p-128, false, true, -+ 0x1.fffffp-128, false, true, -+ 0x1.fffff8p-128, false, true, -+ true, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ true, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ true, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ true, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ true, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false, -+ 0x1.fffff5p-128, false, false), -+ TEST ("0x0.7ffffffffffffffd4p-16382", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.fffffffffffffffp-16384, false, true, -+ 0x1.fffffffffffffff8p-16384, false, true, -+ 0x1.fffffffffffffffp-16384, false, true, -+ 0x1.fffffffffffffff8p-16384, false, true, -+ false, -+ 0x1.fffffffffffffff4p-16384, false, true, -+ 0x1.fffffffffffffff4p-16384, false, true, -+ 0x1.fffffffffffffff4p-16384, false, true, -+ 0x1.fffffffffffffff8p-16384, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x1.fffffffffffffff5p-16384, false, false, -+ 0x1.fffffffffffffff5p-16384, false, false, -+ 0x1.fffffffffffffff5p-16384, false, false, -+ 0x1.fffffffffffffff5p-16384, false, false), -+ TEST ("0x0.7ffffffffffffffd4p-16383", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0xf.ffffffffffffff8p-16388, false, true, -+ 0xf.ffffffffffffff8p-16388, false, true, -+ 0xf.ffffffffffffff8p-16388, false, true, -+ 0x1p-16384, false, true, -+ false, -+ 0xf.ffffffffffffff8p-16388, false, true, -+ 0xf.ffffffffffffffcp-16388, false, true, -+ 0xf.ffffffffffffff8p-16388, false, true, -+ 0xf.ffffffffffffffcp-16388, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0xf.ffffffffffffffa8p-16388, false, false, -+ 0xf.ffffffffffffffa8p-16388, false, false, -+ 0xf.ffffffffffffffa8p-16388, false, false, -+ 0xf.ffffffffffffffa8p-16388, false, false), -+ TEST ("0x0.7ffffffffffffffffffffffffffeap-16382", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.fffffffffffffff8p-16384, false, true, -+ 0x2p-16384, false, true, -+ 0x1.fffffffffffffff8p-16384, false, true, -+ 0x2p-16384, false, true, -+ false, -+ 0x1.fffffffffffffffcp-16384, false, true, -+ 0x2p-16384, false, true, -+ 0x1.fffffffffffffffcp-16384, false, true, -+ 0x2p-16384, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true, -+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true, -+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true, -+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true), -+ TEST ("0x0.7000004p-126", -+ false, -+ 0x1.cp-128, false, true, -+ 0x1.cp-128, false, true, -+ 0x1.cp-128, false, true, -+ 0x1.c00008p-128, false, true, -+ true, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ true, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ true, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ true, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ true, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false, -+ 0x1.c00001p-128, false, false), -+ TEST ("0x0.70000000000002p-1022", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x1.cp-1024, false, true, -+ 0x1.cp-1024, false, true, -+ 0x1.cp-1024, false, true, -+ 0x1.c000000000004p-1024, false, true, -+ true, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ true, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ false, -+ 0x1.cp-1024, false, true, -+ 0x1.cp-1024, false, true, -+ 0x1.cp-1024, false, true, -+ 0x1.c000000000004p-1024, false, true, -+ true, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false, -+ 0x1.c0000000000008p-1024, false, false), -+ TEST ("0x0.70000000000000004p-16382", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.c000000000000008p-16384, false, true, -+ false, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.c000000000000004p-16384, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0x1.c000000000000001p-16384, false, false, -+ 0x1.c000000000000001p-16384, false, false, -+ 0x1.c000000000000001p-16384, false, false, -+ 0x1.c000000000000001p-16384, false, false), -+ TEST ("0x0.70000000000000004p-16383", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0xep-16388, false, true, -+ 0xep-16388, false, true, -+ 0xep-16388, false, true, -+ 0xe.000000000000008p-16388, false, true, -+ false, -+ 0xep-16388, false, true, -+ 0xep-16388, false, true, -+ 0xep-16388, false, true, -+ 0xe.000000000000004p-16388, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ true, -+ 0xe.0000000000000008p-16388, false, false, -+ 0xe.0000000000000008p-16388, false, false, -+ 0xe.0000000000000008p-16388, false, false, -+ 0xe.0000000000000008p-16388, false, false), -+ TEST ("0x0.70000000000000000000000000002p-16382", -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x8p-152, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.c000000000000008p-16384, false, true, -+ false, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.c000000000000004p-16384, false, true, -+ false, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x0p+0, false, true, -+ 0x4p-1076, false, true, -+ false, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.cp-16384, false, true, -+ 0x1.c000000000000000000000000004p-16384, false, true), - }; - -commit cac10d88c684c0171e549d813bfef7a31029f257 -Author: Joseph Myers -Date: Tue Aug 27 20:41:54 2024 +0000 - - Make __strtod_internal tests type-generic - - Some of the strtod tests use type-generic machinery in tst-strtod.h to - test the strto* functions for all floating types, while others only - test double even when the tests are in fact meaningful for all - floating types. - - Convert the tests of the internal __strtod_internal interface to cover - all floating types. I haven't tried to convert them to use newer test - interfaces in other ways, just made the changes necessary to use the - type-generic machinery. As an internal interface, there are no - aliases for different types with the same ABI (however, - __strtold_internal is defined even if long double has the same ABI as - double), so macros used by the type-generic testing code are redefined - as needed to avoid expecting such aliases to be present. - - Tested for x86_64. - - (cherry picked from commit 3fc063dee01da4f80920a14b7db637c8501d6fd4) - -diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c -index 9d6bb760fb..44ae0264f4 100644 ---- a/stdlib/tst-strtod1i.c -+++ b/stdlib/tst-strtod1i.c -@@ -25,60 +25,91 @@ - #include - #include - --/* Perform a few tests in a locale with thousands separators. */ --static int --do_test (void) --{ -- static const struct -- { -- const char *loc; -- const char *str; -- double exp; -- ptrdiff_t nread; -- } tests[] = -- { -- { "de_DE.UTF-8", "1,5", 1.5, 3 }, -- { "de_DE.UTF-8", "1.5", 1.0, 1 }, -- { "de_DE.UTF-8", "1.500", 1500.0, 5 }, -- { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 } -- }; --#define ntests (sizeof (tests) / sizeof (tests[0])) -- size_t n; -- int result = 0; -- -- puts ("\nLocale tests"); -+#include "tst-strtod.h" - -- for (n = 0; n < ntests; ++n) -- { -- double d; -- char *endp; -+/* This tests internal interfaces, which are only defined for types -+ with distinct ABIs, so disable testing for types without distinct -+ ABIs. */ -+#undef IF_FLOAT32 -+#define IF_FLOAT32(x) -+#undef IF_FLOAT64 -+#define IF_FLOAT64(x) -+#undef IF_FLOAT32X -+#define IF_FLOAT32X(x) -+#undef IF_FLOAT64X -+#define IF_FLOAT64X(x) -+#if !__HAVE_DISTINCT_FLOAT128 -+# undef IF_FLOAT128 -+# define IF_FLOAT128(x) -+#endif - -- if (setlocale (LC_ALL, tests[n].loc) == NULL) -- { -- printf ("cannot set locale %s\n", tests[n].loc); -- result = 1; -- continue; -- } -+#define ntests (sizeof (tests) / sizeof (tests[0])) - -- d = __strtod_internal (tests[n].str, &endp, 1); -- if (d != tests[n].exp) -- { -- printf ("strtod(\"%s\") returns %g and not %g\n", -- tests[n].str, d, tests[n].exp); -- result = 1; -- } -- else if (endp - tests[n].str != tests[n].nread) -- { -- printf ("strtod(\"%s\") read %td bytes and not %td\n", -- tests[n].str, endp - tests[n].str, tests[n].nread); -- result = 1; -- } -- } -+/* Perform a few tests in a locale with thousands separators. */ -+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+static int \ -+test_strto ## FSUF (void) \ -+{ \ -+ static const struct \ -+ { \ -+ const char *loc; \ -+ const char *str; \ -+ FTYPE exp; \ -+ ptrdiff_t nread; \ -+ } tests[] = \ -+ { \ -+ { "de_DE.UTF-8", "1,5", 1.5 ## LSUF, 3 }, \ -+ { "de_DE.UTF-8", "1.5", 1.0 ## LSUF, 1 }, \ -+ { "de_DE.UTF-8", "1.500", 1500.0 ## LSUF, 5 }, \ -+ { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65 ## LSUF, 26 } \ -+ }; \ -+ size_t n; \ -+ int result = 0; \ -+ \ -+ puts ("\nLocale tests"); \ -+ \ -+ for (n = 0; n < ntests; ++n) \ -+ { \ -+ FTYPE d; \ -+ char *endp; \ -+ \ -+ if (setlocale (LC_ALL, tests[n].loc) == NULL) \ -+ { \ -+ printf ("cannot set locale %s\n", tests[n].loc); \ -+ result = 1; \ -+ continue; \ -+ } \ -+ \ -+ d = __strto ## FSUF ## _internal (tests[n].str, &endp, 1); \ -+ if (d != tests[n].exp) \ -+ { \ -+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ -+ FTOSTR (buf1, sizeof (buf1), "%g", d); \ -+ FTOSTR (buf2, sizeof (buf2), "%g", tests[n].exp); \ -+ printf ("strto" # FSUF "(\"%s\") returns %s and not %s\n", \ -+ tests[n].str, buf1, buf2); \ -+ result = 1; \ -+ } \ -+ else if (endp - tests[n].str != tests[n].nread) \ -+ { \ -+ printf ("strto" # FSUF "(\"%s\") read %td bytes and not %td\n", \ -+ tests[n].str, endp - tests[n].str, tests[n].nread); \ -+ result = 1; \ -+ } \ -+ } \ -+ \ -+ if (result == 0) \ -+ puts ("all OK"); \ -+ \ -+ return result ? EXIT_FAILURE : EXIT_SUCCESS; \ -+} - -- if (result == 0) -- puts ("all OK"); -+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) - -- return result ? EXIT_FAILURE : EXIT_SUCCESS; -+static int -+do_test (void) -+{ -+ return STRTOD_TEST_FOREACH (test_strto); - } - - #include -diff --git a/stdlib/tst-strtod3.c b/stdlib/tst-strtod3.c -index 23abec1896..0d662d8be8 100644 ---- a/stdlib/tst-strtod3.c -+++ b/stdlib/tst-strtod3.c -@@ -3,19 +3,73 @@ - #include - #include - --static const struct --{ -- const char *in; -- const char *out; -- double expected; --} tests[] = -- { -- { "000,,,e1", ",,,e1", 0.0 }, -- { "000e1", "", 0.0 }, -- { "000,1e1", ",1e1", 0.0 } -- }; --#define NTESTS (sizeof (tests) / sizeof (tests[0])) -+#include "tst-strtod.h" -+ -+/* This tests internal interfaces, which are only defined for types -+ with distinct ABIs, so disable testing for types without distinct -+ ABIs. */ -+#undef IF_FLOAT32 -+#define IF_FLOAT32(x) -+#undef IF_FLOAT64 -+#define IF_FLOAT64(x) -+#undef IF_FLOAT32X -+#define IF_FLOAT32X(x) -+#undef IF_FLOAT64X -+#define IF_FLOAT64X(x) -+#if !__HAVE_DISTINCT_FLOAT128 -+# undef IF_FLOAT128 -+# define IF_FLOAT128(x) -+#endif - -+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+static const struct \ -+{ \ -+ const char *in; \ -+ const char *out; \ -+ FTYPE expected; \ -+} tests_strto ## FSUF[] = \ -+ { \ -+ { "000,,,e1", ",,,e1", 0.0 ## LSUF }, \ -+ { "000e1", "", 0.0 ## LSUF }, \ -+ { "000,1e1", ",1e1", 0.0 ## LSUF } \ -+ }; \ -+ \ -+static int \ -+test_strto ## FSUF (void) \ -+{ \ -+ int status = 0; \ -+ \ -+ for (int i = 0; \ -+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ -+ ++i) \ -+ { \ -+ char *ep; \ -+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ -+ &ep, 1); \ -+ \ -+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \ -+ { \ -+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \ -+ i, ep, tests_strto ## FSUF[i].out); \ -+ status = 1; \ -+ } \ -+ \ -+ if (r != tests_strto ## FSUF[i].expected) \ -+ { \ -+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ -+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ -+ FTOSTR (buf2, sizeof (buf2), "%g", \ -+ tests_strto ## FSUF[i].expected); \ -+ printf ("%d: got wrong results %s, expected %s\n", \ -+ i, buf1, buf2); \ -+ status = 1; \ -+ } \ -+ } \ -+ \ -+ return status; \ -+} -+ -+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) - - static int - do_test (void) -@@ -26,29 +80,7 @@ do_test (void) - return 1; - } - -- int status = 0; -- -- for (int i = 0; i < NTESTS; ++i) -- { -- char *ep; -- double r = __strtod_internal (tests[i].in, &ep, 1); -- -- if (strcmp (ep, tests[i].out) != 0) -- { -- printf ("%d: got rest string \"%s\", expected \"%s\"\n", -- i, ep, tests[i].out); -- status = 1; -- } -- -- if (r != tests[i].expected) -- { -- printf ("%d: got wrong results %g, expected %g\n", -- i, r, tests[i].expected); -- status = 1; -- } -- } -- -- return status; -+ return STRTOD_TEST_FOREACH (test_strto); - } - - #define TEST_FUNCTION do_test () -diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c -index 6cc4e843c7..dfd3f05027 100644 ---- a/stdlib/tst-strtod4.c -+++ b/stdlib/tst-strtod4.c -@@ -3,22 +3,76 @@ - #include - #include - -+#include "tst-strtod.h" -+ -+/* This tests internal interfaces, which are only defined for types -+ with distinct ABIs, so disable testing for types without distinct -+ ABIs. */ -+#undef IF_FLOAT32 -+#define IF_FLOAT32(x) -+#undef IF_FLOAT64 -+#define IF_FLOAT64(x) -+#undef IF_FLOAT32X -+#define IF_FLOAT32X(x) -+#undef IF_FLOAT64X -+#define IF_FLOAT64X(x) -+#if !__HAVE_DISTINCT_FLOAT128 -+# undef IF_FLOAT128 -+# define IF_FLOAT128(x) -+#endif -+ - #define NNBSP "\xe2\x80\xaf" - --static const struct --{ -- const char *in; -- const char *out; -- double expected; --} tests[] = -- { -- { "000"NNBSP"000"NNBSP"000", "", 0.0 }, -- { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 }, -- /* Bug 30964 */ -- { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 } -- }; --#define NTESTS (sizeof (tests) / sizeof (tests[0])) -+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+static const struct \ -+{ \ -+ const char *in; \ -+ const char *out; \ -+ FTYPE expected; \ -+} tests_strto ## FSUF[] = \ -+ { \ -+ { "000"NNBSP"000"NNBSP"000", "", 0.0 ## LSUF }, \ -+ { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 ## LSUF }, \ -+ /* Bug 30964 */ \ -+ { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 ## LSUF } \ -+ }; \ -+ \ -+static int \ -+test_strto ## FSUF (void) \ -+{ \ -+ int status = 0; \ -+ \ -+ for (int i = 0; \ -+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ -+ ++i) \ -+ { \ -+ char *ep; \ -+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ -+ &ep, 1); \ -+ \ -+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \ -+ { \ -+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \ -+ i, ep, tests_strto ## FSUF[i].out); \ -+ status = 1; \ -+ } \ -+ \ -+ if (r != tests_strto ## FSUF[i].expected) \ -+ { \ -+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ -+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ -+ FTOSTR (buf2, sizeof (buf2), "%g", \ -+ tests_strto ## FSUF[i].expected); \ -+ printf ("%d: got wrong results %s, expected %s\n", \ -+ i, buf1, buf2); \ -+ status = 1; \ -+ } \ -+ } \ -+ \ -+ return status; \ -+} - -+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) - - static int - do_test (void) -@@ -29,29 +83,7 @@ do_test (void) - return 1; - } - -- int status = 0; -- -- for (int i = 0; i < NTESTS; ++i) -- { -- char *ep; -- double r = __strtod_internal (tests[i].in, &ep, 1); -- -- if (strcmp (ep, tests[i].out) != 0) -- { -- printf ("%d: got rest string \"%s\", expected \"%s\"\n", -- i, ep, tests[i].out); -- status = 1; -- } -- -- if (r != tests[i].expected) -- { -- printf ("%d: got wrong results %g, expected %g\n", -- i, r, tests[i].expected); -- status = 1; -- } -- } -- -- return status; -+ return STRTOD_TEST_FOREACH (test_strto); - } - - #define TEST_FUNCTION do_test () -diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c -index ee54e3404c..136aedea68 100644 ---- a/stdlib/tst-strtod5i.c -+++ b/stdlib/tst-strtod5i.c -@@ -16,52 +16,112 @@ - License along with the GNU C Library; if not, see - . */ - -+/* Defining _LIBC_TEST ensures long double math functions are -+ declared in the headers. */ -+#define _LIBC_TEST 1 - #include - #include - #include - #include - #include - -+#include "tst-strtod.h" -+ -+/* This tests internal interfaces, which are only defined for types -+ with distinct ABIs, so disable testing for types without distinct -+ ABIs. */ -+#undef IF_FLOAT32 -+#define IF_FLOAT32(x) -+#undef IF_FLOAT64 -+#define IF_FLOAT64(x) -+#undef IF_FLOAT32X -+#define IF_FLOAT32X(x) -+#undef IF_FLOAT64X -+#define IF_FLOAT64X(x) -+#if !__HAVE_DISTINCT_FLOAT128 -+# undef IF_FLOAT128 -+# define IF_FLOAT128(x) -+#endif -+ - #define NNBSP "\xe2\x80\xaf" - --static const struct --{ -- const char *in; -- int group; -- double expected; --} tests[] = -- { -- { "0", 0, 0.0 }, -- { "000", 0, 0.0 }, -- { "-0", 0, -0.0 }, -- { "-000", 0, -0.0 }, -- { "0,", 0, 0.0 }, -- { "-0,", 0, -0.0 }, -- { "0,0", 0, 0.0 }, -- { "-0,0", 0, -0.0 }, -- { "0e-10", 0, 0.0 }, -- { "-0e-10", 0, -0.0 }, -- { "0,e-10", 0, 0.0 }, -- { "-0,e-10", 0, -0.0 }, -- { "0,0e-10", 0, 0.0 }, -- { "-0,0e-10", 0, -0.0 }, -- { "0e-1000000", 0, 0.0 }, -- { "-0e-1000000", 0, -0.0 }, -- { "0,0e-1000000", 0, 0.0 }, -- { "-0,0e-1000000", 0, -0.0 }, -- { "0", 1, 0.0 }, -- { "000", 1, 0.0 }, -- { "-0", 1, -0.0 }, -- { "-000", 1, -0.0 }, -- { "0e-10", 1, 0.0 }, -- { "-0e-10", 1, -0.0 }, -- { "0e-1000000", 1, 0.0 }, -- { "-0e-1000000", 1, -0.0 }, -- { "000"NNBSP"000"NNBSP"000", 1, 0.0 }, -- { "-000"NNBSP"000"NNBSP"000", 1, -0.0 } -- }; --#define NTESTS (sizeof (tests) / sizeof (tests[0])) -+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+static const struct \ -+{ \ -+ const char *in; \ -+ int group; \ -+ FTYPE expected; \ -+} tests_strto ## FSUF[] = \ -+ { \ -+ { "0", 0, 0.0 ## LSUF }, \ -+ { "000", 0, 0.0 ## LSUF }, \ -+ { "-0", 0, -0.0 ## LSUF }, \ -+ { "-000", 0, -0.0 ## LSUF }, \ -+ { "0,", 0, 0.0 ## LSUF }, \ -+ { "-0,", 0, -0.0 ## LSUF }, \ -+ { "0,0", 0, 0.0 ## LSUF }, \ -+ { "-0,0", 0, -0.0 ## LSUF }, \ -+ { "0e-10", 0, 0.0 ## LSUF }, \ -+ { "-0e-10", 0, -0.0 ## LSUF }, \ -+ { "0,e-10", 0, 0.0 ## LSUF }, \ -+ { "-0,e-10", 0, -0.0 ## LSUF }, \ -+ { "0,0e-10", 0, 0.0 ## LSUF }, \ -+ { "-0,0e-10", 0, -0.0 ## LSUF }, \ -+ { "0e-1000000", 0, 0.0 ## LSUF }, \ -+ { "-0e-1000000", 0, -0.0 ## LSUF }, \ -+ { "0,0e-1000000", 0, 0.0 ## LSUF }, \ -+ { "-0,0e-1000000", 0, -0.0 ## LSUF }, \ -+ { "0", 1, 0.0 ## LSUF }, \ -+ { "000", 1, 0.0 ## LSUF }, \ -+ { "-0", 1, -0.0 ## LSUF }, \ -+ { "-000", 1, -0.0 ## LSUF }, \ -+ { "0e-10", 1, 0.0 ## LSUF }, \ -+ { "-0e-10", 1, -0.0 ## LSUF }, \ -+ { "0e-1000000", 1, 0.0 ## LSUF }, \ -+ { "-0e-1000000", 1, -0.0 ## LSUF }, \ -+ { "000"NNBSP"000"NNBSP"000", 1, 0.0 ## LSUF }, \ -+ { "-000"NNBSP"000"NNBSP"000", 1, -0.0 ## LSUF } \ -+ }; \ -+ \ -+static int \ -+test_strto ## FSUF (void) \ -+{ \ -+ int status = 0; \ -+ \ -+ for (int i = 0; \ -+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ -+ ++i) \ -+ { \ -+ char *ep; \ -+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ -+ &ep, \ -+ tests_strto ## FSUF[i].group); \ -+ \ -+ if (*ep != '\0') \ -+ { \ -+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \ -+ status = 1; \ -+ } \ -+ \ -+ if (r != tests_strto ## FSUF[i].expected \ -+ || (copysign ## CSUF (10.0 ## LSUF, r) \ -+ != copysign ## CSUF (10.0 ## LSUF, \ -+ tests_strto ## FSUF[i].expected))) \ -+ { \ -+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ -+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ -+ FTOSTR (buf2, sizeof (buf2), "%g", \ -+ tests_strto ## FSUF[i].expected); \ -+ printf ("%d: got wrong results %s, expected %s\n", \ -+ i, buf1, buf2); \ -+ status = 1; \ -+ } \ -+ } \ -+ \ -+ return status; \ -+} - -+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) - - static int - do_test (void) -@@ -72,29 +132,7 @@ do_test (void) - return 1; - } - -- int status = 0; -- -- for (int i = 0; i < NTESTS; ++i) -- { -- char *ep; -- double r = __strtod_internal (tests[i].in, &ep, tests[i].group); -- -- if (*ep != '\0') -- { -- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); -- status = 1; -- } -- -- if (r != tests[i].expected -- || copysign (10.0, r) != copysign (10.0, tests[i].expected)) -- { -- printf ("%d: got wrong results %g, expected %g\n", -- i, r, tests[i].expected); -- status = 1; -- } -- } -- -- return status; -+ return STRTOD_TEST_FOREACH (test_strto); - } - - #include - -commit ad93c2047d791044d45e8f65070d821b0b918993 -Author: Joseph Myers -Date: Wed Sep 4 13:20:18 2024 +0000 - - Improve NaN payload testing - - There are two separate sets of tests of NaN payloads in glibc: - - * libm-test-{get,set}payload* verify that getpayload, setpayload, - setpayloadsig and __builtin_nan functions are consistent in their - payload handling. - - * test-nan-payload verifies that strtod-family functions and the - not-built-in nan functions are consistent in their payload handling. - - Nothing, however, connects the two sets of functions (i.e., verifies - that strtod / nan are consistent with getpayload / setpayload / - __builtin_nan). - - Improve test-nan-payload to check actual payload value with getpayload - rather than just verifying that the strtod and nan functions produce - the same NaN. Also check that the NaNs produced aren't signaling and - extend the tests to cover _FloatN / _FloatNx. - - Tested for x86_64. - - (cherry picked from commit be77d5ae417236883c02d3d67c0716e3f669fa41) - -diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c -index 4a81dc348b..55c13de14e 100644 ---- a/math/test-nan-payload.c -+++ b/math/test-nan-payload.c -@@ -16,6 +16,8 @@ - License along with the GNU C Library; if not, see - . */ - -+#define _LIBC_TEST 1 -+#define __STDC_WANT_IEC_60559_TYPES_EXT__ - #include - #include - #include -@@ -31,7 +33,7 @@ - #define CHECK_IS_NAN(TYPE, A) \ - do \ - { \ -- if (isnan (A)) \ -+ if (isnan (A) && !issignaling (A)) \ - puts ("PASS: " #TYPE " " #A); \ - else \ - { \ -@@ -41,6 +43,19 @@ - } \ - while (0) - -+#define CHECK_PAYLOAD(TYPE, FUNC, A, P) \ -+ do \ -+ { \ -+ if (FUNC (&(A)) == (P)) \ -+ puts ("PASS: " #TYPE " payload " #A); \ -+ else \ -+ { \ -+ puts ("FAIL: " #TYPE " payload " #A); \ -+ result = 1; \ -+ } \ -+ } \ -+ while (0) -+ - #define CHECK_SAME_NAN(TYPE, A, B) \ - do \ - { \ -@@ -71,7 +86,7 @@ - bits. */ - #define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106) - --#define RUN_TESTS(TYPE, SFUNC, FUNC, MANT_DIG) \ -+#define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \ - do \ - { \ - TYPE n123 = WRAP_NAN (FUNC, "123"); \ -@@ -82,6 +97,10 @@ - CHECK_IS_NAN (TYPE, n456); \ - TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \ - CHECK_IS_NAN (TYPE, s456); \ -+ TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \ -+ CHECK_IS_NAN (TYPE, nh123); \ -+ TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \ -+ CHECK_IS_NAN (TYPE, sh123); \ - TYPE n123x = WRAP_NAN (FUNC, "123)"); \ - CHECK_IS_NAN (TYPE, n123x); \ - TYPE nemp = WRAP_NAN (FUNC, ""); \ -@@ -92,8 +111,16 @@ - CHECK_IS_NAN (TYPE, sx); \ - if (CAN_TEST_EQ (MANT_DIG)) \ - CHECK_SAME_NAN (TYPE, n123, s123); \ -+ CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \ -+ CHECK_PAYLOAD (TYPE, PLFUNC, s123, 123); \ - if (CAN_TEST_EQ (MANT_DIG)) \ - CHECK_SAME_NAN (TYPE, n456, s456); \ -+ CHECK_PAYLOAD (TYPE, PLFUNC, n456, 456); \ -+ CHECK_PAYLOAD (TYPE, PLFUNC, s456, 456); \ -+ if (CAN_TEST_EQ (MANT_DIG)) \ -+ CHECK_SAME_NAN (TYPE, nh123, sh123); \ -+ CHECK_PAYLOAD (TYPE, PLFUNC, nh123, 0x123); \ -+ CHECK_PAYLOAD (TYPE, PLFUNC, sh123, 0x123); \ - if (CAN_TEST_EQ (MANT_DIG)) \ - CHECK_SAME_NAN (TYPE, nemp, semp); \ - if (CAN_TEST_EQ (MANT_DIG)) \ -@@ -110,9 +137,31 @@ static int - do_test (void) - { - int result = 0; -- RUN_TESTS (float, strtof, nanf, FLT_MANT_DIG); -- RUN_TESTS (double, strtod, nan, DBL_MANT_DIG); -- RUN_TESTS (long double, strtold, nanl, LDBL_MANT_DIG); -+ RUN_TESTS (float, strtof, nanf, getpayloadf, FLT_MANT_DIG); -+ RUN_TESTS (double, strtod, nan, getpayload, DBL_MANT_DIG); -+ RUN_TESTS (long double, strtold, nanl, getpayloadl, LDBL_MANT_DIG); -+#if __HAVE_FLOAT16 -+ RUN_TESTS (_Float16, strtof16, nanf16, getpayloadf16, FLT16_MANT_DIG); -+#endif -+#if __HAVE_FLOAT32 -+ RUN_TESTS (_Float32, strtof32, nanf32, getpayloadf32, FLT32_MANT_DIG); -+#endif -+#if __HAVE_FLOAT64 -+ RUN_TESTS (_Float64, strtof64, nanf64, getpayloadf64, FLT64_MANT_DIG); -+#endif -+#if __HAVE_FLOAT128 -+ RUN_TESTS (_Float128, strtof128, nanf128, getpayloadf128, FLT128_MANT_DIG); -+#endif -+#if __HAVE_FLOAT32X -+ RUN_TESTS (_Float32x, strtof32x, nanf32x, getpayloadf32x, FLT32X_MANT_DIG); -+#endif -+#if __HAVE_FLOAT64X -+ RUN_TESTS (_Float64x, strtof64x, nanf64x, getpayloadf64x, FLT64X_MANT_DIG); -+#endif -+#if __HAVE_FLOAT128X -+ RUN_TESTS (_Float128x, strtof128x, nanf128x, getpayloadf128x, -+ FLT128X_MANT_DIG); -+#endif - return result; - } - - -commit c4cc72d2efc741872d65ae1fd77572e47042d179 -Author: Joseph Myers -Date: Wed Sep 4 13:21:23 2024 +0000 - - Do not set errno for overflowing NaN payload in strtod/nan (bug 32045) - - As reported in bug 32045, it's incorrect for strtod/nan functions to - set errno based on overflowing payload (strtod should only set errno - for overflow / underflow of its actual result, and potentially if - nothing in the string can be parsed as a number at all; nan should be - a pure function that never sets it). Save and restore errno around - the internal strtoull call and add associated test coverage. - - Tested for x86_64. - - (cherry picked from commit 64f62c47e9c350f353336f2df6714e1d48ec50d8) - -diff --git a/math/Makefile b/math/Makefile -index f06d370383..b64c3eedd5 100644 ---- a/math/Makefile -+++ b/math/Makefile -@@ -1077,6 +1077,7 @@ CFLAGS-test-flt-eval-method.c += -fexcess-precision=standard - CFLAGS-test-fe-snans-always-signal.c += $(config-cflags-signaling-nans) - - CFLAGS-test-nan-const.c += -fno-builtin -+CFLAGS-test-nan-payload.c += -fno-builtin - - CFLAGS-test-ceil-except-2.c += -fno-builtin - CFLAGS-test-floor-except-2.c += -fno-builtin -diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c -index 55c13de14e..413791e09f 100644 ---- a/math/test-nan-payload.c -+++ b/math/test-nan-payload.c -@@ -18,6 +18,7 @@ - - #define _LIBC_TEST 1 - #define __STDC_WANT_IEC_60559_TYPES_EXT__ -+#include - #include - #include - #include -@@ -82,6 +83,26 @@ - } \ - while (0) - -+#define CLEAR_ERRNO \ -+ do \ -+ { \ -+ errno = 12345; \ -+ } \ -+ while (0) -+ -+#define CHECK_ERRNO(TYPE, A) \ -+ do \ -+ { \ -+ if (errno == 12345) \ -+ puts ("PASS: " #TYPE " " #A " errno"); \ -+ else \ -+ { \ -+ puts ("FAIL: " #TYPE " " #A " errno"); \ -+ result = 1; \ -+ } \ -+ } \ -+ while (0) -+ - /* Cannot test payloads by memcmp for formats where NaNs have padding - bits. */ - #define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106) -@@ -89,26 +110,58 @@ - #define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \ - do \ - { \ -+ CLEAR_ERRNO; \ - TYPE n123 = WRAP_NAN (FUNC, "123"); \ -+ CHECK_ERRNO (TYPE, n123); \ - CHECK_IS_NAN (TYPE, n123); \ -+ CLEAR_ERRNO; \ - TYPE s123 = WRAP_STRTO (SFUNC, "NAN(123)"); \ -+ CHECK_ERRNO (TYPE, s123); \ - CHECK_IS_NAN (TYPE, s123); \ -+ CLEAR_ERRNO; \ - TYPE n456 = WRAP_NAN (FUNC, "456"); \ -+ CHECK_ERRNO (TYPE, n456); \ - CHECK_IS_NAN (TYPE, n456); \ -+ CLEAR_ERRNO; \ - TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \ -+ CHECK_ERRNO (TYPE, s456); \ - CHECK_IS_NAN (TYPE, s456); \ -+ CLEAR_ERRNO; \ - TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \ -+ CHECK_ERRNO (TYPE, nh123); \ - CHECK_IS_NAN (TYPE, nh123); \ -+ CLEAR_ERRNO; \ - TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \ -+ CHECK_ERRNO (TYPE, sh123); \ - CHECK_IS_NAN (TYPE, sh123); \ -+ CLEAR_ERRNO; \ - TYPE n123x = WRAP_NAN (FUNC, "123)"); \ -+ CHECK_ERRNO (TYPE, n123x); \ - CHECK_IS_NAN (TYPE, n123x); \ -+ CLEAR_ERRNO; \ - TYPE nemp = WRAP_NAN (FUNC, ""); \ -+ CHECK_ERRNO (TYPE, nemp); \ - CHECK_IS_NAN (TYPE, nemp); \ -+ CLEAR_ERRNO; \ - TYPE semp = WRAP_STRTO (SFUNC, "NAN()"); \ -+ CHECK_ERRNO (TYPE, semp); \ - CHECK_IS_NAN (TYPE, semp); \ -+ CLEAR_ERRNO; \ - TYPE sx = WRAP_STRTO (SFUNC, "NAN"); \ -+ CHECK_ERRNO (TYPE, sx); \ - CHECK_IS_NAN (TYPE, sx); \ -+ CLEAR_ERRNO; \ -+ TYPE novf = WRAP_NAN (FUNC, "9999999999" \ -+ "99999999999999999999" \ -+ "9999999999"); \ -+ CHECK_ERRNO (TYPE, novf); \ -+ CHECK_IS_NAN (TYPE, novf); \ -+ CLEAR_ERRNO; \ -+ TYPE sovf = WRAP_STRTO (SFUNC, "NAN(9999999999" \ -+ "99999999999999999999" \ -+ "9999999999)"); \ -+ CHECK_ERRNO (TYPE, sovf); \ -+ CHECK_IS_NAN (TYPE, sovf); \ - if (CAN_TEST_EQ (MANT_DIG)) \ - CHECK_SAME_NAN (TYPE, n123, s123); \ - CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \ -diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c -index 4cb286d2b3..39fb7e9f75 100644 ---- a/stdlib/strtod_nan_main.c -+++ b/stdlib/strtod_nan_main.c -@@ -16,6 +16,7 @@ - License along with the GNU C Library; if not, see - . */ - -+#include - #include - #include - #include -@@ -50,7 +51,9 @@ STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc) - STRING_TYPE *endp; - unsigned long long int mant; - -+ int save_errno = errno; - mant = STRTOULL (str, &endp, 0); -+ __set_errno (save_errno); - if (endp == cp) - SET_NAN_PAYLOAD (retval, mant); - - -commit 5a10d05c39689dcf7ee694ec94cd2fd069c747ee -Author: Florian Weimer -Date: Thu Sep 5 21:18:23 2024 +0200 - - powerpc64le: Build new strtod tests with long double ABI flags (bug 32145) - - This fixes several test failures: - - =====FAIL: stdlib/tst-strtod1i.out===== - Locale tests - all OK - Locale tests - all OK - Locale tests - strtold("1,5") returns -6,38643e+367 and not 1,5 - strtold("1.5") returns 1,5 and not 1 - strtold("1.500") returns 1 and not 1500 - strtold("36.893.488.147.419.103.232") returns 1500 and not 3,68935e+19 - Locale tests - all OK - - =====FAIL: stdlib/tst-strtod3.out===== - 0: got wrong results -2.5937e+4826, expected 0 - - =====FAIL: stdlib/tst-strtod4.out===== - 0: got wrong results -6,38643e+367, expected 0 - 1: got wrong results 0, expected 1e+06 - 2: got wrong results 1e+06, expected 10 - - =====FAIL: stdlib/tst-strtod5i.out===== - 0: got wrong results -6,38643e+367, expected 0 - 2: got wrong results 0, expected -0 - 4: got wrong results -0, expected 0 - 5: got wrong results 0, expected -0 - 6: got wrong results -0, expected 0 - 7: got wrong results 0, expected -0 - 8: got wrong results -0, expected 0 - 9: got wrong results 0, expected -0 - 10: got wrong results -0, expected 0 - 11: got wrong results 0, expected -0 - 12: got wrong results -0, expected 0 - 13: got wrong results 0, expected -0 - 14: got wrong results -0, expected 0 - 15: got wrong results 0, expected -0 - 16: got wrong results -0, expected 0 - 17: got wrong results 0, expected -0 - 18: got wrong results -0, expected 0 - 20: got wrong results 0, expected -0 - 22: got wrong results -0, expected 0 - 23: got wrong results 0, expected -0 - 24: got wrong results -0, expected 0 - 25: got wrong results 0, expected -0 - 26: got wrong results -0, expected 0 - 27: got wrong results 0, expected -0 - - Fixes commit 3fc063dee01da4f80920a14b7db637c8501d6fd4 - ("Make __strtod_internal tests type-generic"). - - Suggested-by: Joseph Myers - Reviewed-by: Carlos O'Donell - (cherry picked from commit cc3e743fc09ee6fca45767629df9cbcbe1feba82) - -diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile -index 9d568d4f44..b77775cf95 100644 ---- a/sysdeps/powerpc/powerpc64/le/Makefile -+++ b/sysdeps/powerpc/powerpc64/le/Makefile -@@ -129,6 +129,10 @@ CFLAGS-tst-strtod-round.c += $(type-float128-CFLAGS) - CFLAGS-tst-wcstod-round.c += $(type-float128-CFLAGS) - CFLAGS-tst-strtod-nan-locale.c += $(type-float128-CFLAGS) - CFLAGS-tst-wcstod-nan-locale.c += $(type-float128-CFLAGS) -+CFLAGS-tst-strtod1i.c += $(type-float128-CFLAGS) -+CFLAGS-tst-strtod3.c += $(type-float128-CFLAGS) -+CFLAGS-tst-strtod4.c += $(type-float128-CFLAGS) -+CFLAGS-tst-strtod5i.c += $(type-float128-CFLAGS) - CFLAGS-tst-strtod6.c += $(type-float128-CFLAGS) - CFLAGS-tst-strfrom.c += $(type-float128-CFLAGS) - CFLAGS-tst-strfrom-locale.c += $(type-float128-CFLAGS) - -commit 4a9b6cdc88335e2a7291418563073a58fe97346e -Author: Joseph Myers -Date: Fri Sep 20 23:23:13 2024 +0000 - - Make tst-strtod2 and tst-strtod5 type-generic - - Some of the strtod tests use type-generic machinery in tst-strtod.h to - test the strto* functions for all floating types, while others only - test double even when the tests are in fact meaningful for all - floating types. - - Convert tst-strtod2 and tst-strtod5 to use the type-generic machinery - so they test all floating types. I haven't tried to convert them to - use newer test interfaces in other ways, just made the changes - necessary to use the type-generic machinery. - - Tested for x86_64. - - (cherry picked from commit 8de031bcb9adfa736c0caed2c79d10947b8d8f48) - -diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c -index a7df82ebbd..2cb0953fa9 100644 ---- a/stdlib/tst-strtod2.c -+++ b/stdlib/tst-strtod2.c -@@ -1,43 +1,61 @@ - #include - #include - --struct test --{ -- const char *str; -- double result; -- size_t offset; --} tests[] = --{ -- { "0xy", 0.0, 1 }, -- { "0x.y", 0.0, 1 }, -- { "0x0.y", 0.0, 4 }, -- { "0x.0y", 0.0, 4 }, -- { ".y", 0.0, 0 }, -- { "0.y", 0.0, 2 }, -- { ".0y", 0.0, 2 } --}; -+#include "tst-strtod.h" -+ -+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+struct test_strto ## FSUF \ -+{ \ -+ const char *str; \ -+ FTYPE result; \ -+ size_t offset; \ -+} tests_strto ## FSUF[] = \ -+{ \ -+ { "0xy", 0.0 ## LSUF, 1 }, \ -+ { "0x.y", 0.0 ## LSUF, 1 }, \ -+ { "0x0.y", 0.0 ## LSUF, 4 }, \ -+ { "0x.0y", 0.0 ## LSUF, 4 }, \ -+ { ".y", 0.0 ## LSUF, 0 }, \ -+ { "0.y", 0.0 ## LSUF, 2 }, \ -+ { ".0y", 0.0 ## LSUF, 2 } \ -+}; \ -+ \ -+static int \ -+test_strto ## FSUF (void) \ -+{ \ -+ int status = 0; \ -+ for (size_t i = 0; \ -+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ -+ ++i) \ -+ { \ -+ char *ep; \ -+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \ -+ if (r != tests_strto ## FSUF[i].result) \ -+ { \ -+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ -+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ -+ FTOSTR (buf2, sizeof (buf2), "%g", tests_strto ## FSUF[i].result); \ -+ printf ("test %zu r = %s, expect %s\n", i, buf1, buf2); \ -+ status = 1; \ -+ } \ -+ if (ep != tests_strto ## FSUF[i].str + tests_strto ## FSUF[i].offset) \ -+ { \ -+ printf ("test %zu strto" #FSUF \ -+ " parsed %tu characters, expected %zu\n", \ -+ i, ep - tests_strto ## FSUF[i].str, \ -+ tests_strto ## FSUF[i].offset); \ -+ status = 1; \ -+ } \ -+ } \ -+ return status; \ -+} -+ -+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) - - static int - do_test (void) - { -- int status = 0; -- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) -- { -- char *ep; -- double r = strtod (tests[i].str, &ep); -- if (r != tests[i].result) -- { -- printf ("test %zu r = %g, expect %g\n", i, r, tests[i].result); -- status = 1; -- } -- if (ep != tests[i].str + tests[i].offset) -- { -- printf ("test %zu strtod parsed %tu characters, expected %zu\n", -- i, ep - tests[i].str, tests[i].offset); -- status = 1; -- } -- } -- return status; -+ return STRTOD_TEST_FOREACH (test_strto); - } - - #define TEST_FUNCTION do_test () -diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5.c -index 29153ec005..7eb9b3a2d7 100644 ---- a/stdlib/tst-strtod5.c -+++ b/stdlib/tst-strtod5.c -@@ -22,35 +22,75 @@ - #include - #include - -+#include "tst-strtod.h" -+ - #define NBSP "\xc2\xa0" - --static const struct --{ -- const char *in; -- double expected; --} tests[] = -- { -- { "0", 0.0 }, -- { "000", 0.0 }, -- { "-0", -0.0 }, -- { "-000", -0.0 }, -- { "0,", 0.0 }, -- { "-0,", -0.0 }, -- { "0,0", 0.0 }, -- { "-0,0", -0.0 }, -- { "0e-10", 0.0 }, -- { "-0e-10", -0.0 }, -- { "0,e-10", 0.0 }, -- { "-0,e-10", -0.0 }, -- { "0,0e-10", 0.0 }, -- { "-0,0e-10", -0.0 }, -- { "0e-1000000", 0.0 }, -- { "-0e-1000000", -0.0 }, -- { "0,0e-1000000", 0.0 }, -- { "-0,0e-1000000", -0.0 }, -- }; --#define NTESTS (sizeof (tests) / sizeof (tests[0])) -+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+static const struct \ -+{ \ -+ const char *in; \ -+ FTYPE expected; \ -+} tests_strto ## FSUF[] = \ -+ { \ -+ { "0", 0.0 ## LSUF }, \ -+ { "000", 0.0 ## LSUF }, \ -+ { "-0", -0.0 ## LSUF }, \ -+ { "-000", -0.0 ## LSUF }, \ -+ { "0,", 0.0 ## LSUF }, \ -+ { "-0,", -0.0 ## LSUF }, \ -+ { "0,0", 0.0 ## LSUF }, \ -+ { "-0,0", -0.0 ## LSUF }, \ -+ { "0e-10", 0.0 ## LSUF }, \ -+ { "-0e-10", -0.0 ## LSUF }, \ -+ { "0,e-10", 0.0 ## LSUF }, \ -+ { "-0,e-10", -0.0 ## LSUF }, \ -+ { "0,0e-10", 0.0 ## LSUF }, \ -+ { "-0,0e-10", -0.0 ## LSUF }, \ -+ { "0e-1000000", 0.0 ## LSUF }, \ -+ { "-0e-1000000", -0.0 ## LSUF }, \ -+ { "0,0e-1000000", 0.0 ## LSUF }, \ -+ { "-0,0e-1000000", -0.0 ## LSUF }, \ -+ }; \ -+ \ -+ \ -+static int \ -+test_strto ## FSUF (void) \ -+{ \ -+ int status = 0; \ -+ \ -+ for (int i = 0; \ -+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ -+ ++i) \ -+ { \ -+ char *ep; \ -+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].in, &ep); \ -+ \ -+ if (*ep != '\0') \ -+ { \ -+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \ -+ status = 1; \ -+ } \ -+ \ -+ if (r != tests_strto ## FSUF[i].expected \ -+ || (copysign ## CSUF (10.0 ## LSUF, r) \ -+ != copysign ## CSUF (10.0 ## LSUF, \ -+ tests_strto ## FSUF[i].expected))) \ -+ { \ -+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ -+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ -+ FTOSTR (buf2, sizeof (buf2), "%g", \ -+ tests_strto ## FSUF[i].expected); \ -+ printf ("%d: got wrong results %s, expected %s\n", \ -+ i, buf1, buf2); \ -+ status = 1; \ -+ } \ -+ } \ -+ \ -+ return status; \ -+} - -+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) - - static int - do_test (void) -@@ -61,29 +101,7 @@ do_test (void) - return 1; - } - -- int status = 0; -- -- for (int i = 0; i < NTESTS; ++i) -- { -- char *ep; -- double r = strtod (tests[i].in, &ep); -- -- if (*ep != '\0') -- { -- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); -- status = 1; -- } -- -- if (r != tests[i].expected -- || copysign (10.0, r) != copysign (10.0, tests[i].expected)) -- { -- printf ("%d: got wrong results %g, expected %g\n", -- i, r, tests[i].expected); -- status = 1; -- } -- } -- -- return status; -+ return STRTOD_TEST_FOREACH (test_strto); - } - - #include - -commit 8f40dfbe2ad8a4a2d2fc3bbe01d289037d113ced -Author: Joseph Myers -Date: Fri Sep 20 23:24:02 2024 +0000 - - Add more tests of strtod end pointer - - Although there are some tests in tst-strtod2 and tst-strtod3 for the - end pointer provided by strtod when it doesn't parse the whole string, - they aren't very thorough. Add tests of more such cases to - tst-strtod2. - - Tested for x86_64. - - (cherry picked from commit b5d3737b305525315e0c7c93ca49eadc868eabd5) - -diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c -index 2cb0953fa9..c84bd792c1 100644 ---- a/stdlib/tst-strtod2.c -+++ b/stdlib/tst-strtod2.c -@@ -1,3 +1,4 @@ -+#include - #include - #include - -@@ -17,10 +18,46 @@ struct test_strto ## FSUF \ - { "0x.0y", 0.0 ## LSUF, 4 }, \ - { ".y", 0.0 ## LSUF, 0 }, \ - { "0.y", 0.0 ## LSUF, 2 }, \ -- { ".0y", 0.0 ## LSUF, 2 } \ -+ { ".0y", 0.0 ## LSUF, 2 }, \ -+ { "1.0e", 1.0 ## LSUF, 3 }, \ -+ { "1.0e+", 1.0 ## LSUF, 3 }, \ -+ { "1.0e-", 1.0 ## LSUF, 3 }, \ -+ { "1.0ex", 1.0 ## LSUF, 3 }, \ -+ { "1.0e+x", 1.0 ## LSUF, 3 }, \ -+ { "1.0e-x", 1.0 ## LSUF, 3 }, \ -+ { "0x1p", 1.0 ## LSUF, 3 }, \ -+ { "0x1p+", 1.0 ## LSUF, 3 }, \ -+ { "0x1p-", 1.0 ## LSUF, 3 }, \ -+ { "0x1px", 1.0 ## LSUF, 3 }, \ -+ { "0x1p+x", 1.0 ## LSUF, 3 }, \ -+ { "0x1p-x", 1.0 ## LSUF, 3 }, \ -+ { "INFx", INFINITY, 3 }, \ -+ { "infx", INFINITY, 3 }, \ -+ { "INFINITx", INFINITY, 3 }, \ -+ { "infinitx", INFINITY, 3 }, \ -+ { "INFINITYY", INFINITY, 8 }, \ -+ { "infinityy", INFINITY, 8 }, \ -+ { "NANx", NAN, 3 }, \ -+ { "nanx", NAN, 3 }, \ -+ { "NAN(", NAN, 3 }, \ -+ { "nan(", NAN, 3 }, \ -+ { "NAN(x", NAN, 3 }, \ -+ { "nan(x", NAN, 3 }, \ -+ { "NAN(x)y", NAN, 6 }, \ -+ { "nan(x)y", NAN, 6 }, \ -+ { "NAN(*)y", NAN, 3 }, \ -+ { "nan(*)y", NAN, 3 } \ - }; \ - \ - static int \ -+compare_strto ## FSUF (FTYPE x, FTYPE y) \ -+{ \ -+ if (isnan (x) && isnan (y)) \ -+ return 1; \ -+ return x == y; \ -+} \ -+ \ -+static int \ - test_strto ## FSUF (void) \ - { \ - int status = 0; \ -@@ -30,7 +67,7 @@ test_strto ## FSUF (void) \ - { \ - char *ep; \ - FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \ -- if (r != tests_strto ## FSUF[i].result) \ -+ if (!compare_strto ## FSUF (r, tests_strto ## FSUF[i].result)) \ - { \ - char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ - FTOSTR (buf1, sizeof (buf1), "%g", r); \ - -commit cc256952ecb07789c423dff9712eb7a38f80e963 -Author: Joseph Myers -Date: Fri Sep 20 23:24:45 2024 +0000 - - Add tests of more strtod special cases - - There is very little test coverage of inputs to strtod-family - functions that don't contain anything that can be parsed as a number - (one test of ".y" in tst-strtod2), and none that I can see of skipping - initial whitespace. Add some tests of these things to tst-strtod2. - - Tested for x86_64. - - (cherry picked from commit 378039ca578c2ea93095a1e710d96f58c68a3997) - -diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c -index c84bd792c1..d00bc13323 100644 ---- a/stdlib/tst-strtod2.c -+++ b/stdlib/tst-strtod2.c -@@ -31,6 +31,20 @@ struct test_strto ## FSUF \ - { "0x1px", 1.0 ## LSUF, 3 }, \ - { "0x1p+x", 1.0 ## LSUF, 3 }, \ - { "0x1p-x", 1.0 ## LSUF, 3 }, \ -+ { "", 0.0 ## LSUF, 0 }, \ -+ { ".", 0.0 ## LSUF, 0 }, \ -+ { "-", 0.0 ## LSUF, 0 }, \ -+ { "-.", 0.0 ## LSUF, 0 }, \ -+ { ".e", 0.0 ## LSUF, 0 }, \ -+ { "-.e", 0.0 ## LSUF, 0 }, \ -+ { " \t", 0.0 ## LSUF, 0 }, \ -+ { " \t.", 0.0 ## LSUF, 0 }, \ -+ { " \t-", 0.0 ## LSUF, 0 }, \ -+ { " \t-.", 0.0 ## LSUF, 0 }, \ -+ { " \t.e", 0.0 ## LSUF, 0 }, \ -+ { " \t-.e", 0.0 ## LSUF, 0 }, \ -+ { " \t\f\r\n\v1", 1.0 ## LSUF, 7 }, \ -+ { " \t\f\r\n\v-1.5e2", -150.0 ## LSUF, 12 }, \ - { "INFx", INFINITY, 3 }, \ - { "infx", INFINITY, 3 }, \ - { "INFINITx", INFINITY, 3 }, \ - -commit 5c06c6e0b5078ffb0aa0c09bac79f086145e0897 -Author: H.J. Lu -Date: Sat Sep 7 08:32:32 2024 -0700 - - libio: Set _vtable_offset before calling _IO_link_in [BZ #32148] - - Since _IO_vtable_offset is used to detect the old binaries, set it - in _IO_old_file_init_internal before calling _IO_link_in which checks - _IO_vtable_offset. Add a glibc 2.0 test with copy relocation on - _IO_stderr_@GLIBC_2.0 to verify that fopen won't cause memory corruption. - This fixes BZ #32148. - - Signed-off-by: H.J. Lu - Reviewed-by: Noah Goldstein - (cherry picked from commit 9dfea3de7f690bff70e3c6eb346b9ad082bb2e35) - -diff --git a/libio/Makefile b/libio/Makefile -index 6a507b67ea..5292baa4e0 100644 ---- a/libio/Makefile -+++ b/libio/Makefile -@@ -286,11 +286,18 @@ endif - ifeq ($(build-shared),yes) - aux += oldfileops oldstdfiles - tests += \ -+ tst-fopen-compat \ - tst-stderr-compat \ - # tests - tests-2.0 += \ -+ tst-fopen-compat \ - tst-stderr-compat \ - # tests-2.0 -+ -+tst-fopen-compat-ARGS = tst-fopen-compat.c -+# Disable PIE to trigger copy relocation. -+CFLAGS-tst-fopen-compat.c += -fno-pie -+tst-fopen-compat-no-pie = yes - endif - - shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \ -diff --git a/libio/oldfileops.c b/libio/oldfileops.c -index 97148dba9b..8f775c9094 100644 ---- a/libio/oldfileops.c -+++ b/libio/oldfileops.c -@@ -103,9 +103,11 @@ _IO_old_file_init_internal (struct _IO_FILE_plus *fp) - fp->file._old_offset = _IO_pos_BAD; - fp->file._flags |= CLOSED_FILEBUF_FLAGS; - -- _IO_link_in (fp); -+ /* NB: _vtable_offset must be set before calling _IO_link_in since -+ _IO_vtable_offset is used to detect the old binaries. */ - fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE) - - (int) sizeof (struct _IO_FILE_complete)); -+ _IO_link_in (fp); - fp->file._fileno = -1; - - if (&_IO_stdin_used != NULL || !_IO_legacy_file ((FILE *) fp)) -diff --git a/libio/tst-fopen-compat.c b/libio/tst-fopen-compat.c -new file mode 100644 -index 0000000000..f241b61043 ---- /dev/null -+++ b/libio/tst-fopen-compat.c -@@ -0,0 +1,85 @@ -+/* Verify that fopen works with copy relocation on _IO_stderr_ in binaries -+ linked with glibc 2.0. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+ -+#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) -+# define _LIBC -+# define _IO_USE_OLD_IO_FILE -+# include -+# include -+# include -+# include -+# include -+# include -+ -+struct _IO_jump_t; -+ -+struct _IO_FILE_plus -+{ -+ FILE file; -+ const struct _IO_jump_t *vtable; -+}; -+ -+extern struct _IO_FILE_plus _IO_stderr_; -+compat_symbol_reference (libc, _IO_stderr_, _IO_stderr_, GLIBC_2_0); -+compat_symbol_reference (libc, fopen, fopen, GLIBC_2_0); -+compat_symbol_reference (libc, fclose, fclose, GLIBC_2_0); -+ -+static int -+do_test (int argc, char *argv[]) -+{ -+ static char filename[PATH_MAX + 1]; -+ struct stat st; -+ char *name = NULL; -+ int i; -+ -+ /* Try to trigger copy relocation. */ -+ TEST_VERIFY_EXIT (_IO_stderr_.file._fileno == STDERR_FILENO); -+ -+ for (i = 1; i < argc; i++) -+ { -+ name = argv[i]; -+ if (stat (name, &st) == 0) -+ { -+ TEST_VERIFY_EXIT (strlen (name) <= PATH_MAX); -+ break; -+ } -+ } -+ TEST_VERIFY_EXIT (name != NULL); -+ -+ strcpy (filename, name); -+ FILE *fp = fopen (filename, "r"); -+ TEST_VERIFY_EXIT (strcmp (filename, name) == 0); -+ TEST_VERIFY_EXIT (fp != NULL); -+ TEST_VERIFY_EXIT (fclose (fp) == 0); -+ return 0; -+} -+#else -+# include -+ -+static int -+do_test (int argc, char *argv[]) -+{ -+ return EXIT_UNSUPPORTED; -+} -+#endif -+ -+#define TEST_FUNCTION_ARGV do_test -+#include - -commit 85e5850f2f4ea5f304be5356ecb7a15998766a4e -Author: Joseph Myers -Date: Fri Sep 20 23:25:32 2024 +0000 - - Make tst-strtod-underflow type-generic - - The test tst-strtod-underflow covers various edge cases close to the - underflow threshold for strtod (especially cases where underflow on - architectures with after-rounding tininess detection depends on the - rounding mode). Make it use the type-generic machinery, with - corresponding test inputs for each supported floating-point format, so - that other functions in the strtod family are tested for underflow - edge cases as well. - - Tested for x86_64. - - (cherry picked from commit 94ca2c0894f0e1b62625c369cc598a2b9236622c) - -diff --git a/stdlib/tst-strtod-underflow.c b/stdlib/tst-strtod-underflow.c -index a5ced18599..8598b95b6d 100644 ---- a/stdlib/tst-strtod-underflow.c -+++ b/stdlib/tst-strtod-underflow.c -@@ -17,6 +17,10 @@ - License along with the GNU C Library; if not, see - . */ - -+/* Defining _LIBC_TEST ensures long double math functions are -+ declared in the headers. */ -+#define _LIBC_TEST 1 -+#define __STDC_WANT_IEC_60559_TYPES_EXT__ - #include - #include - #include -@@ -25,6 +29,60 @@ - #include - #include - -+#include "tst-strtod.h" -+ -+/* Logic for selecting between tests for different formats is as in -+ tst-strtod-skeleton.c, but here it is selecting string inputs with -+ different underflow properties, rather than generated test -+ data. */ -+ -+#define _CONCAT(a, b) a ## b -+#define CONCAT(a, b) _CONCAT (a, b) -+ -+#define MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+ const char *s_ ## FSUF; -+ -+#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 -+# define CHOOSE_ld(f,d,...) d -+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381 -+# define CHOOSE_ld(f,d,ld64i,...) ld64i -+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382 -+# define CHOOSE_ld(f,d,ld64i,ld64m,...) ld64m -+#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024 -+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,...) ld106 -+#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 -+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,ld113,...) ld113 -+#else -+# error "unknown long double format" -+#endif -+ -+#define CHOOSE_f(f,...) f -+#define CHOOSE_f32(f,...) f -+#define CHOOSE_d(f,d,...) d -+#define CHOOSE_f64(f,d,...) d -+#define CHOOSE_f32x(f,d,...) d -+#define CHOOSE_f128(f,d,ld64i,ld64m,ld106,ld113,...) ld113 -+ -+#if __HAVE_FLOAT64X -+# if FLT64X_MANT_DIG == 113 && FLT64X_MAX_EXP == 16384 -+# define CHOOSE_f64x(f,d,ld64i,ld64m,ld106,ld113,...) ld113 -+# elif (FLT64X_MANT_DIG == 64 \ -+ && FLT64X_MAX_EXP == 16384 \ -+ && FLT64X_MIN_EXP == -16381) -+# define CHOOSE_f64x(f,d,ld64i,...) ld64i -+# else -+# error "unknown _Float64x format" -+# endif -+#endif -+ -+#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \ -+ CHOOSE_ ## FSUF (__VA_ARGS__), -+#define XNTRY(...) \ -+ GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__) -+ -+#define TEST(f, d, ld64i, ld64m, ld106, ld113, u) \ -+ { XNTRY(f, d, ld64i, ld64m, ld106, ld113) u } -+ - enum underflow_case - { - /* Result is exact or outside the subnormal range. */ -@@ -55,38 +113,194 @@ enum underflow_case - - struct test - { -- const char *s; -+ GEN_TEST_STRTOD_FOREACH (MEMBER) - enum underflow_case c; - }; - - static const struct test tests[] = - { -- { "0x1p-1022", UNDERFLOW_NONE }, -- { "-0x1p-1022", UNDERFLOW_NONE }, -- { "0x0p-10000000000000000000000000", UNDERFLOW_NONE }, -- { "-0x0p-10000000000000000000000000", UNDERFLOW_NONE }, -- { "0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS }, -- { "-0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS }, -- { "0x1.000000000000000000001p-1022", UNDERFLOW_NONE }, -- { "-0x1.000000000000000000001p-1022", UNDERFLOW_NONE }, -- { "0x1p-1075", UNDERFLOW_ALWAYS }, -- { "-0x1p-1075", UNDERFLOW_ALWAYS }, -- { "0x1p-1023", UNDERFLOW_NONE }, -- { "-0x1p-1023", UNDERFLOW_NONE }, -- { "0x1p-1074", UNDERFLOW_NONE }, -- { "-0x1p-1074", UNDERFLOW_NONE }, -- { "0x1.ffffffffffffep-1023", UNDERFLOW_NONE }, -- { "-0x1.ffffffffffffep-1023", UNDERFLOW_NONE }, -- { "0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS }, -- { "-0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS }, -- { "0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_UPWARD }, -- { "-0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_DOWNWARD }, -- { "0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_UPWARD }, -- { "-0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_DOWNWARD }, -- { "0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO }, -- { "-0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_UPWARD_ZERO }, -- { "0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO }, -- { "-0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_UPWARD_ZERO }, -+ TEST ("0x1p-126", -+ "0x1p-1022", -+ "0x1p-16382", -+ "0x1p-16383", -+ "0x1p-969", -+ "0x1p-16382", -+ UNDERFLOW_NONE), -+ TEST ("-0x1p-126", -+ "-0x1p-1022", -+ "-0x1p-16382", -+ "-0x1p-16383", -+ "-0x1p-969", -+ "-0x1p-16382", -+ UNDERFLOW_NONE), -+ TEST ("0x0p-10000000000000000000000000", -+ "0x0p-10000000000000000000000000", -+ "0x0p-10000000000000000000000000", -+ "0x0p-10000000000000000000000000", -+ "0x0p-10000000000000000000000000", -+ "0x0p-10000000000000000000000000", -+ UNDERFLOW_NONE), -+ TEST ("-0x0p-10000000000000000000000000", -+ "-0x0p-10000000000000000000000000", -+ "-0x0p-10000000000000000000000000", -+ "-0x0p-10000000000000000000000000", -+ "-0x0p-10000000000000000000000000", -+ "-0x0p-10000000000000000000000000", -+ UNDERFLOW_NONE), -+ TEST ("0x1p-10000000000000000000000000", -+ "0x1p-10000000000000000000000000", -+ "0x1p-10000000000000000000000000", -+ "0x1p-10000000000000000000000000", -+ "0x1p-10000000000000000000000000", -+ "0x1p-10000000000000000000000000", -+ UNDERFLOW_ALWAYS), -+ TEST ("-0x1p-10000000000000000000000000", -+ "-0x1p-10000000000000000000000000", -+ "-0x1p-10000000000000000000000000", -+ "-0x1p-10000000000000000000000000", -+ "-0x1p-10000000000000000000000000", -+ "-0x1p-10000000000000000000000000", -+ UNDERFLOW_ALWAYS), -+ TEST ("0x1.000000000000000000001p-126", -+ "0x1.000000000000000000001p-1022", -+ "0x1.000000000000000000001p-16382", -+ "0x1.000000000000000000001p-16383", -+ "0x1.000000000000000000001p-969", -+ "0x1.00000000000000000000000000000000000000001p-16382", -+ UNDERFLOW_NONE), -+ TEST ("-0x1.000000000000000000001p-126", -+ "-0x1.000000000000000000001p-1022", -+ "-0x1.000000000000000000001p-16382", -+ "-0x1.000000000000000000001p-16383", -+ "-0x1.000000000000000000001p-969", -+ "-0x1.00000000000000000000000000000000000000001p-16382", -+ UNDERFLOW_NONE), -+ TEST ("0x1p-150", -+ "0x1p-1075", -+ "0x1p-16446", -+ "0x1p-16447", -+ "0x1p-1075", -+ "0x1p-16495", -+ UNDERFLOW_ALWAYS), -+ TEST ("-0x1p-150", -+ "-0x1p-1075", -+ "-0x1p-16446", -+ "-0x1p-16447", -+ "-0x1p-1075", -+ "-0x1p-16495", -+ UNDERFLOW_ALWAYS), -+ TEST ("0x1p-127", -+ "0x1p-1023", -+ "0x1p-16383", -+ "0x1p-16384", -+ "0x1p-970", -+ "0x1p-16383", -+ UNDERFLOW_NONE), -+ TEST ("-0x1p-127", -+ "-0x1p-1023", -+ "-0x1p-16383", -+ "-0x1p-16384", -+ "-0x1p-970", -+ "-0x1p-16383", -+ UNDERFLOW_NONE), -+ TEST ("0x1p-149", -+ "0x1p-1074", -+ "0x1p-16445", -+ "0x1p-16446", -+ "0x1p-1074", -+ "0x1p-16494", -+ UNDERFLOW_NONE), -+ TEST ("-0x1p-149", -+ "-0x1p-1074", -+ "-0x1p-16445", -+ "-0x1p-16446", -+ "-0x1p-1074", -+ "-0x1p-16494", -+ UNDERFLOW_NONE), -+ TEST ("0x1.fffffcp-127", -+ "0x1.ffffffffffffep-1023", -+ "0x1.fffffffffffffffcp-16383", -+ "0x1.fffffffffffffffcp-16384", -+ "0x1.ffffffffffffffffffffffffffp-970", -+ "0x1.fffffffffffffffffffffffffffep-16383", -+ UNDERFLOW_NONE), -+ TEST ("-0x1.fffffcp-127", -+ "-0x1.ffffffffffffep-1023", -+ "-0x1.fffffffffffffffcp-16383", -+ "-0x1.fffffffffffffffcp-16384", -+ "-0x1.ffffffffffffffffffffffffffp-970", -+ "-0x1.fffffffffffffffffffffffffffep-16383", -+ UNDERFLOW_NONE), -+ TEST ("0x1.fffffep-127", -+ "0x1.fffffffffffffp-1023", -+ "0x1.fffffffffffffffep-16383", -+ "0x1.fffffffffffffffep-16384", -+ "0x1.ffffffffffffffffffffffffff8p-970", -+ "0x1.ffffffffffffffffffffffffffffp-16383", -+ UNDERFLOW_ALWAYS), -+ TEST ("-0x1.fffffep-127", -+ "-0x1.fffffffffffffp-1023", -+ "-0x1.fffffffffffffffep-16383", -+ "-0x1.fffffffffffffffep-16384", -+ "-0x1.ffffffffffffffffffffffffff8p-970", -+ "-0x1.ffffffffffffffffffffffffffffp-16383", -+ UNDERFLOW_ALWAYS), -+ TEST ("0x1.fffffe0001p-127", -+ "0x1.fffffffffffff0001p-1023", -+ "0x1.fffffffffffffffe0001p-16383", -+ "0x1.fffffffffffffffe0001p-16384", -+ "0x1.ffffffffffffffffffffffffff80001p-970", -+ "0x1.ffffffffffffffffffffffffffff0001p-16383", -+ UNDERFLOW_EXCEPT_UPWARD), -+ TEST ("-0x1.fffffe0001p-127", -+ "-0x1.fffffffffffff0001p-1023", -+ "-0x1.fffffffffffffffe0001p-16383", -+ "-0x1.fffffffffffffffe0001p-16384", -+ "-0x1.ffffffffffffffffffffffffff80001p-970", -+ "-0x1.ffffffffffffffffffffffffffff0001p-16383", -+ UNDERFLOW_EXCEPT_DOWNWARD), -+ TEST ("0x1.fffffeffffp-127", -+ "0x1.fffffffffffff7fffp-1023", -+ "0x1.fffffffffffffffeffffp-16383", -+ "0x1.fffffffffffffffeffffp-16384", -+ "0x1.ffffffffffffffffffffffffffbffffp-970", -+ "0x1.ffffffffffffffffffffffffffff7fffp-16383", -+ UNDERFLOW_EXCEPT_UPWARD), -+ TEST ("-0x1.fffffeffffp-127", -+ "-0x1.fffffffffffff7fffp-1023", -+ "-0x1.fffffffffffffffeffffp-16383", -+ "-0x1.fffffffffffffffeffffp-16384", -+ "-0x1.ffffffffffffffffffffffffffbffffp-970", -+ "-0x1.ffffffffffffffffffffffffffff7fffp-16383", -+ UNDERFLOW_EXCEPT_DOWNWARD), -+ TEST ("0x1.ffffffp-127", -+ "0x1.fffffffffffff8p-1023", -+ "0x1.ffffffffffffffffp-16383", -+ "0x1.ffffffffffffffffp-16384", -+ "0x1.ffffffffffffffffffffffffffcp-970", -+ "0x1.ffffffffffffffffffffffffffff8p-16383", -+ UNDERFLOW_ONLY_DOWNWARD_ZERO), -+ TEST ("-0x1.ffffffp-127", -+ "-0x1.fffffffffffff8p-1023", -+ "-0x1.ffffffffffffffffp-16383", -+ "-0x1.ffffffffffffffffp-16384", -+ "-0x1.ffffffffffffffffffffffffffcp-970", -+ "-0x1.ffffffffffffffffffffffffffff8p-16383", -+ UNDERFLOW_ONLY_UPWARD_ZERO), -+ TEST ("0x1.ffffffffffp-127", -+ "0x1.fffffffffffffffffp-1023", -+ "0x1.ffffffffffffffffffffp-16383", -+ "0x1.ffffffffffffffffffffp-16384", -+ "0x1.ffffffffffffffffffffffffffffffp-970", -+ "0x1.ffffffffffffffffffffffffffffffffp-16383", -+ UNDERFLOW_ONLY_DOWNWARD_ZERO), -+ TEST ("-0x1.ffffffffffp-127", -+ "-0x1.fffffffffffffffffp-1023", -+ "-0x1.ffffffffffffffffffffp-16383", -+ "-0x1.ffffffffffffffffffffp-16384", -+ "-0x1.ffffffffffffffffffffffffffffffp-970", -+ "-0x1.ffffffffffffffffffffffffffffffffp-16383", -+ UNDERFLOW_ONLY_UPWARD_ZERO), - }; - - /* Return whether to expect underflow from a particular testcase, in a -@@ -133,39 +347,62 @@ static bool support_underflow_exception = false; - volatile double d = DBL_MIN; - volatile double dd; - --static int --test_in_one_mode (const char *s, enum underflow_case c, int rm, -- const char *mode_name) -+static bool -+test_got_fe_underflow (void) - { -- int result = 0; -- feclearexcept (FE_ALL_EXCEPT); -- errno = 0; -- double d = strtod (s, NULL); -- int got_errno = errno; - #ifdef FE_UNDERFLOW -- bool got_fe_underflow = fetestexcept (FE_UNDERFLOW) != 0; -+ return fetestexcept (FE_UNDERFLOW) != 0; - #else -- bool got_fe_underflow = false; -+ return false; - #endif -- printf ("strtod (%s) (%s) returned %a, errno = %d, %sunderflow exception\n", -- s, mode_name, d, got_errno, got_fe_underflow ? "" : "no "); -- bool this_expect_underflow = expect_underflow (c, rm); -- if (got_errno != 0 && got_errno != ERANGE) -- { -- puts ("FAIL: errno neither 0 nor ERANGE"); -- result = 1; -- } -- else if (this_expect_underflow != (errno == ERANGE)) -- { -- puts ("FAIL: underflow from errno differs from expectations"); -- result = 1; -- } -- if (support_underflow_exception && got_fe_underflow != this_expect_underflow) -- { -- puts ("FAIL: underflow from exceptions differs from expectations"); -- result = 1; -- } -- return result; -+} -+ -+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ -+static int \ -+test_strto ## FSUF (int i, int rm, const char *mode_name) \ -+{ \ -+ const char *s = tests[i].s_ ## FSUF; \ -+ enum underflow_case c = tests[i].c; \ -+ int result = 0; \ -+ feclearexcept (FE_ALL_EXCEPT); \ -+ errno = 0; \ -+ FTYPE d = strto ## FSUF (s, NULL); \ -+ int got_errno = errno; \ -+ bool got_fe_underflow = test_got_fe_underflow (); \ -+ char buf[FSTRLENMAX]; \ -+ FTOSTR (buf, sizeof (buf), "%a", d); \ -+ printf ("strto" #FSUF \ -+ " (%s) (%s) returned %s, errno = %d, " \ -+ "%sunderflow exception\n", \ -+ s, mode_name, buf, got_errno, \ -+ got_fe_underflow ? "" : "no "); \ -+ bool this_expect_underflow = expect_underflow (c, rm); \ -+ if (got_errno != 0 && got_errno != ERANGE) \ -+ { \ -+ puts ("FAIL: errno neither 0 nor ERANGE"); \ -+ result = 1; \ -+ } \ -+ else if (this_expect_underflow != (errno == ERANGE)) \ -+ { \ -+ puts ("FAIL: underflow from errno differs from expectations"); \ -+ result = 1; \ -+ } \ -+ if (support_underflow_exception \ -+ && got_fe_underflow != this_expect_underflow) \ -+ { \ -+ puts ("FAIL: underflow from exceptions " \ -+ "differs from expectations"); \ -+ result = 1; \ -+ } \ -+ return result; \ -+} -+ -+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) -+ -+static int -+test_in_one_mode (size_t i, int rm, const char *mode_name) -+{ -+ return STRTOD_TEST_FOREACH (test_strto, i, rm, mode_name); - } - - static int -@@ -191,12 +428,12 @@ do_test (void) - #endif - for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) - { -- result |= test_in_one_mode (tests[i].s, tests[i].c, fe_tonearest, -+ result |= test_in_one_mode (i, fe_tonearest, - "default rounding mode"); - #ifdef FE_DOWNWARD - if (!fesetround (FE_DOWNWARD)) - { -- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_DOWNWARD, -+ result |= test_in_one_mode (i, FE_DOWNWARD, - "FE_DOWNWARD"); - fesetround (save_round_mode); - } -@@ -204,7 +441,7 @@ do_test (void) - #ifdef FE_TOWARDZERO - if (!fesetround (FE_TOWARDZERO)) - { -- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_TOWARDZERO, -+ result |= test_in_one_mode (i, FE_TOWARDZERO, - "FE_TOWARDZERO"); - fesetround (save_round_mode); - } -@@ -212,7 +449,7 @@ do_test (void) - #ifdef FE_UPWARD - if (!fesetround (FE_UPWARD)) - { -- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_UPWARD, -+ result |= test_in_one_mode (i, FE_UPWARD, - "FE_UPWARD"); - fesetround (save_round_mode); - } - -commit 3a34851103d554b2c9b269ecae111648f9d7bb6d -Author: Florian Weimer -Date: Mon Oct 28 14:45:30 2024 +0100 - - elf: Change ldconfig auxcache magic number (bug 32231) - - In commit c628c2296392ed3bf2cb8d8470668e64fe53389f (elf: Remove - ldconfig kernel version check), the layout of auxcache entries - changed because the osversion field was removed from - struct aux_cache_file_entry. However, AUX_CACHEMAGIC was not - changed, so existing files are still used, potentially leading - to unintended ldconfig behavior. This commit changes AUX_CACHEMAGIC, - so that the file is regenerated. - - Reported-by: DJ Delorie - Reviewed-by: Adhemerval Zanella - (cherry picked from commit 0a536f6e2f76e3ef581b3fd9af1e5cf4ddc7a5a2) - -diff --git a/NEWS b/NEWS -index 9033335db1..928c516bec 100644 ---- a/NEWS -+++ b/NEWS -@@ -17,6 +17,7 @@ The following bugs are resolved with this release: - [32026] strerror/strsignal TLS not handled correctly for secondary namespaces - [32052] Name space violation in fortify wrappers - [32137] libio: Attempt wide backup free only for non-legacy code -+ [32231] elf: Change ldconfig auxcache magic number - - Version 2.40 - -diff --git a/elf/cache.c b/elf/cache.c -index 8a618e11fa..62d681df42 100644 ---- a/elf/cache.c -+++ b/elf/cache.c -@@ -820,7 +820,7 @@ struct aux_cache_entry - struct aux_cache_entry *next; - }; - --#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-1.0" -+#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-2.0" - - struct aux_cache_file_entry - { - -commit 234458024300f0b4b430785999f33eddf059af6a -Author: Michael Karcher -Date: Sun Jul 28 15:30:57 2024 +0200 - - Mitigation for "clone on sparc might fail with -EFAULT for no valid reason" (bz 31394) - - It seems the kernel can not deal with uncommitted stack space in the area intended - for the register window when executing the clone() system call. So create a nested - frame (proxy for the kernel frame) and flush it from the processor to memory to - force committing pages to the stack before invoking the system call. - - Bug: https://www.mail-archive.com/debian-glibc@lists.debian.org/msg62592.html - Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31394 - See-also: https://lore.kernel.org/sparclinux/62f9be9d-a086-4134-9a9f-5df8822708af@mkarcher.dialup.fu-berlin.de/ - Signed-off-by: Michael Karcher - Reviewed-by: DJ Delorie - (cherry picked from commit faeaa3bc9f76030b9882ccfdee232fc0ca6dcb06) - -diff --git a/NEWS b/NEWS -index 928c516bec..dc815fb6d3 100644 ---- a/NEWS -+++ b/NEWS -@@ -11,6 +11,7 @@ The following bugs are resolved with this release: - - [27821] ungetc: Fix backup buffer leak on program exit - [30081] resolv: Do not wait for non-existing second DNS response after error -+ [31394] clone on sparc might fail with -EFAULT for no valid reason - [31717] elf: Avoid re-initializing already allocated TLS in dlopen - [31890] resolv: Allow short error responses to match any DNS query - [31968] mremap implementation in C does not handle arguments correctly -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S -index 748d25fcfe..c9cf9bb055 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S -+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S -@@ -28,6 +28,9 @@ - .text - ENTRY (__clone) - save %sp,-96,%sp -+ save %sp,-96,%sp -+ flushw -+ restore - cfi_def_cfa_register(%fp) - cfi_window_save - cfi_register(%o7, %i7) -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S -index e5ff2cf1a0..370d51fda2 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S -+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S -@@ -32,6 +32,9 @@ - - ENTRY (__clone) - save %sp, -192, %sp -+ save %sp, -192, %sp -+ flushw -+ restore - cfi_def_cfa_register(%fp) - cfi_window_save - cfi_register(%o7, %i7) - -commit efb710034e4c5e734d100cc4ef1b1e27d4315825 -Author: Adhemerval Zanella -Date: Mon Sep 2 16:58:51 2024 -0300 - - linux: sparc: Fix clone for LEON/sparcv8 (BZ 31394) - - The sparc clone mitigation (faeaa3bc9f76030) added the use of - flushw, which is not support by LEON/sparcv8. As discussed on - the libc-alpha, 'ta 3' is a working alternative [1]. - - [1] https://sourceware.org/pipermail/libc-alpha/2024-August/158905.html - - Checked with a build for sparcv8-linux-gnu targetting leon. - - Acked-by: John Paul Adrian Glaubitz - (cherry picked from commit 5e8cfc5d625e6dd000a0371d21d792836ea7951a) - -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S -index c9cf9bb055..c84244f56b 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S -+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S -@@ -29,7 +29,11 @@ - ENTRY (__clone) - save %sp,-96,%sp - save %sp,-96,%sp -+#ifdef __sparcv9 - flushw -+#else -+ ta 3 -+#endif - restore - cfi_def_cfa_register(%fp) - cfi_window_save - -commit 626c048f32a979f77662bdcb1cca477c11d3f9c1 -Author: Aurelien Jarno -Date: Sun Nov 10 10:50:34 2024 +0100 - - elf: handle addition overflow in _dl_find_object_update_1 [BZ #32245] - - The remaining_to_add variable can be 0 if (current_used + count) wraps, - This is caught by GCC 14+ on hppa, which determines from there that - target_seg could be be NULL when remaining_to_add is zero, which in - turns causes a -Wstringop-overflow warning: - - In file included from ../include/atomic.h:49, - from dl-find_object.c:20: - In function '_dlfo_update_init_seg', - inlined from '_dl_find_object_update_1' at dl-find_object.c:689:30, - inlined from '_dl_find_object_update' at dl-find_object.c:805:13: - ../sysdeps/unix/sysv/linux/hppa/atomic-machine.h:44:4: error: '__atomic_store_4' writing 4 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=] - 44 | __atomic_store_n ((mem), (val), __ATOMIC_RELAXED); \ - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - dl-find_object.c:644:3: note: in expansion of macro 'atomic_store_relaxed' - 644 | atomic_store_relaxed (&seg->size, new_seg_size); - | ^~~~~~~~~~~~~~~~~~~~ - In function '_dl_find_object_update': - cc1: note: destination object is likely at address zero - - In practice, this is not possible as it represent counts of link maps. - Link maps have sizes larger than 1 byte, so the sum of any two link map - counts will always fit within a size_t without wrapping around. - - This patch therefore adds a check on remaining_to_add == 0 and tell GCC - that this can not happen using __builtin_unreachable. - - Thanks to Andreas Schwab for the investigation. - - Closes: BZ #32245 - Signed-off-by: Aurelien Jarno - Tested-by: John David Anglin - Reviewed-by: Florian Weimer - (cherry picked from commit 6c915c73d08028987232f6dc718f218c61113240) - -diff --git a/NEWS b/NEWS -index dc815fb6d3..bd0b3bd66a 100644 ---- a/NEWS -+++ b/NEWS -@@ -19,6 +19,7 @@ The following bugs are resolved with this release: - [32052] Name space violation in fortify wrappers - [32137] libio: Attempt wide backup free only for non-legacy code - [32231] elf: Change ldconfig auxcache magic number -+ [32245] glibc -Wstringop-overflow= build failure on hppa - - Version 2.40 - -diff --git a/elf/dl-find_object.c b/elf/dl-find_object.c -index 449302eda3..ae18b438d3 100644 ---- a/elf/dl-find_object.c -+++ b/elf/dl-find_object.c -@@ -662,6 +662,14 @@ _dl_find_object_update_1 (struct link_map **loaded, size_t count) - = _dlfo_loaded_mappings[!active_idx]; - size_t remaining_to_add = current_used + count; - -+ /* remaining_to_add can be 0 if (current_used + count) wraps, but in practice -+ this is not possible as it represent counts of link maps. Link maps have -+ sizes larger than 1 byte, so the sum of any two link map counts will -+ always fit within a size_t without wrapping around. This check ensures -+ that target_seg is not erroneously considered potentially NULL by GCC. */ -+ if (remaining_to_add == 0) -+ __builtin_unreachable (); -+ - /* Ensure that the new segment chain has enough space. */ - { - size_t new_allocated - -commit 9b9545ba27613fa41efdfa7965b6fc580bf1b919 -Author: Michael Jeanson -Date: Thu Nov 7 22:23:49 2024 +0100 - - nptl: initialize rseq area prior to registration - - Per the rseq syscall documentation, 3 fields are required to be - initialized by userspace prior to registration, they are 'cpu_id', - 'rseq_cs' and 'flags'. Since we have no guarantee that 'struct pthread' - is cleared on all architectures, explicitly set those 3 fields prior to - registration. - - Signed-off-by: Michael Jeanson - Reviewed-by: Florian Weimer - (cherry picked from commit 97f60abd25628425971f07e9b0e7f8eec0741235) - -diff --git a/nptl/descr.h b/nptl/descr.h -index 8cef95810c..c4bdd7757a 100644 ---- a/nptl/descr.h -+++ b/nptl/descr.h -@@ -414,6 +414,8 @@ struct pthread - { - uint32_t cpu_id_start; - uint32_t cpu_id; -+ uint64_t rseq_cs; -+ uint32_t flags; - }; - char pad[32]; /* Original rseq area size. */ - } rseq_area __attribute__ ((aligned (32))); -diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h -index 7ea935b4ad..37a8f630b6 100644 ---- a/sysdeps/unix/sysv/linux/rseq-internal.h -+++ b/sysdeps/unix/sysv/linux/rseq-internal.h -@@ -51,11 +51,21 @@ rseq_register_current_thread (struct pthread *self, bool do_rseq) - /* The initial implementation used only 20 bytes out of 32, - but still expected size 32. */ - size = RSEQ_AREA_SIZE_INITIAL; -+ -+ /* Initialize the rseq fields that are read by the kernel on -+ registration, there is no guarantee that struct pthread is -+ cleared on all architectures. */ -+ THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_UNINITIALIZED); -+ THREAD_SETMEM (self, rseq_area.rseq_cs, 0); -+ THREAD_SETMEM (self, rseq_area.flags, 0); -+ - int ret = INTERNAL_SYSCALL_CALL (rseq, &self->rseq_area, - size, 0, RSEQ_SIG); - if (!INTERNAL_SYSCALL_ERROR_P (ret)) - return true; - } -+ /* When rseq is disabled by tunables or the registration fails, inform -+ userspace by setting 'cpu_id' to RSEQ_CPU_ID_REGISTRATION_FAILED. */ - THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); - return false; - } - -commit 091dd12831792cef16eee24fe240c73a25b47a1d -Author: Michael Jeanson -Date: Wed Nov 20 14:15:42 2024 -0500 - - nptl: initialize cpu_id_start prior to rseq registration - - When adding explicit initialization of rseq fields prior to - registration, I glossed over the fact that 'cpu_id_start' is also - documented as initialized by user-space. - - While current kernels don't validate the content of this field on - registration, future ones could. - - Signed-off-by: Michael Jeanson - Reviewed-by: Mathieu Desnoyers - (cherry picked from commit d9f40387d3305d97e30a8cf8724218c42a63680a) - -diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h -index 37a8f630b6..ef3eab1fef 100644 ---- a/sysdeps/unix/sysv/linux/rseq-internal.h -+++ b/sysdeps/unix/sysv/linux/rseq-internal.h -@@ -56,6 +56,7 @@ rseq_register_current_thread (struct pthread *self, bool do_rseq) - registration, there is no guarantee that struct pthread is - cleared on all architectures. */ - THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_UNINITIALIZED); -+ THREAD_SETMEM (self, rseq_area.cpu_id_start, 0); - THREAD_SETMEM (self, rseq_area.rseq_cs, 0); - THREAD_SETMEM (self, rseq_area.flags, 0); - - -commit c6cdab1e01bc11bc4036dc5b1be6086f6259c123 -Author: Sam James -Date: Mon Dec 9 23:11:25 2024 +0000 - - malloc: add indirection for malloc(-like) functions in tests [BZ #32366] - - GCC 15 introduces allocation dead code removal (DCE) for PR117370 in - r15-5255-g7828dc070510f8. This breaks various glibc tests which want - to assert various properties of the allocator without doing anything - obviously useful with the allocated memory. - - Alexander Monakov rightly pointed out that we can and should do better - than passing -fno-malloc-dce to paper over the problem. Not least because - GCC 14 already does such DCE where there's no testing of malloc's return - value against NULL, and LLVM has such optimisations too. - - Handle this by providing malloc (and friends) wrappers with a volatile - function pointer to obscure that we're calling malloc (et. al) from the - compiler. - - Reviewed-by: Paul Eggert - (cherry picked from commit a9944a52c967ce76a5894c30d0274b824df43c7a) - -diff --git a/malloc/tst-aligned-alloc.c b/malloc/tst-aligned-alloc.c -index 91167d1392..b0f05a8fec 100644 ---- a/malloc/tst-aligned-alloc.c -+++ b/malloc/tst-aligned-alloc.c -@@ -25,6 +25,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - static int - do_test (void) - { -diff --git a/malloc/tst-compathooks-off.c b/malloc/tst-compathooks-off.c -index d0106f3fb7..4cce6e5a80 100644 ---- a/malloc/tst-compathooks-off.c -+++ b/malloc/tst-compathooks-off.c -@@ -25,6 +25,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - extern void (*volatile __free_hook) (void *, const void *); - extern void *(*volatile __malloc_hook)(size_t, const void *); - extern void *(*volatile __realloc_hook)(void *, size_t, const void *); -diff --git a/malloc/tst-malloc-aux.h b/malloc/tst-malloc-aux.h -new file mode 100644 -index 0000000000..54908b4a24 ---- /dev/null -+++ b/malloc/tst-malloc-aux.h -@@ -0,0 +1,41 @@ -+/* Wrappers for malloc-like functions to allow testing the implementation -+ without optimization. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public License as -+ published by the Free Software Foundation; either version 2.1 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If -+ not, see . */ -+ -+#ifndef TST_MALLOC_AUX_H -+#define TST_MALLOC_AUX_H -+ -+#include -+#include -+ -+static void *(*volatile aligned_alloc_indirect)(size_t, size_t) = aligned_alloc; -+static void *(*volatile calloc_indirect)(size_t, size_t) = calloc; -+static void *(*volatile malloc_indirect)(size_t) = malloc; -+static void *(*volatile realloc_indirect)(void*, size_t) = realloc; -+ -+#undef aligned_alloc -+#undef calloc -+#undef malloc -+#undef realloc -+ -+#define aligned_alloc aligned_alloc_indirect -+#define calloc calloc_indirect -+#define malloc malloc_indirect -+#define realloc realloc_indirect -+ -+#endif /* TST_MALLOC_AUX_H */ -diff --git a/malloc/tst-malloc-check.c b/malloc/tst-malloc-check.c -index fde8863ad7..cc88bff3b3 100644 ---- a/malloc/tst-malloc-check.c -+++ b/malloc/tst-malloc-check.c -@@ -20,6 +20,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - static int errors = 0; - - static void -diff --git a/malloc/tst-malloc-too-large.c b/malloc/tst-malloc-too-large.c -index 8e9e0d5fa2..2b91377e54 100644 ---- a/malloc/tst-malloc-too-large.c -+++ b/malloc/tst-malloc-too-large.c -@@ -43,6 +43,7 @@ - #include - #include - -+#include "tst-malloc-aux.h" - - /* This function prepares for each 'too-large memory allocation' test by - performing a small successful malloc/free and resetting errno prior to -diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c -index f7a6e4654c..68af399022 100644 ---- a/malloc/tst-malloc.c -+++ b/malloc/tst-malloc.c -@@ -22,6 +22,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - static int errors = 0; - - static void -diff --git a/malloc/tst-realloc.c b/malloc/tst-realloc.c -index f50499ecb1..74a28fb45e 100644 ---- a/malloc/tst-realloc.c -+++ b/malloc/tst-realloc.c -@@ -23,6 +23,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - static int - do_test (void) - { -diff --git a/support/support.h b/support/support.h -index ba21ec9b5a..1a77f79793 100644 ---- a/support/support.h -+++ b/support/support.h -@@ -113,7 +113,7 @@ void *xposix_memalign (size_t alignment, size_t n) - __attribute_malloc__ __attribute_alloc_align__ ((1)) - __attribute_alloc_size__ ((2)) __attr_dealloc_free __returns_nonnull; - char *xasprintf (const char *format, ...) -- __attribute__ ((format (printf, 1, 2), malloc)) __attr_dealloc_free -+ __attribute__ ((format (printf, 1, 2), __malloc__)) __attr_dealloc_free - __returns_nonnull; - char *xstrdup (const char *) __attr_dealloc_free __returns_nonnull; - char *xstrndup (const char *, size_t) __attr_dealloc_free __returns_nonnull; -diff --git a/test-skeleton.c b/test-skeleton.c -index ae185a4f28..690f26e7cf 100644 ---- a/test-skeleton.c -+++ b/test-skeleton.c -@@ -27,7 +27,6 @@ - #include - #include - #include --#include - #include - #include - #include - -commit 846e64257e5fc9b5b723c2eec2b7155ab5944d1f -Author: Adhemerval Zanella -Date: Fri Sep 13 11:10:05 2024 -0300 - - support: Make support_process_state_wait return the found state - - So caller can check which state was found if multiple ones are - asked. - - Checked on x86_64-linux-gnu. - - Reviewed-by: Florian Weimer - (cherry picked from commit 38316352e0f742f3a2b5816a61a4b603cb5573f8) - (cherry picked from commit 2e38c5a090b3a54040b6e508d42e5a76e492c6e8) - -diff --git a/support/process_state.h b/support/process_state.h -index 1cf902e91b..9541d8c343 100644 ---- a/support/process_state.h -+++ b/support/process_state.h -@@ -31,13 +31,16 @@ enum support_process_state - support_process_state_dead = 0x20, /* X (dead). */ - support_process_state_zombie = 0x40, /* Z (zombie). */ - support_process_state_parked = 0x80, /* P (parked). */ -+ support_process_state_invalid = 0x100 /* Invalid state. */ - }; - - /* Wait for process PID to reach state STATE. It can be a combination of - multiple possible states ('process_state_running | process_state_sleeping') - where the function return when any of these state are observed. - For an invalid state not represented by SUPPORT_PROCESS_STATE, it fallbacks -- to a 2 second sleep. */ --void support_process_state_wait (pid_t pid, enum support_process_state state); -+ to a 2 second sleep. -+ Return the found process state. */ -+enum support_process_state -+support_process_state_wait (pid_t pid, enum support_process_state state); - - #endif -diff --git a/support/support_process_state.c b/support/support_process_state.c -index 062335234f..ae8e0a531c 100644 ---- a/support/support_process_state.c -+++ b/support/support_process_state.c -@@ -27,7 +27,7 @@ - #include - #include - --void -+enum support_process_state - support_process_state_wait (pid_t pid, enum support_process_state state) - { - #ifdef __linux__ -@@ -75,7 +75,7 @@ support_process_state_wait (pid_t pid, enum support_process_state state) - { - free (line); - xfclose (fstatus); -- return; -+ return process_states[i].s; - } - - rewind (fstatus); -@@ -90,4 +90,6 @@ support_process_state_wait (pid_t pid, enum support_process_state state) - /* Fallback to nanosleep if an invalid state is found. */ - #endif - nanosleep (&(struct timespec) { 1, 0 }, NULL); -+ -+ return support_process_state_invalid; - } -diff --git a/support/tst-support-process_state.c b/support/tst-support-process_state.c -index d73269320f..4a88eae3a7 100644 ---- a/support/tst-support-process_state.c -+++ b/support/tst-support-process_state.c -@@ -68,28 +68,39 @@ do_test (void) - if (test_verbose) - printf ("info: waiting pid %d, state_stopped/state_tracing_stop\n", - (int) pid); -- support_process_state_wait (pid, stop_state); -+ { -+ enum support_process_state state = -+ support_process_state_wait (pid, stop_state); -+ TEST_VERIFY (state == support_process_state_stopped -+ || state == support_process_state_tracing_stop); -+ } - - if (kill (pid, SIGCONT) != 0) - FAIL_RET ("kill (%d, SIGCONT): %m\n", pid); - - if (test_verbose) - printf ("info: waiting pid %d, state_sleeping\n", (int) pid); -- support_process_state_wait (pid, support_process_state_sleeping); -+ TEST_COMPARE (support_process_state_wait (pid, -+ support_process_state_sleeping), -+ support_process_state_sleeping); - - if (kill (pid, SIGUSR1) != 0) - FAIL_RET ("kill (%d, SIGUSR1): %m\n", pid); - - if (test_verbose) - printf ("info: waiting pid %d, state_running\n", (int) pid); -- support_process_state_wait (pid, support_process_state_running); -+ TEST_COMPARE (support_process_state_wait (pid, -+ support_process_state_running), -+ support_process_state_running); - - if (kill (pid, SIGKILL) != 0) - FAIL_RET ("kill (%d, SIGKILL): %m\n", pid); - - if (test_verbose) - printf ("info: waiting pid %d, state_zombie\n", (int) pid); -- support_process_state_wait (pid, support_process_state_zombie); -+ TEST_COMPARE (support_process_state_wait (pid, -+ support_process_state_zombie), -+ support_process_state_zombie);; - - siginfo_t info; - int r = waitid (P_PID, pid, &info, WEXITED); - -commit 11d9f49cebe64939f50e16a59c9ebefb80a294ab -Author: Adhemerval Zanella -Date: Fri Sep 13 11:11:56 2024 -0300 - - sparc: Fix restartable syscalls (BZ 32173) - - The commit 'sparc: Use Linux kABI for syscall return' - (86c5d2cf0ce046279baddc7faa27da71f1a89fde) did not take into account - a subtle sparc syscall kABI constraint. For syscalls that might block - indefinitely, on an interrupt (like SIGCONT) the kernel will set the - instruction pointer to just before the syscall: - - arch/sparc/kernel/signal_64.c - 476 static void do_signal(struct pt_regs *regs, unsigned long orig_i0) - 477 { - [...] - 525 if (restart_syscall) { - 526 switch (regs->u_regs[UREG_I0]) { - 527 case ERESTARTNOHAND: - 528 case ERESTARTSYS: - 529 case ERESTARTNOINTR: - 530 /* replay the system call when we are done */ - 531 regs->u_regs[UREG_I0] = orig_i0; - 532 regs->tpc -= 4; - 533 regs->tnpc -= 4; - 534 pt_regs_clear_syscall(regs); - 535 fallthrough; - 536 case ERESTART_RESTARTBLOCK: - 537 regs->u_regs[UREG_G1] = __NR_restart_syscall; - 538 regs->tpc -= 4; - 539 regs->tnpc -= 4; - 540 pt_regs_clear_syscall(regs); - 541 } - - However, on a SIGCONT it seems that 'g1' register is being clobbered after the - syscall returns. Before 86c5d2cf0ce046279, the 'g1' was always placed jus - before the 'ta' instruction which then reloads the syscall number and restarts - the syscall. - - On master, where 'g1' might be placed before 'ta': - - $ cat test.c - #include - - int main () - { - pause (); - } - $ gcc test.c -o test - $ strace -f ./t - [...] - ppoll(NULL, 0, NULL, NULL, 0 - - On another terminal - - $ kill -STOP 2262828 - - $ strace -f ./t - [...] - --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- - --- stopped by SIGSTOP --- - - And then - - $ kill -CONT 2262828 - - Results in: - - --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- - restart_syscall(<... resuming interrupted ppoll ...>) = -1 EINTR (Interrupted system call) - - Where the expected behaviour would be: - - $ strace -f ./t - [...] - ppoll(NULL, 0, NULL, NULL, 0) = ? ERESTARTNOHAND (To be restarted if no handler) - --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- - --- stopped by SIGSTOP --- - --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- - ppoll(NULL, 0, NULL, NULL, 0 - - Just moving the 'g1' setting near the syscall asm is not suffice, - the compiler might optimize it away (as I saw on cancellation.c by - trying this fix). Instead, I have change the inline asm to put the - 'g1' setup in ithe asm block. This would require to change the asm - constraint for INTERNAL_SYSCALL_NCS, since the syscall number is not - constant. - - Checked on sparc64-linux-gnu. - - Reported-by: René Rebe - Tested-by: Sam James - Reviewed-by: Sam James - (cherry picked from commit 2c1903cbbac0022153a67776f474c221250ad6ed) - (cherry picked from commit 1cd7e13289b91e1495a1865c1f678196d1bb7be4) - -diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile -index 59998c7af4..34890ef69a 100644 ---- a/sysdeps/unix/sysv/linux/Makefile -+++ b/sysdeps/unix/sysv/linux/Makefile -@@ -227,6 +227,7 @@ tests += \ - tst-scm_rights \ - tst-sigtimedwait \ - tst-sync_file_range \ -+ tst-syscall-restart \ - tst-sysconf-iov_max \ - tst-sysvmsg-linux \ - tst-sysvsem-linux \ -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h -index d2d68f5312..c2ffbb5c8f 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h -+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h -@@ -107,6 +107,7 @@ ENTRY(name); \ - #else /* __ASSEMBLER__ */ - - #define __SYSCALL_STRING \ -+ "mov %[scn], %%g1;" \ - "ta 0x10;" \ - "bcc 1f;" \ - " nop;" \ -@@ -114,7 +115,7 @@ ENTRY(name); \ - "1:" - - #define __SYSCALL_CLOBBERS \ -- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ -+ "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ - "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ - "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \ - "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \ -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h -index 96047424e9..5598fab08a 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h -+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h -@@ -106,6 +106,7 @@ ENTRY(name); \ - #else /* __ASSEMBLER__ */ - - #define __SYSCALL_STRING \ -+ "mov %[scn], %%g1;" \ - "ta 0x6d;" \ - "bcc,pt %%xcc, 1f;" \ - " nop;" \ -@@ -113,7 +114,7 @@ ENTRY(name); \ - "1:" - - #define __SYSCALL_CLOBBERS \ -- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ -+ "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ - "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ - "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \ - "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \ -diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sysdep.h -index dcabb57fe2..c287740a8c 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sysdep.h -+++ b/sysdeps/unix/sysv/linux/sparc/sysdep.h -@@ -50,97 +50,109 @@ - - #undef INTERNAL_SYSCALL_NCS - #define INTERNAL_SYSCALL_NCS(name, nr, args...) \ -- internal_syscall##nr(__SYSCALL_STRING, name, args) -+ _internal_syscall##nr(__SYSCALL_STRING, "p", name, args) - --#define internal_syscall0(string,name,dummy...) \ -+#define _internal_syscall0(string,nc,name,dummy...) \ - ({ \ -- register long int __g1 __asm__ ("g1") = (name); \ - register long __o0 __asm__ ("o0"); \ -+ long int _name = (long int) (name); \ - __asm __volatile (string : "=r" (__o0) : \ -- "r" (__g1) : \ -+ [scn] nc (_name) : \ - __SYSCALL_CLOBBERS); \ - __o0; \ - }) -+#define internal_syscall0(string,name,args...) \ -+ _internal_syscall0(string, "i", name, args) - --#define internal_syscall1(string,name,arg1) \ -+#define _internal_syscall1(string,nc,name,arg1) \ - ({ \ - long int _arg1 = (long int) (arg1); \ -- register long int __g1 __asm__("g1") = (name); \ -+ long int _name = (long int) (name); \ - register long int __o0 __asm__ ("o0") = _arg1; \ -- __asm __volatile (string : "=r" (__o0) : \ -- "r" (__g1), "0" (__o0) : \ -+ __asm __volatile (string : "+r" (__o0) : \ -+ [scn] nc (_name) : \ - __SYSCALL_CLOBBERS); \ - __o0; \ - }) -+#define internal_syscall1(string,name,args...) \ -+ _internal_syscall1(string, "i", name, args) - --#define internal_syscall2(string,name,arg1,arg2) \ -+#define _internal_syscall2(string,nc,name,arg1,arg2) \ - ({ \ - long int _arg1 = (long int) (arg1); \ - long int _arg2 = (long int) (arg2); \ -- register long int __g1 __asm__("g1") = (name); \ -+ long int _name = (long int) (name); \ - register long int __o0 __asm__ ("o0") = _arg1; \ - register long int __o1 __asm__ ("o1") = _arg2; \ -- __asm __volatile (string : "=r" (__o0) : \ -- "r" (__g1), "0" (__o0), "r" (__o1) : \ -+ __asm __volatile (string : "+r" (__o0) : \ -+ [scn] nc (_name), "r" (__o1) : \ - __SYSCALL_CLOBBERS); \ - __o0; \ - }) -+#define internal_syscall2(string,name,args...) \ -+ _internal_syscall2(string, "i", name, args) - --#define internal_syscall3(string,name,arg1,arg2,arg3) \ -+#define _internal_syscall3(string,nc,name,arg1,arg2,arg3) \ - ({ \ - long int _arg1 = (long int) (arg1); \ - long int _arg2 = (long int) (arg2); \ - long int _arg3 = (long int) (arg3); \ -- register long int __g1 __asm__("g1") = (name); \ -+ long int _name = (long int) (name); \ - register long int __o0 __asm__ ("o0") = _arg1; \ - register long int __o1 __asm__ ("o1") = _arg2; \ - register long int __o2 __asm__ ("o2") = _arg3; \ -- __asm __volatile (string : "=r" (__o0) : \ -- "r" (__g1), "0" (__o0), "r" (__o1), \ -+ __asm __volatile (string : "+r" (__o0) : \ -+ [scn] nc (_name), "r" (__o1), \ - "r" (__o2) : \ - __SYSCALL_CLOBBERS); \ - __o0; \ - }) -+#define internal_syscall3(string,name,args...) \ -+ _internal_syscall3(string, "i", name, args) - --#define internal_syscall4(string,name,arg1,arg2,arg3,arg4) \ -+#define _internal_syscall4(string,nc,name,arg1,arg2,arg3,arg4) \ - ({ \ - long int _arg1 = (long int) (arg1); \ - long int _arg2 = (long int) (arg2); \ - long int _arg3 = (long int) (arg3); \ - long int _arg4 = (long int) (arg4); \ -- register long int __g1 __asm__("g1") = (name); \ -+ long int _name = (long int) (name); \ - register long int __o0 __asm__ ("o0") = _arg1; \ - register long int __o1 __asm__ ("o1") = _arg2; \ - register long int __o2 __asm__ ("o2") = _arg3; \ - register long int __o3 __asm__ ("o3") = _arg4; \ -- __asm __volatile (string : "=r" (__o0) : \ -- "r" (__g1), "0" (__o0), "r" (__o1), \ -+ __asm __volatile (string : "+r" (__o0) : \ -+ [scn] nc (_name), "r" (__o1), \ - "r" (__o2), "r" (__o3) : \ - __SYSCALL_CLOBBERS); \ - __o0; \ - }) -+#define internal_syscall4(string,name,args...) \ -+ _internal_syscall4(string, "i", name, args) - --#define internal_syscall5(string,name,arg1,arg2,arg3,arg4,arg5) \ -+#define _internal_syscall5(string,nc,name,arg1,arg2,arg3,arg4,arg5) \ - ({ \ - long int _arg1 = (long int) (arg1); \ - long int _arg2 = (long int) (arg2); \ - long int _arg3 = (long int) (arg3); \ - long int _arg4 = (long int) (arg4); \ - long int _arg5 = (long int) (arg5); \ -- register long int __g1 __asm__("g1") = (name); \ -+ long int _name = (long int) (name); \ - register long int __o0 __asm__ ("o0") = _arg1; \ - register long int __o1 __asm__ ("o1") = _arg2; \ - register long int __o2 __asm__ ("o2") = _arg3; \ - register long int __o3 __asm__ ("o3") = _arg4; \ - register long int __o4 __asm__ ("o4") = _arg5; \ -- __asm __volatile (string : "=r" (__o0) : \ -- "r" (__g1), "0" (__o0), "r" (__o1), \ -+ __asm __volatile (string : "+r" (__o0) : \ -+ [scn] nc (_name), "r" (__o1), \ - "r" (__o2), "r" (__o3), "r" (__o4) : \ - __SYSCALL_CLOBBERS); \ - __o0; \ - }) -+#define internal_syscall5(string,name,args...) \ -+ _internal_syscall5(string, "i", name, args) - --#define internal_syscall6(string,name,arg1,arg2,arg3,arg4,arg5,arg6) \ -+#define _internal_syscall6(string,nc,name,arg1,arg2,arg3,arg4,arg5,arg6)\ - ({ \ - long int _arg1 = (long int) (arg1); \ - long int _arg2 = (long int) (arg2); \ -@@ -148,20 +160,22 @@ - long int _arg4 = (long int) (arg4); \ - long int _arg5 = (long int) (arg5); \ - long int _arg6 = (long int) (arg6); \ -- register long int __g1 __asm__("g1") = (name); \ -+ long int _name = (long int) (name); \ - register long int __o0 __asm__ ("o0") = _arg1; \ - register long int __o1 __asm__ ("o1") = _arg2; \ - register long int __o2 __asm__ ("o2") = _arg3; \ - register long int __o3 __asm__ ("o3") = _arg4; \ - register long int __o4 __asm__ ("o4") = _arg5; \ - register long int __o5 __asm__ ("o5") = _arg6; \ -- __asm __volatile (string : "=r" (__o0) : \ -- "r" (__g1), "0" (__o0), "r" (__o1), \ -+ __asm __volatile (string : "+r" (__o0) : \ -+ [scn] nc (_name), "r" (__o1), \ - "r" (__o2), "r" (__o3), "r" (__o4), \ - "r" (__o5) : \ - __SYSCALL_CLOBBERS); \ - __o0; \ - }) -+#define internal_syscall6(string,name,args...) \ -+ _internal_syscall6(string, "i", name, args) - - #define INLINE_CLONE_SYSCALL(arg1,arg2,arg3,arg4,arg5) \ - ({ \ -@@ -170,15 +184,15 @@ - long int _arg3 = (long int) (arg3); \ - long int _arg4 = (long int) (arg4); \ - long int _arg5 = (long int) (arg5); \ -+ long int _name = __NR_clone; \ - register long int __o0 __asm__ ("o0") = _arg1; \ - register long int __o1 __asm__ ("o1") = _arg2; \ - register long int __o2 __asm__ ("o2") = _arg3; \ - register long int __o3 __asm__ ("o3") = _arg4; \ - register long int __o4 __asm__ ("o4") = _arg5; \ -- register long int __g1 __asm__ ("g1") = __NR_clone; \ - __asm __volatile (__SYSCALL_STRING : \ - "=r" (__o0), "=r" (__o1) : \ -- "r" (__g1), "0" (__o0), "1" (__o1), \ -+ [scn] "i" (_name), "0" (__o0), "1" (__o1), \ - "r" (__o2), "r" (__o3), "r" (__o4) : \ - __SYSCALL_CLOBBERS); \ - if (__glibc_unlikely ((unsigned long int) (__o0) > -4096UL)) \ -diff --git a/sysdeps/unix/sysv/linux/tst-syscall-restart.c b/sysdeps/unix/sysv/linux/tst-syscall-restart.c -new file mode 100644 -index 0000000000..84a8a41b5c ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/tst-syscall-restart.c -@@ -0,0 +1,112 @@ -+/* Test if a syscall is correctly restarted. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+check_pid (pid_t pid) -+{ -+ /* Wait until the child has called pause and it blocking on kernel. */ -+ support_process_state_wait (pid, support_process_state_sleeping); -+ -+ TEST_COMPARE (kill (pid, SIGSTOP), 0); -+ -+ /* Adding process_state_tracing_stop ('t') allows the test to work under -+ trace programs such as ptrace. */ -+ support_process_state_wait (pid, support_process_state_stopped -+ | support_process_state_tracing_stop); -+ -+ TEST_COMPARE (kill (pid, SIGCONT), 0); -+ -+ enum support_process_state state -+ = support_process_state_wait (pid, support_process_state_sleeping -+ | support_process_state_zombie); -+ -+ TEST_COMPARE (state, support_process_state_sleeping); -+ -+ TEST_COMPARE (kill (pid, SIGTERM), 0); -+ -+ siginfo_t info; -+ TEST_COMPARE (waitid (P_PID, pid, &info, WEXITED), 0); -+ TEST_COMPARE (info.si_signo, SIGCHLD); -+ TEST_COMPARE (info.si_code, CLD_KILLED); -+ TEST_COMPARE (info.si_status, SIGTERM); -+ TEST_COMPARE (info.si_pid, pid); -+ -+ return 0; -+} -+ -+static void * -+tf (void *) -+{ -+ pause (); -+ return NULL; -+} -+ -+static void -+child_mt (void) -+{ -+ /* Let only the created thread to handle signals. */ -+ sigset_t set; -+ sigfillset (&set); -+ xpthread_sigmask (SIG_BLOCK, &set, NULL); -+ -+ sigdelset (&set, SIGSTOP); -+ sigdelset (&set, SIGCONT); -+ sigdelset (&set, SIGTERM); -+ -+ pthread_attr_t attr; -+ xpthread_attr_init (&attr); -+ TEST_COMPARE (pthread_attr_setsigmask_np (&attr, &set), 0); -+ -+ xpthread_join (xpthread_create (&attr, tf, NULL)); -+} -+ -+static void -+do_test_syscall (bool multithread) -+{ -+ pid_t pid = xfork (); -+ if (pid == 0) -+ { -+ if (multithread) -+ child_mt (); -+ else -+ pause (); -+ _exit (127); -+ } -+ -+ check_pid (pid); -+} -+ -+static int -+do_test (void) -+{ -+ /* Check for both single and multi thread, since they use different syscall -+ mechanisms. */ -+ do_test_syscall (false); -+ do_test_syscall (true); -+ -+ return 0; -+} -+ -+#include - -commit 9af64ca64c532b7e42a40b48fe5e01726a9b7943 -Author: H.J. Lu -Date: Thu Dec 5 08:39:44 2024 +0800 - - math: Exclude internal math symbols for tests [BZ #32414] - - Since internal tests don't have access to internal symbols in libm, - exclude them for internal tests. Also make tst-strtod5 and tst-strtod5i - depend on $(libm) to support older versions of GCC which can't inline - copysign family functions. This fixes BZ #32414. - - Signed-off-by: H.J. Lu - Reviewed-by: Sunil K Pandey - (cherry picked from commit 5df09b444835fca6e64b3d4b4a5beb19b3b2ba21) - -diff --git a/include/math.h b/include/math.h -index fa11a710a6..035fd160ff 100644 ---- a/include/math.h -+++ b/include/math.h -@@ -130,7 +130,10 @@ fabsf128 (_Float128 x) - } - # endif - --# if !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0) -+ -+/* NB: Internal tests don't have access to internal symbols. */ -+# if !IS_IN (testsuite_internal) \ -+ && !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0) - # ifndef NO_MATH_REDIRECT - /* Declare some functions for use within GLIBC. Compilers typically - inline those functions as a single instruction. Use an asm to -diff --git a/stdlib/Makefile b/stdlib/Makefile -index 8b0ac63ddb..8213fa83ef 100644 ---- a/stdlib/Makefile -+++ b/stdlib/Makefile -@@ -603,6 +603,8 @@ $(objpfx)bug-strtod2: $(libm) - $(objpfx)tst-strtod-round: $(libm) - $(objpfx)tst-tininess: $(libm) - $(objpfx)tst-strtod-underflow: $(libm) -+$(objpfx)tst-strtod5: $(libm) -+$(objpfx)tst-strtod5i: $(libm) - $(objpfx)tst-strtod6: $(libm) - $(objpfx)tst-strtod-nan-locale: $(libm) - $(objpfx)tst-strtod-nan-sign: $(libm) - -commit 0b39fe801208e805cc911f64a2fdd25d04b7151e -Author: Adhemerval Zanella -Date: Fri Oct 18 08:48:22 2024 -0300 - - linux: Fix tst-syscall-restart.c on old gcc (BZ 32283) - - To avoid a parameter name omitted error. - - (cherry picked from commit ab564362d0470d10947c24155ec048c4e14a009d) - -diff --git a/sysdeps/unix/sysv/linux/tst-syscall-restart.c b/sysdeps/unix/sysv/linux/tst-syscall-restart.c -index 84a8a41b5c..0ee7dc8517 100644 ---- a/sysdeps/unix/sysv/linux/tst-syscall-restart.c -+++ b/sysdeps/unix/sysv/linux/tst-syscall-restart.c -@@ -57,7 +57,7 @@ check_pid (pid_t pid) - } - - static void * --tf (void *) -+tf (void *closure) - { - pause (); - return NULL; - -commit 94e4a8c7d68129075f1b494a0b26151a4f989b36 -Author: Florian Weimer -Date: Tue Dec 17 18:12:03 2024 +0100 - - x86: Avoid integer truncation with large cache sizes (bug 32470) - - Some hypervisors report 1 TiB L3 cache size. This results - in some variables incorrectly getting zeroed, causing crashes - in memcpy/memmove because invariants are violated. - - (cherry picked from commit 61c3450db96dce96ad2b24b4f0b548e6a46d68e5) - -diff --git a/NEWS b/NEWS -index bd0b3bd66a..97a1e1f5d4 100644 ---- a/NEWS -+++ b/NEWS -@@ -20,6 +20,7 @@ The following bugs are resolved with this release: - [32137] libio: Attempt wide backup free only for non-legacy code - [32231] elf: Change ldconfig auxcache magic number - [32245] glibc -Wstringop-overflow= build failure on hppa -+ [32470] x86: Avoid integer truncation with large cache sizes - - Version 2.40 - -diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h -index a1c03b8903..ac97414b5b 100644 ---- a/sysdeps/x86/dl-cacheinfo.h -+++ b/sysdeps/x86/dl-cacheinfo.h -@@ -961,11 +961,11 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - non_temporal_threshold = maximum_non_temporal_threshold; - - /* NB: The REP MOVSB threshold must be greater than VEC_SIZE * 8. */ -- unsigned int minimum_rep_movsb_threshold; -+ unsigned long int minimum_rep_movsb_threshold; - /* NB: The default REP MOVSB threshold is 4096 * (VEC_SIZE / 16) for - VEC_SIZE == 64 or 32. For VEC_SIZE == 16, the default REP MOVSB - threshold is 2048 * (VEC_SIZE / 16). */ -- unsigned int rep_movsb_threshold; -+ unsigned long int rep_movsb_threshold; - if (CPU_FEATURE_USABLE_P (cpu_features, AVX512F) - && !CPU_FEATURE_PREFERRED_P (cpu_features, Prefer_No_AVX512)) - { - -commit 9fbfbd924f718663d5303858f34d1f857c375093 -Author: John David Anglin -Date: Thu Dec 19 11:30:09 2024 -0500 - - hppa: Fix strace detach-vfork test - - This change implements vfork.S for direct support of the vfork - syscall. clone.S is revised to correct child support for the - vfork case. - - The main bug was creating a frame prior to the clone syscall. - This was done to allow the rp and r4 registers to be saved and - restored from the stack frame. r4 was used to save and restore - the PIC register, r19, across the system call and the call to - set errno. But in the vfork case, it is undefined behavior - for the child to return from the function in which vfork was - called. It is surprising that this usually worked. - - Syscalls on hppa save and restore rp and r19, so we don't need - to create a frame prior to the clone syscall. We only need a - frame when __syscall_error is called. We also don't need to - save and restore r19 around the call to $$dyncall as r19 is not - used in the code after $$dyncall. - - This considerably simplifies clone.S. - - Signed-off-by: John David Anglin - -diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S -index a31afea429..c18163d0f7 100644 ---- a/sysdeps/unix/sysv/linux/hppa/clone.S -+++ b/sysdeps/unix/sysv/linux/hppa/clone.S -@@ -59,16 +59,6 @@ - - .text - ENTRY(__clone) -- /* Prologue */ -- stwm %r4, 64(%sp) -- .cfi_def_cfa_offset -64 -- .cfi_offset 4, 0 -- stw %sp, -4(%sp) --#ifdef PIC -- stw %r19, -32(%sp) -- .cfi_offset 19, 32 --#endif -- - /* Sanity check arguments. */ - comib,=,n 0,%arg0,.LerrorSanity /* no NULL function pointers */ - comib,=,n 0,%arg1,.LerrorSanity /* no NULL stack pointers */ -@@ -87,54 +77,34 @@ ENTRY(__clone) - /* User stack pointer is in the correct register already */ - - /* Load args from stack... */ -- ldw -116(%sp), %r24 /* Load parent_tidptr */ -- ldw -120(%sp), %r23 /* Load newtls */ -- ldw -124(%sp), %r22 /* Load child_tidptr */ -- -- /* Save the PIC register. */ --#ifdef PIC -- copy %r19, %r4 /* parent */ --#endif -+ ldw -52(%sp), %r24 /* Load parent_tidptr */ -+ ldw -56(%sp), %r23 /* Load newtls */ -+ ldw -60(%sp), %r22 /* Load child_tidptr */ - - /* Do the system call */ - ble 0x100(%sr2, %r0) - ldi __NR_clone, %r20 - - ldi -4096, %r1 -- comclr,>>= %r1, %ret0, %r0 /* Note: unsigned compare. */ -- b,n .LerrorRest -- -- /* Restore the PIC register. */ --#ifdef PIC -- copy %r4, %r19 /* parent */ --#endif -- -+ comb,<<,n %r1, %ret0, .LerrorRest /* Note: unsigned compare. */ - comib,=,n 0, %ret0, .LthreadStart -- -- /* Successful return from the parent -- No need to restore the PIC register, -- since we return immediately. */ -- -- ldw -84(%sp), %rp -- bv %r0(%rp) -- ldwm -64(%sp), %r4 -+ bv,n %r0(%rp) - - .LerrorRest: -- /* Something bad happened -- no child created */ -+ /* Something bad happened -- no child created -- need a frame */ -+ ldo 64(%sp),%sp -+ .cfi_def_cfa_offset -64 - bl __syscall_error, %rp - sub %r0, %ret0, %arg0 - ldw -84(%sp), %rp - /* Return after setting errno, ret0 is set to -1 by __syscall_error. */ - bv %r0(%rp) -- ldwm -64(%sp), %r4 -+ ldo -64(%sp), %sp - - .LerrorSanity: - /* Sanity checks failed, return -1, and set errno to EINVAL. */ -- bl __syscall_error, %rp -- ldi EINVAL, %arg0 -- ldw -84(%sp), %rp -- bv %r0(%rp) -- ldwm -64(%sp), %r4 -+ b .LerrorRest -+ ldi -EINVAL, %ret0 - - .LthreadStart: - /* Load up the arguments. */ -@@ -144,14 +114,8 @@ ENTRY(__clone) - /* $$dyncall fixes child's PIC register */ - - /* Call the user's function */ --#ifdef PIC -- copy %r19, %r4 --#endif - bl $$dyncall, %r31 - copy %r31, %rp --#ifdef PIC -- copy %r4, %r19 --#endif - copy %r28, %r26 - ble 0x100(%sr2, %r0) - ldi __NR_exit, %r20 -diff --git a/sysdeps/unix/sysv/linux/hppa/vfork.S b/sysdeps/unix/sysv/linux/hppa/vfork.S -new file mode 100644 -index 0000000000..5fd368f3cf ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/hppa/vfork.S -@@ -0,0 +1,53 @@ -+/* Copyright (C) 1999-2024 Free Software Foundation, Inc. -+ -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public License as -+ published by the Free Software Foundation; either version 2.1 of the -+ License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#define _ERRNO_H 1 -+#include -+ -+/* Clone the calling process, but without copying the whole address space. -+ The calling process is suspended until the new process exits or is -+ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, -+ and the process ID of the new process to the old process. */ -+ -+ENTRY (__vfork) -+ ble 0x100(%sr2, %r0) -+ ldi __NR_vfork, %r20 -+ -+ ldi -4096, %r1 -+ comclr,<< %r1, %ret0, %r0 /* Note: unsigned compare. */ -+ bv,n %r0(%rp) -+ -+ /* Something bad happened -- no child created -- we need a frame */ -+ ldo 64(%sp), %sp -+ .cfi_def_cfa_offset -64 -+ -+ /* Set errno */ -+ bl __syscall_error, %rp -+ sub %r0, %ret0, %arg0 -+ -+ /* ret0 is set to -1 by __syscall_error */ -+ ldw -84(%sp), %rp -+ bv %r0(%rp) -+ ldo -64(%sp), %sp -+ -+PSEUDO_END (__vfork) -+libc_hidden_def (__vfork) -+ -+weak_alias (__vfork, vfork) -+strong_alias (__vfork, __libc_vfork) - -commit 7648e3c8e80b3f1b3b43506b2fbe370e4824ab97 -Author: John David Anglin -Date: Sun Dec 22 09:58:02 2024 -0500 - - hppa: Simplify handling of sanity check errors in clone.S. - - This simplifies the handling of sanity check errors in clone.S. - Adjusted a couple of comments to reflect current code. - - Signed-off-by: John David Anglin - -diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S -index c18163d0f7..e85e7f517f 100644 ---- a/sysdeps/unix/sysv/linux/hppa/clone.S -+++ b/sysdeps/unix/sysv/linux/hppa/clone.S -@@ -90,6 +90,10 @@ ENTRY(__clone) - comib,=,n 0, %ret0, .LthreadStart - bv,n %r0(%rp) - -+.LerrorSanity: -+ /* Sanity checks failed, set errno to EINVAL. */ -+ ldi -EINVAL, %ret0 -+ - .LerrorRest: - /* Something bad happened -- no child created -- need a frame */ - ldo 64(%sp),%sp -@@ -101,11 +105,6 @@ ENTRY(__clone) - bv %r0(%rp) - ldo -64(%sp), %sp - --.LerrorSanity: -- /* Sanity checks failed, return -1, and set errno to EINVAL. */ -- b .LerrorRest -- ldi -EINVAL, %ret0 -- - .LthreadStart: - /* Load up the arguments. */ - ldw -60(%sp), %arg0 -@@ -121,7 +120,7 @@ ENTRY(__clone) - ldi __NR_exit, %r20 - - /* We should not return from exit. -- We do not restore r4, or the stack state. */ -+ We do not restore the stack state. */ - iitlbp %r0, (%sr0, %r0) - - PSEUDO_END(__clone) - -commit 473597d8167f86afee3544215db108b170ec13c0 -Author: Andreas Schwab -Date: Wed Sep 25 11:49:30 2024 +0200 - - Fix missing randomness in __gen_tempname (bug 32214) - - Make sure to update the random value also if getrandom fails. - - Fixes: 686d542025 ("posix: Sync tempname with gnulib") - (cherry picked from commit 5f62cf88c4530c11904482775b7582bd7f6d80d2) - -diff --git a/NEWS b/NEWS -index 97a1e1f5d4..57feba81cd 100644 ---- a/NEWS -+++ b/NEWS -@@ -18,6 +18,7 @@ The following bugs are resolved with this release: - [32026] strerror/strsignal TLS not handled correctly for secondary namespaces - [32052] Name space violation in fortify wrappers - [32137] libio: Attempt wide backup free only for non-legacy code -+ [32214] Fix missing randomness in __gen_tempname - [32231] elf: Change ldconfig auxcache magic number - [32245] glibc -Wstringop-overflow= build failure on hppa - [32470] x86: Avoid integer truncation with large cache sizes -diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c -index c00fe0c181..fc30958a0c 100644 ---- a/sysdeps/posix/tempname.c -+++ b/sysdeps/posix/tempname.c -@@ -117,6 +117,8 @@ random_bits (random_value *r, random_value s) - succeed. */ - #if !_LIBC - *r = mix_random_values (v, clock ()); -+#else -+ *r = v; - #endif - return false; - } - -commit 7d4b6bcae91f29d7b4daf15bab06b66cf1d2217c -Author: Siddhesh Poyarekar -Date: Tue Jan 21 16:11:06 2025 -0500 - - Fix underallocation of abort_msg_s struct (CVE-2025-0395) - - Include the space needed to store the length of the message itself, in - addition to the message string. This resolves BZ #32582. - - Signed-off-by: Siddhesh Poyarekar - Reviewed: Adhemerval Zanella - (cherry picked from commit 68ee0f704cb81e9ad0a78c644a83e1e9cd2ee578) - -diff --git a/assert/assert.c b/assert/assert.c -index c29629f5f6..b6e37d694c 100644 ---- a/assert/assert.c -+++ b/assert/assert.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -65,7 +66,8 @@ __assert_fail_base (const char *fmt, const char *assertion, const char *file, - (void) __fxprintf (NULL, "%s", str); - (void) fflush (stderr); - -- total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); -+ total = ALIGN_UP (total + sizeof (struct abort_msg_s) + 1, -+ GLRO(dl_pagesize)); - struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE, - MAP_ANON | MAP_PRIVATE, -1, 0); - if (__glibc_likely (buf != MAP_FAILED)) -diff --git a/sysdeps/posix/libc_fatal.c b/sysdeps/posix/libc_fatal.c -index f9e3425e04..089c47b04b 100644 ---- a/sysdeps/posix/libc_fatal.c -+++ b/sysdeps/posix/libc_fatal.c -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -105,7 +106,8 @@ __libc_message_impl (const char *fmt, ...) - { - WRITEV_FOR_FATAL (fd, iov, iovcnt, total); - -- total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); -+ total = ALIGN_UP (total + sizeof (struct abort_msg_s) + 1, -+ GLRO(dl_pagesize)); - struct abort_msg_s *buf = __mmap (NULL, total, - PROT_READ | PROT_WRITE, - MAP_ANON | MAP_PRIVATE, -1, 0); - -commit aef8f8d6a947b290162393e1d717c7aee96fef8e -Author: H.J. Lu -Date: Tue Dec 17 18:41:45 2024 +0800 - - Hide all malloc functions from compiler [BZ #32366] - - Since -1 isn't a power of two, compiler may reject it, hide memalign from - Clang 19 which issues an error: - - tst-memalign.c:86:31: error: requested alignment is not a power of 2 [-Werror,-Wnon-power-of-two-alignment] - 86 | p = memalign (-1, pagesize); - | ^~ - tst-memalign.c:86:31: error: requested alignment must be 4294967296 bytes or smaller; maximum alignment assumed [-Werror,-Wbuiltin-assume-aligned-alignment] - 86 | p = memalign (-1, pagesize); - | ^~ - - Update tst-malloc-aux.h to hide all malloc functions and include it in - all malloc tests to prevent compiler from optimizing out any malloc - functions. - - Tested with Clang 19.1.5 and GCC 15 20241206 for BZ #32366. - - Signed-off-by: H.J. Lu - Reviewed-by: Sam James - (cherry picked from commit f9493a15ea9cfb63a815c00c23142369ec09d8ce) - -diff --git a/malloc/tst-mallinfo2.c b/malloc/tst-mallinfo2.c -index 2c02f5f700..f072b9f24b 100644 ---- a/malloc/tst-mallinfo2.c -+++ b/malloc/tst-mallinfo2.c -@@ -23,6 +23,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - /* This is not specifically needed for the test, but (1) does - something to the data so gcc doesn't optimize it away, and (2) may - help when developing future tests. */ -diff --git a/malloc/tst-malloc-aux.h b/malloc/tst-malloc-aux.h -index 54908b4a24..3e1b61ce34 100644 ---- a/malloc/tst-malloc-aux.h -+++ b/malloc/tst-malloc-aux.h -@@ -22,20 +22,35 @@ - - #include - #include -- --static void *(*volatile aligned_alloc_indirect)(size_t, size_t) = aligned_alloc; --static void *(*volatile calloc_indirect)(size_t, size_t) = calloc; --static void *(*volatile malloc_indirect)(size_t) = malloc; --static void *(*volatile realloc_indirect)(void*, size_t) = realloc; -+#include -+ -+static __typeof (aligned_alloc) * volatile aligned_alloc_indirect -+ = aligned_alloc; -+static __typeof (calloc) * volatile calloc_indirect = calloc; -+static __typeof (malloc) * volatile malloc_indirect = malloc; -+static __typeof (memalign) * volatile memalign_indirect = memalign; -+static __typeof (posix_memalign) * volatile posix_memalign_indirect -+ = posix_memalign; -+static __typeof (pvalloc) * volatile pvalloc_indirect = pvalloc; -+static __typeof (realloc) * volatile realloc_indirect = realloc; -+static __typeof (valloc) * volatile valloc_indirect = valloc; - - #undef aligned_alloc - #undef calloc - #undef malloc -+#undef memalign -+#undef posix_memalign -+#undef pvalloc - #undef realloc -+#undef valloc - - #define aligned_alloc aligned_alloc_indirect - #define calloc calloc_indirect - #define malloc malloc_indirect -+#define memalign memalign_indirect -+#define posix_memalign posix_memalign_indirect -+#define pvalloc pvalloc_indirect - #define realloc realloc_indirect -+#define valloc valloc_indirect - - #endif /* TST_MALLOC_AUX_H */ -diff --git a/malloc/tst-malloc-backtrace.c b/malloc/tst-malloc-backtrace.c -index c7b1d65e5c..65fa91f6fd 100644 ---- a/malloc/tst-malloc-backtrace.c -+++ b/malloc/tst-malloc-backtrace.c -@@ -22,6 +22,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - #define SIZE 4096 - - /* Wrap free with a function to prevent gcc from optimizing it out. */ -diff --git a/malloc/tst-memalign.c b/malloc/tst-memalign.c -index 563f6413d2..ac9770d3f9 100644 ---- a/malloc/tst-memalign.c -+++ b/malloc/tst-memalign.c -@@ -23,6 +23,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - static int errors = 0; - - static void -diff --git a/malloc/tst-safe-linking.c b/malloc/tst-safe-linking.c -index 01dd07004d..63a7e2bc8e 100644 ---- a/malloc/tst-safe-linking.c -+++ b/malloc/tst-safe-linking.c -@@ -26,6 +26,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - /* Run CALLBACK and check that the data on standard error equals - EXPECTED. */ - static void -diff --git a/malloc/tst-valloc.c b/malloc/tst-valloc.c -index 9bab8c6470..0243d3dfd4 100644 ---- a/malloc/tst-valloc.c -+++ b/malloc/tst-valloc.c -@@ -23,6 +23,8 @@ - #include - #include - -+#include "tst-malloc-aux.h" -+ - static int errors = 0; - - static void - -commit be48b8f6ad0ec6d0d6b1d2f45eb59bf8e8c67dd7 -Author: Sam James -Date: Fri Jan 10 03:03:47 2025 +0000 - - malloc: obscure calloc use in tst-calloc - - Similar to a9944a52c967ce76a5894c30d0274b824df43c7a and - f9493a15ea9cfb63a815c00c23142369ec09d8ce, we need to hide calloc use from - the compiler to accommodate GCC's r15-6566-g804e9d55d9e54c change. - - First, include tst-malloc-aux.h, but then use `volatile` variables - for size. - - The test passes without the tst-malloc-aux.h change but IMO we want - it there for consistency and to avoid future problems (possibly silent). - - Reviewed-by: H.J. Lu - (cherry picked from commit c3d1dac96bdd10250aa37bb367d5ef8334a093a1) - -diff --git a/malloc/tst-calloc.c b/malloc/tst-calloc.c -index 01f17f9e65..5a8c7ab121 100644 ---- a/malloc/tst-calloc.c -+++ b/malloc/tst-calloc.c -@@ -23,6 +23,7 @@ - #include - #include - -+#include "tst-malloc-aux.h" - - /* Number of samples per size. */ - #define N 50000 -@@ -94,16 +95,19 @@ random_test (void) - static void - null_test (void) - { -+ /* Obscure allocation size from the compiler. */ -+ volatile size_t max_size = UINT_MAX; -+ volatile size_t zero_size = 0; - /* If the size is 0 the result is implementation defined. Just make - sure the program doesn't crash. The result of calloc is - deliberately ignored, so do not warn about that. */ - DIAG_PUSH_NEEDS_COMMENT; - DIAG_IGNORE_NEEDS_COMMENT (10, "-Wunused-result"); - calloc (0, 0); -- calloc (0, UINT_MAX); -- calloc (UINT_MAX, 0); -- calloc (0, ~((size_t) 0)); -- calloc (~((size_t) 0), 0); -+ calloc (0, max_size); -+ calloc (max_size, 0); -+ calloc (0, ~((size_t) zero_size)); -+ calloc (~((size_t) zero_size), 0); - DIAG_POP_NEEDS_COMMENT; - } - - -commit 85668221974db44459527e04d04f77ca8f8e3115 -Author: H.J. Lu -Date: Fri Jan 24 18:53:13 2025 +0800 - - stdlib: Test using setenv with updated environ [BZ #32588] - - Add a test for setenv with updated environ. Verify that BZ #32588 is - fixed. - - Signed-off-by: H.J. Lu - Reviewed-by: Florian Weimer - (cherry picked from commit 8ab34497de14e35aff09b607222fe1309ef156da) - -diff --git a/stdlib/Makefile b/stdlib/Makefile -index 8213fa83ef..d3a84fa641 100644 ---- a/stdlib/Makefile -+++ b/stdlib/Makefile -@@ -307,6 +307,7 @@ tests := \ - tst-setcontext9 \ - tst-setcontext10 \ - tst-setcontext11 \ -+ tst-setenv-environ \ - tst-stdbit-Wconversion \ - tst-stdbit-builtins \ - tst-stdc_bit_ceil \ -diff --git a/stdlib/tst-setenv-environ.c b/stdlib/tst-setenv-environ.c -new file mode 100644 -index 0000000000..02fcef96d0 ---- /dev/null -+++ b/stdlib/tst-setenv-environ.c -@@ -0,0 +1,36 @@ -+/* Test using setenv with updated environ. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+ -+extern char **environ; -+ -+int -+do_test (void) -+{ -+ char *valp; -+ static char *dummy_environ[] = { NULL }; -+ environ = dummy_environ; -+ setenv ("A", "1", 0); -+ valp = getenv ("A"); -+ TEST_VERIFY_EXIT (valp[0] == '1' && valp[1] == '\0'); -+ return 0; -+} -+ -+#include - -commit e899ca3651f8c5e01bf3420cfb34aad97d093f74 -Author: John David Anglin -Date: Wed Jan 29 16:51:16 2025 -0500 - - nptl: Correct stack size attribute when stack grows up [BZ #32574] - - Set stack size attribute to the size of the mmap'd region only - when the size of the remaining stack space is less than the size - of the mmap'd region. - - This was reversed. As a result, the initial stack size was only - 135168 bytes. On architectures where the stack grows down, the - initial stack size is approximately 8384512 bytes with the default - rlimit settings. The small main stack size on hppa broke - applications like ruby that check for stack overflows. - - Signed-off-by: John David Anglin - -diff --git a/nptl/pthread_getattr_np.c b/nptl/pthread_getattr_np.c -index 1e91874767..3ce34437bc 100644 ---- a/nptl/pthread_getattr_np.c -+++ b/nptl/pthread_getattr_np.c -@@ -145,9 +145,9 @@ __pthread_getattr_np (pthread_t thread_id, pthread_attr_t *attr) - > (size_t) iattr->stackaddr - last_to) - iattr->stacksize = (size_t) iattr->stackaddr - last_to; - #else -- /* The limit might be too high. */ -+ /* The limit might be too low. */ - if ((size_t) iattr->stacksize -- > to - (size_t) iattr->stackaddr) -+ < to - (size_t) iattr->stackaddr) - iattr->stacksize = to - (size_t) iattr->stackaddr; - #endif - /* We succeed and no need to look further. */ - -commit d6c156c326999f144cb5b73d29982108d549ad8a -Author: Siddhesh Poyarekar -Date: Fri Jan 31 12:16:30 2025 -0500 - - assert: Add test for CVE-2025-0395 - - Use the __progname symbol to override the program name to induce the - failure that CVE-2025-0395 describes. - - This is related to BZ #32582 - - Signed-off-by: Siddhesh Poyarekar - Reviewed-by: Adhemerval Zanella - (cherry picked from commit cdb9ba84191ce72e86346fb8b1d906e7cd930ea2) - -diff --git a/assert/Makefile b/assert/Makefile -index 35dc908ddb..c0fe660bd6 100644 ---- a/assert/Makefile -+++ b/assert/Makefile -@@ -38,6 +38,7 @@ tests := \ - test-assert-perr \ - tst-assert-c++ \ - tst-assert-g++ \ -+ tst-assert-sa-2025-0001 \ - # tests - - ifeq ($(have-cxx-thread_local),yes) -diff --git a/assert/tst-assert-sa-2025-0001.c b/assert/tst-assert-sa-2025-0001.c -new file mode 100644 -index 0000000000..102cb0078d ---- /dev/null -+++ b/assert/tst-assert-sa-2025-0001.c -@@ -0,0 +1,92 @@ -+/* Test for CVE-2025-0395. -+ Copyright The GNU Toolchain Authors. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* Test that a large enough __progname does not result in a buffer overflow -+ when printing an assertion failure. This was CVE-2025-0395. */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+extern const char *__progname; -+ -+int -+do_test (int argc, char **argv) -+{ -+ -+ support_need_proc ("Reads /proc/self/maps to add guards to writable maps."); -+ ignore_stderr (); -+ -+ /* XXX assumes that the assert is on a 2 digit line number. */ -+ const char *prompt = ": %s:99: do_test: Assertion `argc < 1' failed.\n"; -+ -+ int ret = fprintf (stderr, prompt, __FILE__); -+ if (ret < 0) -+ FAIL_EXIT1 ("fprintf failed: %m\n"); -+ -+ size_t pagesize = getpagesize (); -+ size_t namesize = pagesize - 1 - ret; -+ -+ /* Alter the progname so that the assert message fills the entire page. */ -+ char progname[namesize]; -+ memset (progname, 'A', namesize - 1); -+ progname[namesize - 1] = '\0'; -+ __progname = progname; -+ -+ FILE *f = xfopen ("/proc/self/maps", "r"); -+ char *line = NULL; -+ size_t len = 0; -+ uintptr_t prev_to = 0; -+ -+ /* Pad the beginning of every writable mapping with a PROT_NONE map. This -+ ensures that the mmap in the assert_fail path never ends up below a -+ writable map and will terminate immediately in case of a buffer -+ overflow. */ -+ while (xgetline (&line, &len, f)) -+ { -+ uintptr_t from, to; -+ char perm[4]; -+ -+ sscanf (line, "%" SCNxPTR "-%" SCNxPTR " %c%c%c%c ", -+ &from, &to, -+ &perm[0], &perm[1], &perm[2], &perm[3]); -+ -+ bool writable = (memchr (perm, 'w', 4) != NULL); -+ -+ if (prev_to != 0 && from - prev_to > pagesize && writable) -+ xmmap ((void *) from - pagesize, pagesize, PROT_NONE, -+ MAP_ANONYMOUS | MAP_PRIVATE, 0); -+ -+ prev_to = to; -+ } -+ -+ xfclose (f); -+ -+ assert (argc < 1); -+ return 0; -+} -+ -+#define EXPECTED_SIGNAL SIGABRT -+#define TEST_FUNCTION_ARGV do_test -+#include - -commit 523f85558152a1b9cced6d669f758c27677775ba -Author: John David Anglin -Date: Tue Feb 25 15:57:53 2025 -0500 - - math: Add optimization barrier to ensure a1 + u.d is not reused [BZ #30664] - - A number of fma tests started to fail on hppa when gcc was changed to - use Ranger rather than EVRP. Eventually I found that the value of - a1 + u.d in this is block of code was being computed in FE_TOWARDZERO - mode and not the original rounding mode: - - if (TININESS_AFTER_ROUNDING) - { - w.d = a1 + u.d; - if (w.ieee.exponent == 109) - return w.d * 0x1p-108; - } - - This caused the exponent value to be wrong and the wrong return path - to be used. - - Here we add an optimization barrier after the rounding mode is reset - to ensure that the previous value of a1 + u.d is not reused. - - Signed-off-by: John David Anglin - -diff --git a/sysdeps/ieee754/dbl-64/s_fma.c b/sysdeps/ieee754/dbl-64/s_fma.c -index c5f5abdc68..79a3cd721d 100644 ---- a/sysdeps/ieee754/dbl-64/s_fma.c -+++ b/sysdeps/ieee754/dbl-64/s_fma.c -@@ -244,6 +244,9 @@ __fma (double x, double y, double z) - /* Reset rounding mode and test for inexact simultaneously. */ - int j = libc_feupdateenv_test (&env, FE_INEXACT) != 0; - -+ /* Ensure value of a1 + u.d is not reused. */ -+ a1 = math_opt_barrier (a1); -+ - if (__glibc_likely (adjust == 0)) - { - if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7ff) - -commit ff10623706ea0096f3af7b38a3330ffb7fb15ae7 -Author: Joe Ramsay -Date: Mon Sep 9 13:00:01 2024 +0100 - - aarch64: Avoid redundant MOVs in AdvSIMD F32 logs - - Since the last operation is destructive, the first argument to the FMA - also has to be the first argument to the special-case in order to - avoid unnecessary MOVs. Reorder arguments and adjust special-case - bounds to facilitate this. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 8b09af572b208bfde4d31c6abbae047dcc217675) - -diff --git a/sysdeps/aarch64/fpu/log10f_advsimd.c b/sysdeps/aarch64/fpu/log10f_advsimd.c -index 9347422a77..82228b599a 100644 ---- a/sysdeps/aarch64/fpu/log10f_advsimd.c -+++ b/sysdeps/aarch64/fpu/log10f_advsimd.c -@@ -22,11 +22,11 @@ - - static const struct data - { -- uint32x4_t min_norm; -+ uint32x4_t off, offset_lower_bound; - uint16x8_t special_bound; -+ uint32x4_t mantissa_mask; - float32x4_t poly[8]; - float32x4_t inv_ln10, ln2; -- uint32x4_t off, mantissa_mask; - } data = { - /* Use order 9 for log10(1+x), i.e. order 8 for log10(1+x)/x, with x in - [-1/3, 1/3] (offset=2/3). Max. relative error: 0x1.068ee468p-25. */ -@@ -35,18 +35,22 @@ static const struct data - V4 (-0x1.0fc92cp-4f), V4 (0x1.f5f76ap-5f) }, - .ln2 = V4 (0x1.62e43p-1f), - .inv_ln10 = V4 (0x1.bcb7b2p-2f), -- .min_norm = V4 (0x00800000), -- .special_bound = V8 (0x7f00), /* asuint32(inf) - min_norm. */ -+ /* Lower bound is the smallest positive normal float 0x00800000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */ -+ .offset_lower_bound = V4 (0x00800000 - 0x3f2aaaab), -+ .special_bound = V8 (0x7f00), /* top16(asuint32(inf) - 0x00800000). */ - .off = V4 (0x3f2aaaab), /* 0.666667. */ - .mantissa_mask = V4 (0x007fffff), - }; - - static float32x4_t VPCS_ATTR NOINLINE --special_case (float32x4_t x, float32x4_t y, float32x4_t p, float32x4_t r2, -- uint16x4_t cmp) -+special_case (float32x4_t y, uint32x4_t u_off, float32x4_t p, float32x4_t r2, -+ uint16x4_t cmp, const struct data *d) - { - /* Fall back to scalar code. */ -- return v_call_f32 (log10f, x, vfmaq_f32 (y, p, r2), vmovl_u16 (cmp)); -+ return v_call_f32 (log10f, vreinterpretq_f32_u32 (vaddq_u32 (u_off, d->off)), -+ vfmaq_f32 (y, p, r2), vmovl_u16 (cmp)); - } - - /* Fast implementation of AdvSIMD log10f, -@@ -58,15 +62,21 @@ special_case (float32x4_t x, float32x4_t y, float32x4_t p, float32x4_t r2, - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log10) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- uint32x4_t u = vreinterpretq_u32_f32 (x); -- uint16x4_t special = vcge_u16 (vsubhn_u32 (u, d->min_norm), -- vget_low_u16 (d->special_bound)); -+ -+ /* To avoid having to mov x out of the way, keep u after offset has been -+ applied, and recover x by adding the offset back in the special-case -+ handler. */ -+ uint32x4_t u_off = vreinterpretq_u32_f32 (x); - - /* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */ -- u = vsubq_u32 (u, d->off); -+ u_off = vsubq_u32 (u_off, d->off); - float32x4_t n = vcvtq_f32_s32 ( -- vshrq_n_s32 (vreinterpretq_s32_u32 (u), 23)); /* signextend. */ -- u = vaddq_u32 (vandq_u32 (u, d->mantissa_mask), d->off); -+ vshrq_n_s32 (vreinterpretq_s32_u32 (u_off), 23)); /* signextend. */ -+ -+ uint16x4_t special = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound), -+ vget_low_u16 (d->special_bound)); -+ -+ uint32x4_t u = vaddq_u32 (vandq_u32 (u_off, d->mantissa_mask), d->off); - float32x4_t r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f)); - - /* y = log10(1+r) + n * log10(2). */ -@@ -77,7 +87,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log10) (float32x4_t x) - y = vmulq_f32 (y, d->inv_ln10); - - if (__glibc_unlikely (v_any_u16h (special))) -- return special_case (x, y, poly, r2, special); -+ return special_case (y, u_off, poly, r2, special, d); - return vfmaq_f32 (y, poly, r2); - } - libmvec_hidden_def (V_NAME_F1 (log10)) -diff --git a/sysdeps/aarch64/fpu/log2f_advsimd.c b/sysdeps/aarch64/fpu/log2f_advsimd.c -index db21836749..84effe4fe9 100644 ---- a/sysdeps/aarch64/fpu/log2f_advsimd.c -+++ b/sysdeps/aarch64/fpu/log2f_advsimd.c -@@ -22,9 +22,9 @@ - - static const struct data - { -- uint32x4_t min_norm; -+ uint32x4_t off, offset_lower_bound; - uint16x8_t special_bound; -- uint32x4_t off, mantissa_mask; -+ uint32x4_t mantissa_mask; - float32x4_t poly[9]; - } data = { - /* Coefficients generated using Remez algorithm approximate -@@ -34,18 +34,22 @@ static const struct data - V4 (-0x1.715458p-1f), V4 (0x1.ec701cp-2f), V4 (-0x1.7171a4p-2f), - V4 (0x1.27a0b8p-2f), V4 (-0x1.e5143ep-3f), V4 (0x1.9d8ecap-3f), - V4 (-0x1.c675bp-3f), V4 (0x1.9e495p-3f) }, -- .min_norm = V4 (0x00800000), -- .special_bound = V8 (0x7f00), /* asuint32(inf) - min_norm. */ -+ /* Lower bound is the smallest positive normal float 0x00800000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */ -+ .offset_lower_bound = V4 (0x00800000 - 0x3f2aaaab), -+ .special_bound = V8 (0x7f00), /* top16(asuint32(inf) - 0x00800000). */ - .off = V4 (0x3f2aaaab), /* 0.666667. */ - .mantissa_mask = V4 (0x007fffff), - }; - - static float32x4_t VPCS_ATTR NOINLINE --special_case (float32x4_t x, float32x4_t n, float32x4_t p, float32x4_t r, -- uint16x4_t cmp) -+special_case (float32x4_t n, uint32x4_t u_off, float32x4_t p, float32x4_t r, -+ uint16x4_t cmp, const struct data *d) - { - /* Fall back to scalar code. */ -- return v_call_f32 (log2f, x, vfmaq_f32 (n, p, r), vmovl_u16 (cmp)); -+ return v_call_f32 (log2f, vreinterpretq_f32_u32 (vaddq_u32 (u_off, d->off)), -+ vfmaq_f32 (n, p, r), vmovl_u16 (cmp)); - } - - /* Fast implementation for single precision AdvSIMD log2, -@@ -56,15 +60,21 @@ special_case (float32x4_t x, float32x4_t n, float32x4_t p, float32x4_t r, - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log2) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- uint32x4_t u = vreinterpretq_u32_f32 (x); -- uint16x4_t special = vcge_u16 (vsubhn_u32 (u, d->min_norm), -- vget_low_u16 (d->special_bound)); -+ -+ /* To avoid having to mov x out of the way, keep u after offset has been -+ applied, and recover x by adding the offset back in the special-case -+ handler. */ -+ uint32x4_t u_off = vreinterpretq_u32_f32 (x); - - /* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */ -- u = vsubq_u32 (u, d->off); -+ u_off = vsubq_u32 (u_off, d->off); - float32x4_t n = vcvtq_f32_s32 ( -- vshrq_n_s32 (vreinterpretq_s32_u32 (u), 23)); /* signextend. */ -- u = vaddq_u32 (vandq_u32 (u, d->mantissa_mask), d->off); -+ vshrq_n_s32 (vreinterpretq_s32_u32 (u_off), 23)); /* signextend. */ -+ -+ uint16x4_t special = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound), -+ vget_low_u16 (d->special_bound)); -+ -+ uint32x4_t u = vaddq_u32 (vandq_u32 (u_off, d->mantissa_mask), d->off); - float32x4_t r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f)); - - /* y = log2(1+r) + n. */ -@@ -72,7 +82,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log2) (float32x4_t x) - float32x4_t p = v_pw_horner_8_f32 (r, r2, d->poly); - - if (__glibc_unlikely (v_any_u16h (special))) -- return special_case (x, n, p, r, special); -+ return special_case (n, u_off, p, r, special, d); - return vfmaq_f32 (n, p, r); - } - libmvec_hidden_def (V_NAME_F1 (log2)) -diff --git a/sysdeps/aarch64/fpu/logf_advsimd.c b/sysdeps/aarch64/fpu/logf_advsimd.c -index 3c0d0fcdc7..c20dbfd6c0 100644 ---- a/sysdeps/aarch64/fpu/logf_advsimd.c -+++ b/sysdeps/aarch64/fpu/logf_advsimd.c -@@ -21,20 +21,22 @@ - - static const struct data - { -- uint32x4_t min_norm; -+ uint32x4_t off, offset_lower_bound; - uint16x8_t special_bound; -+ uint32x4_t mantissa_mask; - float32x4_t poly[7]; -- float32x4_t ln2, tiny_bound; -- uint32x4_t off, mantissa_mask; -+ float32x4_t ln2; - } data = { - /* 3.34 ulp error. */ - .poly = { V4 (-0x1.3e737cp-3f), V4 (0x1.5a9aa2p-3f), V4 (-0x1.4f9934p-3f), - V4 (0x1.961348p-3f), V4 (-0x1.00187cp-2f), V4 (0x1.555d7cp-2f), - V4 (-0x1.ffffc8p-2f) }, - .ln2 = V4 (0x1.62e43p-1f), -- .tiny_bound = V4 (0x1p-126), -- .min_norm = V4 (0x00800000), -- .special_bound = V8 (0x7f00), /* asuint32(inf) - min_norm. */ -+ /* Lower bound is the smallest positive normal float 0x00800000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */ -+ .offset_lower_bound = V4 (0x00800000 - 0x3f2aaaab), -+ .special_bound = V8 (0x7f00), /* top16(asuint32(inf) - 0x00800000). */ - .off = V4 (0x3f2aaaab), /* 0.666667. */ - .mantissa_mask = V4 (0x007fffff) - }; -@@ -42,32 +44,37 @@ static const struct data - #define P(i) d->poly[7 - i] - - static float32x4_t VPCS_ATTR NOINLINE --special_case (float32x4_t x, float32x4_t y, float32x4_t r2, float32x4_t p, -- uint16x4_t cmp) -+special_case (float32x4_t p, uint32x4_t u_off, float32x4_t y, float32x4_t r2, -+ uint16x4_t cmp, const struct data *d) - { - /* Fall back to scalar code. */ -- return v_call_f32 (logf, x, vfmaq_f32 (p, y, r2), vmovl_u16 (cmp)); -+ return v_call_f32 (logf, vreinterpretq_f32_u32 (vaddq_u32 (u_off, d->off)), -+ vfmaq_f32 (p, y, r2), vmovl_u16 (cmp)); - } - - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); - float32x4_t n, p, q, r, r2, y; -- uint32x4_t u; -+ uint32x4_t u, u_off; - uint16x4_t cmp; - -- u = vreinterpretq_u32_f32 (x); -- cmp = vcge_u16 (vsubhn_u32 (u, d->min_norm), -- vget_low_u16 (d->special_bound)); -+ /* To avoid having to mov x out of the way, keep u after offset has been -+ applied, and recover x by adding the offset back in the special-case -+ handler. */ -+ u_off = vreinterpretq_u32_f32 (x); - - /* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */ -- u = vsubq_u32 (u, d->off); -+ u_off = vsubq_u32 (u_off, d->off); - n = vcvtq_f32_s32 ( -- vshrq_n_s32 (vreinterpretq_s32_u32 (u), 23)); /* signextend. */ -- u = vandq_u32 (u, d->mantissa_mask); -+ vshrq_n_s32 (vreinterpretq_s32_u32 (u_off), 23)); /* signextend. */ -+ u = vandq_u32 (u_off, d->mantissa_mask); - u = vaddq_u32 (u, d->off); - r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f)); - -+ cmp = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound), -+ vget_low_u16 (d->special_bound)); -+ - /* y = log(1+r) + n*ln2. */ - r2 = vmulq_f32 (r, r); - /* n*ln2 + r + r2*(P1 + r*P2 + r2*(P3 + r*P4 + r2*(P5 + r*P6 + r2*P7))). */ -@@ -80,7 +87,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log) (float32x4_t x) - p = vfmaq_f32 (r, d->ln2, n); - - if (__glibc_unlikely (v_any_u16h (cmp))) -- return special_case (x, y, r2, p, cmp); -+ return special_case (p, u_off, y, r2, cmp, d); - return vfmaq_f32 (p, y, r2); - } - libmvec_hidden_def (V_NAME_F1 (log)) - -commit a991a0fc7c051d7ef2ea7778e0a699f22d4e53d7 -Author: Joe Ramsay -Date: Thu Sep 19 17:34:02 2024 +0100 - - AArch64: Add vector logp1 alias for log1p - - This enables vectorisation of C23 logp1, which is an alias for log1p. - There are no new tests or ulp entries because the new symbols are simply - aliases. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 751a5502bea1d13551c62c47bb9bd25bff870cda) - -diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h -index 08a41c46ad..5019e8e25c 100644 ---- a/bits/libm-simd-decl-stubs.h -+++ b/bits/libm-simd-decl-stubs.h -@@ -253,6 +253,17 @@ - #define __DECL_SIMD_log1pf64x - #define __DECL_SIMD_log1pf128x - -+#define __DECL_SIMD_logp1 -+#define __DECL_SIMD_logp1f -+#define __DECL_SIMD_logp1l -+#define __DECL_SIMD_logp1f16 -+#define __DECL_SIMD_logp1f32 -+#define __DECL_SIMD_logp1f64 -+#define __DECL_SIMD_logp1f128 -+#define __DECL_SIMD_logp1f32x -+#define __DECL_SIMD_logp1f64x -+#define __DECL_SIMD_logp1f128x -+ - #define __DECL_SIMD_atanh - #define __DECL_SIMD_atanhf - #define __DECL_SIMD_atanhl -diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h -index 6cb594b6ff..92856becc4 100644 ---- a/math/bits/mathcalls.h -+++ b/math/bits/mathcalls.h -@@ -126,7 +126,7 @@ __MATHCALL (log2p1,, (_Mdouble_ __x)); - __MATHCALL (log10p1,, (_Mdouble_ __x)); - - /* Return log(1 + X). */ --__MATHCALL (logp1,, (_Mdouble_ __x)); -+__MATHCALL_VEC (logp1,, (_Mdouble_ __x)); - #endif - - #if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 -diff --git a/sysdeps/aarch64/fpu/Versions b/sysdeps/aarch64/fpu/Versions -index cc15ce2d1e..015211f5f4 100644 ---- a/sysdeps/aarch64/fpu/Versions -+++ b/sysdeps/aarch64/fpu/Versions -@@ -135,4 +135,11 @@ libmvec { - _ZGVsMxv_tanh; - _ZGVsMxv_tanhf; - } -+ GLIBC_2.41 { -+ _ZGVnN2v_logp1; -+ _ZGVnN2v_logp1f; -+ _ZGVnN4v_logp1f; -+ _ZGVsMxv_logp1; -+ _ZGVsMxv_logp1f; -+ } - } -diff --git a/sysdeps/aarch64/fpu/advsimd_f32_protos.h b/sysdeps/aarch64/fpu/advsimd_f32_protos.h -index 097d403ffe..5909bb4ce9 100644 ---- a/sysdeps/aarch64/fpu/advsimd_f32_protos.h -+++ b/sysdeps/aarch64/fpu/advsimd_f32_protos.h -@@ -36,6 +36,7 @@ libmvec_hidden_proto (V_NAME_F2(hypot)); - libmvec_hidden_proto (V_NAME_F1(log10)); - libmvec_hidden_proto (V_NAME_F1(log1p)); - libmvec_hidden_proto (V_NAME_F1(log2)); -+libmvec_hidden_proto (V_NAME_F1(logp1)); - libmvec_hidden_proto (V_NAME_F1(log)); - libmvec_hidden_proto (V_NAME_F2(pow)); - libmvec_hidden_proto (V_NAME_F1(sin)); -diff --git a/sysdeps/aarch64/fpu/bits/math-vector.h b/sysdeps/aarch64/fpu/bits/math-vector.h -index 7484150131..f295fe185d 100644 ---- a/sysdeps/aarch64/fpu/bits/math-vector.h -+++ b/sysdeps/aarch64/fpu/bits/math-vector.h -@@ -113,6 +113,10 @@ - # define __DECL_SIMD_log2 __DECL_SIMD_aarch64 - # undef __DECL_SIMD_log2f - # define __DECL_SIMD_log2f __DECL_SIMD_aarch64 -+# undef __DECL_SIMD_logp1 -+# define __DECL_SIMD_logp1 __DECL_SIMD_aarch64 -+# undef __DECL_SIMD_logp1f -+# define __DECL_SIMD_logp1f __DECL_SIMD_aarch64 - # undef __DECL_SIMD_pow - # define __DECL_SIMD_pow __DECL_SIMD_aarch64 - # undef __DECL_SIMD_powf -@@ -180,6 +184,7 @@ __vpcs __f32x4_t _ZGVnN4v_logf (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_log10f (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_log1pf (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_log2f (__f32x4_t); -+__vpcs __f32x4_t _ZGVnN4v_logp1f (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4vv_powf (__f32x4_t, __f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_sinf (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_sinhf (__f32x4_t); -@@ -207,6 +212,7 @@ __vpcs __f64x2_t _ZGVnN2v_log (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_log10 (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_log1p (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_log2 (__f64x2_t); -+__vpcs __f64x2_t _ZGVnN2v_logp1 (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2vv_pow (__f64x2_t, __f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_sin (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_sinh (__f64x2_t); -@@ -239,6 +245,7 @@ __sv_f32_t _ZGVsMxv_logf (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_log10f (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_log1pf (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_log2f (__sv_f32_t, __sv_bool_t); -+__sv_f32_t _ZGVsMxv_logp1f (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxvv_powf (__sv_f32_t, __sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_sinf (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_sinhf (__sv_f32_t, __sv_bool_t); -@@ -266,6 +273,7 @@ __sv_f64_t _ZGVsMxv_log (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_log10 (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_log1p (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_log2 (__sv_f64_t, __sv_bool_t); -+__sv_f64_t _ZGVsMxv_logp1 (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxvv_pow (__sv_f64_t, __sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_sin (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_sinh (__sv_f64_t, __sv_bool_t); -diff --git a/sysdeps/aarch64/fpu/log1p_advsimd.c b/sysdeps/aarch64/fpu/log1p_advsimd.c -index ffc418fc9c..114064c696 100644 ---- a/sysdeps/aarch64/fpu/log1p_advsimd.c -+++ b/sysdeps/aarch64/fpu/log1p_advsimd.c -@@ -127,3 +127,5 @@ VPCS_ATTR float64x2_t V_NAME_D1 (log1p) (float64x2_t x) - - return vfmaq_f64 (y, f2, p); - } -+ -+strong_alias (V_NAME_D1 (log1p), V_NAME_D1 (logp1)) -diff --git a/sysdeps/aarch64/fpu/log1p_sve.c b/sysdeps/aarch64/fpu/log1p_sve.c -index 04f7e5720e..b21cfb2c90 100644 ---- a/sysdeps/aarch64/fpu/log1p_sve.c -+++ b/sysdeps/aarch64/fpu/log1p_sve.c -@@ -116,3 +116,5 @@ svfloat64_t SV_NAME_D1 (log1p) (svfloat64_t x, svbool_t pg) - - return y; - } -+ -+strong_alias (SV_NAME_D1 (log1p), SV_NAME_D1 (logp1)) -diff --git a/sysdeps/aarch64/fpu/log1pf_advsimd.c b/sysdeps/aarch64/fpu/log1pf_advsimd.c -index dc15334a85..8cfa28fb8a 100644 ---- a/sysdeps/aarch64/fpu/log1pf_advsimd.c -+++ b/sysdeps/aarch64/fpu/log1pf_advsimd.c -@@ -128,3 +128,6 @@ VPCS_ATTR float32x4_t V_NAME_F1 (log1p) (float32x4_t x) - } - libmvec_hidden_def (V_NAME_F1 (log1p)) - HALF_WIDTH_ALIAS_F1 (log1p) -+strong_alias (V_NAME_F1 (log1p), V_NAME_F1 (logp1)) -+libmvec_hidden_def (V_NAME_F1 (logp1)) -+HALF_WIDTH_ALIAS_F1 (logp1) -diff --git a/sysdeps/aarch64/fpu/log1pf_sve.c b/sysdeps/aarch64/fpu/log1pf_sve.c -index f645cc997e..5256d5e94c 100644 ---- a/sysdeps/aarch64/fpu/log1pf_sve.c -+++ b/sysdeps/aarch64/fpu/log1pf_sve.c -@@ -98,3 +98,5 @@ svfloat32_t SV_NAME_F1 (log1p) (svfloat32_t x, svbool_t pg) - - return y; - } -+ -+strong_alias (SV_NAME_F1 (log1p), SV_NAME_F1 (logp1)) -diff --git a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist -index b685106954..98687cae0d 100644 ---- a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist -+++ b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist -@@ -128,3 +128,8 @@ GLIBC_2.40 _ZGVsMxvv_hypot F - GLIBC_2.40 _ZGVsMxvv_hypotf F - GLIBC_2.40 _ZGVsMxvv_pow F - GLIBC_2.40 _ZGVsMxvv_powf F -+GLIBC_2.41 _ZGVnN2v_logp1 F -+GLIBC_2.41 _ZGVnN2v_logp1f F -+GLIBC_2.41 _ZGVnN4v_logp1f F -+GLIBC_2.41 _ZGVsMxv_logp1 F -+GLIBC_2.41 _ZGVsMxv_logp1f F - -commit 354aeaf2130c1484007025563fe87c997f07324a -Author: Joe Ramsay -Date: Mon Sep 23 15:26:12 2024 +0100 - - AArch64: Improve codegen in SVE expf & related routines - - Reduce MOV and MOVPRFX by improving special-case handling. Use inline - helper to duplicate the entire computation between the special- and - non-special case branches, removing the contention for z0 between x - and the return value. - - Also rearrange some MLAs and MLSs - by making the multiplicand the - destination we can avoid a MOVPRFX in several cases. Also change which - constants go in the vector used for lanewise ops - the last lane is no - longer wasted. - - Spotted that shift was incorrect in exp2f and exp10f, w.r.t. to the - comment that explains it. Fixed - worst-case ULP for exp2f moves - around but it doesn't change significantly for either routine. - - Worst-case error for coshf increases due to passing x to exp rather - than abs(x) - updated the comment, but does not require regen-ulps. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 7b8c134b5460ed933d610fa92ed1227372b68fdc) - -diff --git a/sysdeps/aarch64/fpu/coshf_sve.c b/sysdeps/aarch64/fpu/coshf_sve.c -index e5d8a299c6..7ad6efa0fc 100644 ---- a/sysdeps/aarch64/fpu/coshf_sve.c -+++ b/sysdeps/aarch64/fpu/coshf_sve.c -@@ -23,37 +23,42 @@ - static const struct data - { - struct sv_expf_data expf_consts; -- uint32_t special_bound; -+ float special_bound; - } data = { - .expf_consts = SV_EXPF_DATA, - /* 0x1.5a92d8p+6: expf overflows above this, so have to use special case. */ -- .special_bound = 0x42ad496c, -+ .special_bound = 0x1.5a92d8p+6, - }; - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t pg) -+special_case (svfloat32_t x, svfloat32_t half_e, svfloat32_t half_over_e, -+ svbool_t pg) - { -- return sv_call_f32 (coshf, x, y, pg); -+ return sv_call_f32 (coshf, x, svadd_x (svptrue_b32 (), half_e, half_over_e), -+ pg); - } - - /* Single-precision vector cosh, using vector expf. -- Maximum error is 1.89 ULP: -- _ZGVsMxv_coshf (-0x1.65898cp+6) got 0x1.f00aep+127 -- want 0x1.f00adcp+127. */ -+ Maximum error is 2.77 ULP: -+ _ZGVsMxv_coshf(-0x1.5b38f4p+1) got 0x1.e45946p+2 -+ want 0x1.e4594cp+2. */ - svfloat32_t SV_NAME_F1 (cosh) (svfloat32_t x, svbool_t pg) - { - const struct data *d = ptr_barrier (&data); - -- svfloat32_t ax = svabs_x (pg, x); -- svbool_t special = svcmpge (pg, svreinterpret_u32 (ax), d->special_bound); -+ svbool_t special = svacge (pg, x, d->special_bound); - -- /* Calculate cosh by exp(x) / 2 + exp(-x) / 2. */ -- svfloat32_t t = expf_inline (ax, pg, &d->expf_consts); -- svfloat32_t half_t = svmul_x (pg, t, 0.5); -- svfloat32_t half_over_t = svdivr_x (pg, t, 0.5); -+ /* Calculate cosh by exp(x) / 2 + exp(-x) / 2. -+ Note that x is passed to exp here, rather than |x|. This is to avoid using -+ destructive unary ABS for better register usage. However it means the -+ routine is not exactly symmetrical, as the exp helper is slightly less -+ accurate in the negative range. */ -+ svfloat32_t e = expf_inline (x, pg, &d->expf_consts); -+ svfloat32_t half_e = svmul_x (svptrue_b32 (), e, 0.5); -+ svfloat32_t half_over_e = svdivr_x (pg, e, 0.5); - - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svadd_x (pg, half_t, half_over_t), special); -+ return special_case (x, half_e, half_over_e, special); - -- return svadd_x (pg, half_t, half_over_t); -+ return svadd_x (svptrue_b32 (), half_e, half_over_e); - } -diff --git a/sysdeps/aarch64/fpu/exp10f_sve.c b/sysdeps/aarch64/fpu/exp10f_sve.c -index e09b2f3b27..8aa3fa9c43 100644 ---- a/sysdeps/aarch64/fpu/exp10f_sve.c -+++ b/sysdeps/aarch64/fpu/exp10f_sve.c -@@ -18,74 +18,83 @@ - . */ - - #include "sv_math.h" --#include "poly_sve_f32.h" - --/* For x < -SpecialBound, the result is subnormal and not handled correctly by -+/* For x < -Thres, the result is subnormal and not handled correctly by - FEXPA. */ --#define SpecialBound 37.9 -+#define Thres 37.9 - - static const struct data - { -- float poly[5]; -- float shift, log10_2, log2_10_hi, log2_10_lo, special_bound; -+ float log2_10_lo, c0, c2, c4; -+ float c1, c3, log10_2; -+ float shift, log2_10_hi, thres; - } data = { - /* Coefficients generated using Remez algorithm with minimisation of relative - error. - rel error: 0x1.89dafa3p-24 - abs error: 0x1.167d55p-23 in [-log10(2)/2, log10(2)/2] - maxerr: 0.52 +0.5 ulp. */ -- .poly = { 0x1.26bb16p+1f, 0x1.5350d2p+1f, 0x1.04744ap+1f, 0x1.2d8176p+0f, -- 0x1.12b41ap-1f }, -+ .c0 = 0x1.26bb16p+1f, -+ .c1 = 0x1.5350d2p+1f, -+ .c2 = 0x1.04744ap+1f, -+ .c3 = 0x1.2d8176p+0f, -+ .c4 = 0x1.12b41ap-1f, - /* 1.5*2^17 + 127, a shift value suitable for FEXPA. */ -- .shift = 0x1.903f8p17f, -+ .shift = 0x1.803f8p17f, - .log10_2 = 0x1.a934fp+1, - .log2_10_hi = 0x1.344136p-2, - .log2_10_lo = -0x1.ec10cp-27, -- .special_bound = SpecialBound, -+ .thres = Thres, - }; - --static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+static inline svfloat32_t -+sv_exp10f_inline (svfloat32_t x, const svbool_t pg, const struct data *d) - { -- return sv_call_f32 (exp10f, x, y, special); --} -- --/* Single-precision SVE exp10f routine. Implements the same algorithm -- as AdvSIMD exp10f. -- Worst case error is 1.02 ULPs. -- _ZGVsMxv_exp10f(-0x1.040488p-4) got 0x1.ba5f9ep-1 -- want 0x1.ba5f9cp-1. */ --svfloat32_t SV_NAME_F1 (exp10) (svfloat32_t x, const svbool_t pg) --{ -- const struct data *d = ptr_barrier (&data); - /* exp10(x) = 2^(n/N) * 10^r = 2^n * (1 + poly (r)), - with poly(r) in [1/sqrt(2), sqrt(2)] and - x = r + n * log10(2) / N, with r in [-log10(2)/2N, log10(2)/2N]. */ - -- /* Load some constants in quad-word chunks to minimise memory access (last -- lane is wasted). */ -- svfloat32_t log10_2_and_inv = svld1rq (svptrue_b32 (), &d->log10_2); -+ svfloat32_t lane_consts = svld1rq (svptrue_b32 (), &d->log2_10_lo); - - /* n = round(x/(log10(2)/N)). */ - svfloat32_t shift = sv_f32 (d->shift); -- svfloat32_t z = svmla_lane (shift, x, log10_2_and_inv, 0); -- svfloat32_t n = svsub_x (pg, z, shift); -+ svfloat32_t z = svmad_x (pg, sv_f32 (d->log10_2), x, shift); -+ svfloat32_t n = svsub_x (svptrue_b32 (), z, shift); - - /* r = x - n*log10(2)/N. */ -- svfloat32_t r = svmls_lane (x, n, log10_2_and_inv, 1); -- r = svmls_lane (r, n, log10_2_and_inv, 2); -+ svfloat32_t r = svmsb_x (pg, sv_f32 (d->log2_10_hi), n, x); -+ r = svmls_lane (r, n, lane_consts, 0); - -- svbool_t special = svacgt (pg, x, d->special_bound); - svfloat32_t scale = svexpa (svreinterpret_u32 (z)); - - /* Polynomial evaluation: poly(r) ~ exp10(r)-1. */ -- svfloat32_t r2 = svmul_x (pg, r, r); -- svfloat32_t poly -- = svmla_x (pg, svmul_x (pg, r, d->poly[0]), -- sv_pairwise_poly_3_f32_x (pg, r, r2, d->poly + 1), r2); -- -- if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svmla_x (pg, scale, scale, poly), special); -+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), r, lane_consts, 2); -+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), r, lane_consts, 3); -+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); -+ svfloat32_t p14 = svmla_x (pg, p12, p34, r2); -+ svfloat32_t p0 = svmul_lane (r, lane_consts, 1); -+ svfloat32_t poly = svmla_x (pg, p0, r2, p14); - - return svmla_x (pg, scale, scale, poly); - } -+ -+static svfloat32_t NOINLINE -+special_case (svfloat32_t x, svbool_t special, const struct data *d) -+{ -+ return sv_call_f32 (exp10f, x, sv_exp10f_inline (x, svptrue_b32 (), d), -+ special); -+} -+ -+/* Single-precision SVE exp10f routine. Implements the same algorithm -+ as AdvSIMD exp10f. -+ Worst case error is 1.02 ULPs. -+ _ZGVsMxv_exp10f(-0x1.040488p-4) got 0x1.ba5f9ep-1 -+ want 0x1.ba5f9cp-1. */ -+svfloat32_t SV_NAME_F1 (exp10) (svfloat32_t x, const svbool_t pg) -+{ -+ const struct data *d = ptr_barrier (&data); -+ svbool_t special = svacgt (pg, x, d->thres); -+ if (__glibc_unlikely (svptest_any (special, special))) -+ return special_case (x, special, d); -+ return sv_exp10f_inline (x, pg, d); -+} -diff --git a/sysdeps/aarch64/fpu/exp2f_sve.c b/sysdeps/aarch64/fpu/exp2f_sve.c -index 8a686e3e05..c6216bed9e 100644 ---- a/sysdeps/aarch64/fpu/exp2f_sve.c -+++ b/sysdeps/aarch64/fpu/exp2f_sve.c -@@ -24,54 +24,64 @@ - - static const struct data - { -- float poly[5]; -+ float c0, c2, c4, c1, c3; - float shift, thres; - } data = { -- /* Coefficients copied from the polynomial in AdvSIMD variant, reversed for -- compatibility with polynomial helpers. */ -- .poly = { 0x1.62e422p-1f, 0x1.ebf9bcp-3f, 0x1.c6bd32p-5f, 0x1.3ce9e4p-7f, -- 0x1.59977ap-10f }, -+ /* Coefficients copied from the polynomial in AdvSIMD variant. */ -+ .c0 = 0x1.62e422p-1f, -+ .c1 = 0x1.ebf9bcp-3f, -+ .c2 = 0x1.c6bd32p-5f, -+ .c3 = 0x1.3ce9e4p-7f, -+ .c4 = 0x1.59977ap-10f, - /* 1.5*2^17 + 127. */ -- .shift = 0x1.903f8p17f, -+ .shift = 0x1.803f8p17f, - /* Roughly 87.3. For x < -Thres, the result is subnormal and not handled - correctly by FEXPA. */ - .thres = Thres, - }; - --static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) --{ -- return sv_call_f32 (exp2f, x, y, special); --} -- --/* Single-precision SVE exp2f routine. Implements the same algorithm -- as AdvSIMD exp2f. -- Worst case error is 1.04 ULPs. -- SV_NAME_F1 (exp2)(0x1.943b9p-1) got 0x1.ba7eb2p+0 -- want 0x1.ba7ebp+0. */ --svfloat32_t SV_NAME_F1 (exp2) (svfloat32_t x, const svbool_t pg) -+static inline svfloat32_t -+sv_exp2f_inline (svfloat32_t x, const svbool_t pg, const struct data *d) - { -- const struct data *d = ptr_barrier (&data); - /* exp2(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] - x = n + r, with r in [-1/2, 1/2]. */ -- svfloat32_t shift = sv_f32 (d->shift); -- svfloat32_t z = svadd_x (pg, x, shift); -- svfloat32_t n = svsub_x (pg, z, shift); -- svfloat32_t r = svsub_x (pg, x, n); -+ svfloat32_t z = svadd_x (svptrue_b32 (), x, d->shift); -+ svfloat32_t n = svsub_x (svptrue_b32 (), z, d->shift); -+ svfloat32_t r = svsub_x (svptrue_b32 (), x, n); - -- svbool_t special = svacgt (pg, x, d->thres); - svfloat32_t scale = svexpa (svreinterpret_u32 (z)); - - /* Polynomial evaluation: poly(r) ~ exp2(r)-1. - Evaluate polynomial use hybrid scheme - offset ESTRIN by 1 for - coefficients 1 to 4, and apply most significant coefficient directly. */ -- svfloat32_t r2 = svmul_x (pg, r, r); -- svfloat32_t p14 = sv_pairwise_poly_3_f32_x (pg, r, r2, d->poly + 1); -- svfloat32_t p0 = svmul_x (pg, r, d->poly[0]); -+ svfloat32_t even_coeffs = svld1rq (svptrue_b32 (), &d->c0); -+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); -+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), r, even_coeffs, 1); -+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), r, even_coeffs, 2); -+ svfloat32_t p14 = svmla_x (pg, p12, r2, p34); -+ svfloat32_t p0 = svmul_lane (r, even_coeffs, 0); - svfloat32_t poly = svmla_x (pg, p0, r2, p14); - -- if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svmla_x (pg, scale, scale, poly), special); -- - return svmla_x (pg, scale, scale, poly); - } -+ -+static svfloat32_t NOINLINE -+special_case (svfloat32_t x, svbool_t special, const struct data *d) -+{ -+ return sv_call_f32 (exp2f, x, sv_exp2f_inline (x, svptrue_b32 (), d), -+ special); -+} -+ -+/* Single-precision SVE exp2f routine. Implements the same algorithm -+ as AdvSIMD exp2f. -+ Worst case error is 1.04 ULPs. -+ _ZGVsMxv_exp2f(-0x1.af994ap-3) got 0x1.ba6a66p-1 -+ want 0x1.ba6a64p-1. */ -+svfloat32_t SV_NAME_F1 (exp2) (svfloat32_t x, const svbool_t pg) -+{ -+ const struct data *d = ptr_barrier (&data); -+ svbool_t special = svacgt (pg, x, d->thres); -+ if (__glibc_unlikely (svptest_any (special, special))) -+ return special_case (x, special, d); -+ return sv_exp2f_inline (x, pg, d); -+} -diff --git a/sysdeps/aarch64/fpu/expf_sve.c b/sysdeps/aarch64/fpu/expf_sve.c -index 3ba79bc4f1..da93e01b87 100644 ---- a/sysdeps/aarch64/fpu/expf_sve.c -+++ b/sysdeps/aarch64/fpu/expf_sve.c -@@ -18,33 +18,25 @@ - . */ - - #include "sv_math.h" -+#include "sv_expf_inline.h" -+ -+/* Roughly 87.3. For x < -Thres, the result is subnormal and not handled -+ correctly by FEXPA. */ -+#define Thres 0x1.5d5e2ap+6f - - static const struct data - { -- float poly[5]; -- float inv_ln2, ln2_hi, ln2_lo, shift, thres; -+ struct sv_expf_data d; -+ float thres; - } data = { -- /* Coefficients copied from the polynomial in AdvSIMD variant, reversed for -- compatibility with polynomial helpers. */ -- .poly = { 0x1.ffffecp-1f, 0x1.fffdb6p-2f, 0x1.555e66p-3f, 0x1.573e2ep-5f, -- 0x1.0e4020p-7f }, -- .inv_ln2 = 0x1.715476p+0f, -- .ln2_hi = 0x1.62e4p-1f, -- .ln2_lo = 0x1.7f7d1cp-20f, -- /* 1.5*2^17 + 127. */ -- .shift = 0x1.903f8p17f, -- /* Roughly 87.3. For x < -Thres, the result is subnormal and not handled -- correctly by FEXPA. */ -- .thres = 0x1.5d5e2ap+6f, -+ .d = SV_EXPF_DATA, -+ .thres = Thres, - }; - --#define C(i) sv_f32 (d->poly[i]) --#define ExponentBias 0x3f800000 -- - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+special_case (svfloat32_t x, svbool_t special, const struct sv_expf_data *d) - { -- return sv_call_f32 (expf, x, y, special); -+ return sv_call_f32 (expf, x, expf_inline (x, svptrue_b32 (), d), special); - } - - /* Optimised single-precision SVE exp function. -@@ -54,36 +46,8 @@ special_case (svfloat32_t x, svfloat32_t y, svbool_t special) - svfloat32_t SV_NAME_F1 (exp) (svfloat32_t x, const svbool_t pg) - { - const struct data *d = ptr_barrier (&data); -- -- /* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] -- x = ln2*n + r, with r in [-ln2/2, ln2/2]. */ -- -- /* Load some constants in quad-word chunks to minimise memory access (last -- lane is wasted). */ -- svfloat32_t invln2_and_ln2 = svld1rq (svptrue_b32 (), &d->inv_ln2); -- -- /* n = round(x/(ln2/N)). */ -- svfloat32_t z = svmla_lane (sv_f32 (d->shift), x, invln2_and_ln2, 0); -- svfloat32_t n = svsub_x (pg, z, d->shift); -- -- /* r = x - n*ln2/N. */ -- svfloat32_t r = svmls_lane (x, n, invln2_and_ln2, 1); -- r = svmls_lane (r, n, invln2_and_ln2, 2); -- -- /* scale = 2^(n/N). */ - svbool_t is_special_case = svacgt (pg, x, d->thres); -- svfloat32_t scale = svexpa (svreinterpret_u32 (z)); -- -- /* y = exp(r) - 1 ~= r + C0 r^2 + C1 r^3 + C2 r^4 + C3 r^5 + C4 r^6. */ -- svfloat32_t p12 = svmla_x (pg, C (1), C (2), r); -- svfloat32_t p34 = svmla_x (pg, C (3), C (4), r); -- svfloat32_t r2 = svmul_x (pg, r, r); -- svfloat32_t p14 = svmla_x (pg, p12, p34, r2); -- svfloat32_t p0 = svmul_x (pg, r, C (0)); -- svfloat32_t poly = svmla_x (pg, p0, r2, p14); -- - if (__glibc_unlikely (svptest_any (pg, is_special_case))) -- return special_case (x, svmla_x (pg, scale, scale, poly), is_special_case); -- -- return svmla_x (pg, scale, scale, poly); -+ return special_case (x, is_special_case, &d->d); -+ return expf_inline (x, pg, &d->d); - } -diff --git a/sysdeps/aarch64/fpu/sv_expf_inline.h b/sysdeps/aarch64/fpu/sv_expf_inline.h -index 23963b5f8e..6166df6553 100644 ---- a/sysdeps/aarch64/fpu/sv_expf_inline.h -+++ b/sysdeps/aarch64/fpu/sv_expf_inline.h -@@ -24,19 +24,20 @@ - - struct sv_expf_data - { -- float poly[5]; -- float inv_ln2, ln2_hi, ln2_lo, shift; -+ float c1, c3, inv_ln2; -+ float ln2_lo, c0, c2, c4; -+ float ln2_hi, shift; - }; - - /* Coefficients copied from the polynomial in AdvSIMD variant, reversed for - compatibility with polynomial helpers. Shift is 1.5*2^17 + 127. */ - #define SV_EXPF_DATA \ - { \ -- .poly = { 0x1.ffffecp-1f, 0x1.fffdb6p-2f, 0x1.555e66p-3f, 0x1.573e2ep-5f, \ -- 0x1.0e4020p-7f }, \ -- \ -- .inv_ln2 = 0x1.715476p+0f, .ln2_hi = 0x1.62e4p-1f, \ -- .ln2_lo = 0x1.7f7d1cp-20f, .shift = 0x1.803f8p17f, \ -+ /* Coefficients copied from the polynomial in AdvSIMD variant. */ \ -+ .c0 = 0x1.ffffecp-1f, .c1 = 0x1.fffdb6p-2f, .c2 = 0x1.555e66p-3f, \ -+ .c3 = 0x1.573e2ep-5f, .c4 = 0x1.0e4020p-7f, .inv_ln2 = 0x1.715476p+0f, \ -+ .ln2_hi = 0x1.62e4p-1f, .ln2_lo = 0x1.7f7d1cp-20f, \ -+ .shift = 0x1.803f8p17f, \ - } - - #define C(i) sv_f32 (d->poly[i]) -@@ -47,26 +48,25 @@ expf_inline (svfloat32_t x, const svbool_t pg, const struct sv_expf_data *d) - /* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] - x = ln2*n + r, with r in [-ln2/2, ln2/2]. */ - -- /* Load some constants in quad-word chunks to minimise memory access. */ -- svfloat32_t c4_invln2_and_ln2 = svld1rq (svptrue_b32 (), &d->poly[4]); -+ svfloat32_t lane_consts = svld1rq (svptrue_b32 (), &d->ln2_lo); - - /* n = round(x/(ln2/N)). */ -- svfloat32_t z = svmla_lane (sv_f32 (d->shift), x, c4_invln2_and_ln2, 1); -+ svfloat32_t z = svmad_x (pg, sv_f32 (d->inv_ln2), x, d->shift); - svfloat32_t n = svsub_x (pg, z, d->shift); - - /* r = x - n*ln2/N. */ -- svfloat32_t r = svmls_lane (x, n, c4_invln2_and_ln2, 2); -- r = svmls_lane (r, n, c4_invln2_and_ln2, 3); -+ svfloat32_t r = svmsb_x (pg, sv_f32 (d->ln2_hi), n, x); -+ r = svmls_lane (r, n, lane_consts, 0); - - /* scale = 2^(n/N). */ -- svfloat32_t scale = svexpa (svreinterpret_u32_f32 (z)); -+ svfloat32_t scale = svexpa (svreinterpret_u32 (z)); - - /* y = exp(r) - 1 ~= r + C0 r^2 + C1 r^3 + C2 r^4 + C3 r^5 + C4 r^6. */ -- svfloat32_t p12 = svmla_x (pg, C (1), C (2), r); -- svfloat32_t p34 = svmla_lane (C (3), r, c4_invln2_and_ln2, 0); -- svfloat32_t r2 = svmul_f32_x (pg, r, r); -+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), r, lane_consts, 2); -+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), r, lane_consts, 3); -+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); - svfloat32_t p14 = svmla_x (pg, p12, p34, r2); -- svfloat32_t p0 = svmul_f32_x (pg, r, C (0)); -+ svfloat32_t p0 = svmul_lane (r, lane_consts, 1); - svfloat32_t poly = svmla_x (pg, p0, r2, p14); - - return svmla_x (pg, scale, scale, poly); - -commit c4373426e3a85ec483a0f412c2a7c6cdfa32ccdb -Author: Joe Ramsay -Date: Mon Sep 23 15:30:20 2024 +0100 - - AArch64: Improve codegen in SVE F32 logs - - Reduce MOVPRFXs by using unpredicated (non-destructive) instructions - where possible. Similar to the recent change to AdvSIMD F32 logs, - adjust special-case arguments and bounds to allow for more optimal - register usage. For all 3 routines one MOVPRFX remains in the - reduction, which cannot be avoided as immediate AND and ASR are both - destructive. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit a15b1394b5eba98ffe28a02a392b587e4fe13c0d) - -diff --git a/sysdeps/aarch64/fpu/log10f_sve.c b/sysdeps/aarch64/fpu/log10f_sve.c -index bdbb49cd32..7913679f67 100644 ---- a/sysdeps/aarch64/fpu/log10f_sve.c -+++ b/sysdeps/aarch64/fpu/log10f_sve.c -@@ -24,6 +24,7 @@ static const struct data - float poly_0246[4]; - float poly_1357[4]; - float ln2, inv_ln10; -+ uint32_t off, lower; - } data = { - .poly_1357 = { - /* Coefficients copied from the AdvSIMD routine, then rearranged so that coeffs -@@ -35,18 +36,23 @@ static const struct data - -0x1.0fc92cp-4f }, - .ln2 = 0x1.62e43p-1f, - .inv_ln10 = 0x1.bcb7b2p-2f, -+ .off = 0x3f2aaaab, -+ /* Lower bound is the smallest positive normal float 0x00800000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */ -+ .lower = 0x00800000 - 0x3f2aaaab - }; - --#define Min 0x00800000 --#define Max 0x7f800000 --#define Thres 0x7f000000 /* Max - Min. */ --#define Offset 0x3f2aaaab /* 0.666667. */ -+#define Thres 0x7f000000 /* asuint32(inf) - 0x00800000. */ - #define MantissaMask 0x007fffff - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+special_case (svuint32_t u_off, svfloat32_t p, svfloat32_t r2, svfloat32_t y, -+ svbool_t cmp) - { -- return sv_call_f32 (log10f, x, y, special); -+ return sv_call_f32 ( -+ log10f, svreinterpret_f32 (svadd_x (svptrue_b32 (), u_off, data.off)), -+ svmla_x (svptrue_b32 (), p, r2, y), cmp); - } - - /* Optimised implementation of SVE log10f using the same algorithm and -@@ -57,23 +63,25 @@ special_case (svfloat32_t x, svfloat32_t y, svbool_t special) - svfloat32_t SV_NAME_F1 (log10) (svfloat32_t x, const svbool_t pg) - { - const struct data *d = ptr_barrier (&data); -- svuint32_t ix = svreinterpret_u32 (x); -- svbool_t special = svcmpge (pg, svsub_x (pg, ix, Min), Thres); -+ -+ svuint32_t u_off = svreinterpret_u32 (x); -+ -+ u_off = svsub_x (pg, u_off, d->off); -+ svbool_t special = svcmpge (pg, svsub_x (pg, u_off, d->lower), Thres); - - /* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */ -- ix = svsub_x (pg, ix, Offset); - svfloat32_t n = svcvt_f32_x ( -- pg, svasr_x (pg, svreinterpret_s32 (ix), 23)); /* signextend. */ -- ix = svand_x (pg, ix, MantissaMask); -- ix = svadd_x (pg, ix, Offset); -+ pg, svasr_x (pg, svreinterpret_s32 (u_off), 23)); /* signextend. */ -+ svuint32_t ix = svand_x (pg, u_off, MantissaMask); -+ ix = svadd_x (pg, ix, d->off); - svfloat32_t r = svsub_x (pg, svreinterpret_f32 (ix), 1.0f); - - /* y = log10(1+r) + n*log10(2) - log10(1+r) ~ r * InvLn(10) + P(r) - where P(r) is a polynomial. Use order 9 for log10(1+x), i.e. order 8 for - log10(1+x)/x, with x in [-1/3, 1/3] (offset=2/3). */ -- svfloat32_t r2 = svmul_x (pg, r, r); -- svfloat32_t r4 = svmul_x (pg, r2, r2); -+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); -+ svfloat32_t r4 = svmul_x (svptrue_b32 (), r2, r2); - svfloat32_t p_1357 = svld1rq (svptrue_b32 (), &d->poly_1357[0]); - svfloat32_t q_01 = svmla_lane (sv_f32 (d->poly_0246[0]), r, p_1357, 0); - svfloat32_t q_23 = svmla_lane (sv_f32 (d->poly_0246[1]), r, p_1357, 1); -@@ -88,7 +96,6 @@ svfloat32_t SV_NAME_F1 (log10) (svfloat32_t x, const svbool_t pg) - hi = svmul_x (pg, hi, d->inv_ln10); - - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svmla_x (svnot_z (pg, special), hi, r2, y), -- special); -- return svmla_x (pg, hi, r2, y); -+ return special_case (u_off, hi, r2, y, special); -+ return svmla_x (svptrue_b32 (), hi, r2, y); - } -diff --git a/sysdeps/aarch64/fpu/log2f_sve.c b/sysdeps/aarch64/fpu/log2f_sve.c -index 5031c42483..939d89bfb9 100644 ---- a/sysdeps/aarch64/fpu/log2f_sve.c -+++ b/sysdeps/aarch64/fpu/log2f_sve.c -@@ -23,6 +23,7 @@ static const struct data - { - float poly_02468[5]; - float poly_1357[4]; -+ uint32_t off, lower; - } data = { - .poly_1357 = { - /* Coefficients copied from the AdvSIMD routine, then rearranged so that coeffs -@@ -32,18 +33,23 @@ static const struct data - }, - .poly_02468 = { 0x1.715476p0f, 0x1.ec701cp-2f, 0x1.27a0b8p-2f, - 0x1.9d8ecap-3f, 0x1.9e495p-3f }, -+ .off = 0x3f2aaaab, -+ /* Lower bound is the smallest positive normal float 0x00800000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */ -+ .lower = 0x00800000 - 0x3f2aaaab - }; - --#define Min (0x00800000) --#define Max (0x7f800000) --#define Thres (0x7f000000) /* Max - Min. */ -+#define Thresh (0x7f000000) /* asuint32(inf) - 0x00800000. */ - #define MantissaMask (0x007fffff) --#define Off (0x3f2aaaab) /* 0.666667. */ - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t cmp) -+special_case (svuint32_t u_off, svfloat32_t p, svfloat32_t r2, svfloat32_t y, -+ svbool_t cmp) - { -- return sv_call_f32 (log2f, x, y, cmp); -+ return sv_call_f32 ( -+ log2f, svreinterpret_f32 (svadd_x (svptrue_b32 (), u_off, data.off)), -+ svmla_x (svptrue_b32 (), p, r2, y), cmp); - } - - /* Optimised implementation of SVE log2f, using the same algorithm -@@ -55,19 +61,20 @@ svfloat32_t SV_NAME_F1 (log2) (svfloat32_t x, const svbool_t pg) - { - const struct data *d = ptr_barrier (&data); - -- svuint32_t u = svreinterpret_u32 (x); -- svbool_t special = svcmpge (pg, svsub_x (pg, u, Min), Thres); -+ svuint32_t u_off = svreinterpret_u32 (x); -+ -+ u_off = svsub_x (pg, u_off, d->off); -+ svbool_t special = svcmpge (pg, svsub_x (pg, u_off, d->lower), Thresh); - - /* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */ -- u = svsub_x (pg, u, Off); - svfloat32_t n = svcvt_f32_x ( -- pg, svasr_x (pg, svreinterpret_s32 (u), 23)); /* Sign-extend. */ -- u = svand_x (pg, u, MantissaMask); -- u = svadd_x (pg, u, Off); -+ pg, svasr_x (pg, svreinterpret_s32 (u_off), 23)); /* Sign-extend. */ -+ svuint32_t u = svand_x (pg, u_off, MantissaMask); -+ u = svadd_x (pg, u, d->off); - svfloat32_t r = svsub_x (pg, svreinterpret_f32 (u), 1.0f); - - /* y = log2(1+r) + n. */ -- svfloat32_t r2 = svmul_x (pg, r, r); -+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); - - /* Evaluate polynomial using pairwise Horner scheme. */ - svfloat32_t p_1357 = svld1rq (svptrue_b32 (), &d->poly_1357[0]); -@@ -81,6 +88,6 @@ svfloat32_t SV_NAME_F1 (log2) (svfloat32_t x, const svbool_t pg) - y = svmla_x (pg, q_01, r2, y); - - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svmla_x (svnot_z (pg, special), n, r, y), special); -- return svmla_x (pg, n, r, y); -+ return special_case (u_off, n, r, y, special); -+ return svmla_x (svptrue_b32 (), n, r, y); - } -diff --git a/sysdeps/aarch64/fpu/logf_sve.c b/sysdeps/aarch64/fpu/logf_sve.c -index d64e810cfe..5b9324678d 100644 ---- a/sysdeps/aarch64/fpu/logf_sve.c -+++ b/sysdeps/aarch64/fpu/logf_sve.c -@@ -24,6 +24,7 @@ static const struct data - float poly_0135[4]; - float poly_246[3]; - float ln2; -+ uint32_t off, lower; - } data = { - .poly_0135 = { - /* Coefficients copied from the AdvSIMD routine in math/, then rearranged so -@@ -32,19 +33,24 @@ static const struct data - -0x1.3e737cp-3f, 0x1.5a9aa2p-3f, 0x1.961348p-3f, 0x1.555d7cp-2f - }, - .poly_246 = { -0x1.4f9934p-3f, -0x1.00187cp-2f, -0x1.ffffc8p-2f }, -- .ln2 = 0x1.62e43p-1f -+ .ln2 = 0x1.62e43p-1f, -+ .off = 0x3f2aaaab, -+ /* Lower bound is the smallest positive normal float 0x00800000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound is 0x0080000 - offset (which wraps around). */ -+ .lower = 0x00800000 - 0x3f2aaaab - }; - --#define Min (0x00800000) --#define Max (0x7f800000) --#define Thresh (0x7f000000) /* Max - Min. */ -+#define Thresh (0x7f000000) /* asuint32(inf) - 0x00800000. */ - #define Mask (0x007fffff) --#define Off (0x3f2aaaab) /* 0.666667. */ - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t cmp) -+special_case (svuint32_t u_off, svfloat32_t p, svfloat32_t r2, svfloat32_t y, -+ svbool_t cmp) - { -- return sv_call_f32 (logf, x, y, cmp); -+ return sv_call_f32 ( -+ logf, svreinterpret_f32 (svadd_x (svptrue_b32 (), u_off, data.off)), -+ svmla_x (svptrue_b32 (), p, r2, y), cmp); - } - - /* Optimised implementation of SVE logf, using the same algorithm and -@@ -55,19 +61,21 @@ svfloat32_t SV_NAME_F1 (log) (svfloat32_t x, const svbool_t pg) - { - const struct data *d = ptr_barrier (&data); - -- svuint32_t u = svreinterpret_u32 (x); -- svbool_t cmp = svcmpge (pg, svsub_x (pg, u, Min), Thresh); -+ svuint32_t u_off = svreinterpret_u32 (x); -+ -+ u_off = svsub_x (pg, u_off, d->off); -+ svbool_t cmp = svcmpge (pg, svsub_x (pg, u_off, d->lower), Thresh); - - /* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */ -- u = svsub_x (pg, u, Off); - svfloat32_t n = svcvt_f32_x ( -- pg, svasr_x (pg, svreinterpret_s32 (u), 23)); /* Sign-extend. */ -- u = svand_x (pg, u, Mask); -- u = svadd_x (pg, u, Off); -+ pg, svasr_x (pg, svreinterpret_s32 (u_off), 23)); /* Sign-extend. */ -+ -+ svuint32_t u = svand_x (pg, u_off, Mask); -+ u = svadd_x (pg, u, d->off); - svfloat32_t r = svsub_x (pg, svreinterpret_f32 (u), 1.0f); - - /* y = log(1+r) + n*ln2. */ -- svfloat32_t r2 = svmul_x (pg, r, r); -+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); - /* n*ln2 + r + r2*(P6 + r*P5 + r2*(P4 + r*P3 + r2*(P2 + r*P1 + r2*P0))). */ - svfloat32_t p_0135 = svld1rq (svptrue_b32 (), &d->poly_0135[0]); - svfloat32_t p = svmla_lane (sv_f32 (d->poly_246[0]), r, p_0135, 1); -@@ -80,6 +88,6 @@ svfloat32_t SV_NAME_F1 (log) (svfloat32_t x, const svbool_t pg) - p = svmla_x (pg, r, n, d->ln2); - - if (__glibc_unlikely (svptest_any (pg, cmp))) -- return special_case (x, svmla_x (svnot_z (pg, cmp), p, r2, y), cmp); -+ return special_case (u_off, p, r2, y, cmp); - return svmla_x (pg, p, r2, y); - } - -commit 520240173029fd03388ec01db9a5359291cbbd27 -Author: Joe Ramsay -Date: Mon Sep 23 15:32:14 2024 +0100 - - AArch64: Improve codegen in users of AdvSIMD log1pf helper - - log1pf is quite register-intensive - use fewer registers for the - polynomial, and make various changes to shorten dependency chains in - parent routines. There is now no spilling with GCC 14. Accuracy moves - around a little - comments adjusted accordingly but does not require - regen-ulps. - - Use the helper in log1pf as well, instead of having separate - implementations. The more accurate polynomial means special-casing can - be simplified, and the shorter dependency chain avoids the usual dance - around v0, which is otherwise difficult. - - There is a small duplication of vectors containing 1.0f (or 0x3f800000) - - GCC is not currently able to efficiently handle values which fit in FMOV - but not MOVI, and are reinterpreted to integer. There may be potential - for more optimisation if this is fixed. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 5bc100bd4b7e00db3009ae93d25d303341545d23) - -diff --git a/sysdeps/aarch64/fpu/acoshf_advsimd.c b/sysdeps/aarch64/fpu/acoshf_advsimd.c -index 8916dcbf40..004474acf9 100644 ---- a/sysdeps/aarch64/fpu/acoshf_advsimd.c -+++ b/sysdeps/aarch64/fpu/acoshf_advsimd.c -@@ -25,35 +25,32 @@ const static struct data - { - struct v_log1pf_data log1pf_consts; - uint32x4_t one; -- uint16x4_t thresh; --} data = { -- .log1pf_consts = V_LOG1PF_CONSTANTS_TABLE, -- .one = V4 (0x3f800000), -- .thresh = V4 (0x2000) /* top(asuint(SquareLim) - asuint(1)). */ --}; -+} data = { .log1pf_consts = V_LOG1PF_CONSTANTS_TABLE, .one = V4 (0x3f800000) }; -+ -+#define Thresh vdup_n_u16 (0x2000) /* top(asuint(SquareLim) - asuint(1)). */ - - static float32x4_t NOINLINE VPCS_ATTR - special_case (float32x4_t x, float32x4_t y, uint16x4_t special, -- const struct v_log1pf_data d) -+ const struct v_log1pf_data *d) - { - return v_call_f32 (acoshf, x, log1pf_inline (y, d), vmovl_u16 (special)); - } - - /* Vector approximation for single-precision acosh, based on log1p. Maximum - error depends on WANT_SIMD_EXCEPT. With SIMD fp exceptions enabled, it -- is 2.78 ULP: -- __v_acoshf(0x1.07887p+0) got 0x1.ef9e9cp-3 -- want 0x1.ef9ea2p-3. -+ is 3.00 ULP: -+ _ZGVnN4v_acoshf(0x1.01df3ap+0) got 0x1.ef0a82p-4 -+ want 0x1.ef0a7cp-4. - With exceptions disabled, we can compute u with a shorter dependency chain, -- which gives maximum error of 3.07 ULP: -- __v_acoshf(0x1.01f83ep+0) got 0x1.fbc7fap-4 -- want 0x1.fbc7f4p-4. */ -+ which gives maximum error of 3.22 ULP: -+ _ZGVnN4v_acoshf(0x1.007ef2p+0) got 0x1.fdcdccp-5 -+ want 0x1.fdcdd2p-5. */ - - VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (acosh) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); - uint32x4_t ix = vreinterpretq_u32_f32 (x); -- uint16x4_t special = vcge_u16 (vsubhn_u32 (ix, d->one), d->thresh); -+ uint16x4_t special = vcge_u16 (vsubhn_u32 (ix, d->one), Thresh); - - #if WANT_SIMD_EXCEPT - /* Mask special lanes with 1 to side-step spurious invalid or overflow. Use -@@ -64,15 +61,16 @@ VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (acosh) (float32x4_t x) - float32x4_t xm1 = v_zerofy_f32 (vsubq_f32 (x, v_f32 (1)), p); - float32x4_t u = vfmaq_f32 (vaddq_f32 (xm1, xm1), xm1, xm1); - #else -- float32x4_t xm1 = vsubq_f32 (x, v_f32 (1)); -- float32x4_t u = vmulq_f32 (xm1, vaddq_f32 (x, v_f32 (1.0f))); -+ float32x4_t xm1 = vsubq_f32 (x, vreinterpretq_f32_u32 (d->one)); -+ float32x4_t u -+ = vmulq_f32 (xm1, vaddq_f32 (x, vreinterpretq_f32_u32 (d->one))); - #endif - - float32x4_t y = vaddq_f32 (xm1, vsqrtq_f32 (u)); - - if (__glibc_unlikely (v_any_u16h (special))) -- return special_case (x, y, special, d->log1pf_consts); -- return log1pf_inline (y, d->log1pf_consts); -+ return special_case (x, y, special, &d->log1pf_consts); -+ return log1pf_inline (y, &d->log1pf_consts); - } - libmvec_hidden_def (V_NAME_F1 (acosh)) - HALF_WIDTH_ALIAS_F1 (acosh) -diff --git a/sysdeps/aarch64/fpu/asinhf_advsimd.c b/sysdeps/aarch64/fpu/asinhf_advsimd.c -index 09fd8a6143..eb789b91b6 100644 ---- a/sysdeps/aarch64/fpu/asinhf_advsimd.c -+++ b/sysdeps/aarch64/fpu/asinhf_advsimd.c -@@ -20,16 +20,16 @@ - #include "v_math.h" - #include "v_log1pf_inline.h" - --#define SignMask v_u32 (0x80000000) -- - const static struct data - { - struct v_log1pf_data log1pf_consts; -+ float32x4_t one; - uint32x4_t big_bound; - #if WANT_SIMD_EXCEPT - uint32x4_t tiny_bound; - #endif - } data = { -+ .one = V4 (1), - .log1pf_consts = V_LOG1PF_CONSTANTS_TABLE, - .big_bound = V4 (0x5f800000), /* asuint(0x1p64). */ - #if WANT_SIMD_EXCEPT -@@ -38,20 +38,27 @@ const static struct data - }; - - static float32x4_t NOINLINE VPCS_ATTR --special_case (float32x4_t x, float32x4_t y, uint32x4_t special) -+special_case (float32x4_t x, uint32x4_t sign, float32x4_t y, -+ uint32x4_t special, const struct data *d) - { -- return v_call_f32 (asinhf, x, y, special); -+ return v_call_f32 ( -+ asinhf, x, -+ vreinterpretq_f32_u32 (veorq_u32 ( -+ sign, vreinterpretq_u32_f32 (log1pf_inline (y, &d->log1pf_consts)))), -+ special); - } - - /* Single-precision implementation of vector asinh(x), using vector log1p. -- Worst-case error is 2.66 ULP, at roughly +/-0.25: -- __v_asinhf(0x1.01b04p-2) got 0x1.fe163ep-3 want 0x1.fe1638p-3. */ -+ Worst-case error is 2.59 ULP: -+ _ZGVnN4v_asinhf(0x1.d86124p-3) got 0x1.d449bep-3 -+ want 0x1.d449c4p-3. */ - VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (asinh) (float32x4_t x) - { - const struct data *dat = ptr_barrier (&data); -- uint32x4_t iax = vbicq_u32 (vreinterpretq_u32_f32 (x), SignMask); -- float32x4_t ax = vreinterpretq_f32_u32 (iax); -+ float32x4_t ax = vabsq_f32 (x); -+ uint32x4_t iax = vreinterpretq_u32_f32 (ax); - uint32x4_t special = vcgeq_u32 (iax, dat->big_bound); -+ uint32x4_t sign = veorq_u32 (vreinterpretq_u32_f32 (x), iax); - float32x4_t special_arg = x; - - #if WANT_SIMD_EXCEPT -@@ -68,13 +75,13 @@ VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (asinh) (float32x4_t x) - /* asinh(x) = log(x + sqrt(x * x + 1)). - For positive x, asinh(x) = log1p(x + x * x / (1 + sqrt(x * x + 1))). */ - float32x4_t d -- = vaddq_f32 (v_f32 (1), vsqrtq_f32 (vfmaq_f32 (v_f32 (1), x, x))); -- float32x4_t y = log1pf_inline ( -- vaddq_f32 (ax, vdivq_f32 (vmulq_f32 (ax, ax), d)), dat->log1pf_consts); -+ = vaddq_f32 (v_f32 (1), vsqrtq_f32 (vfmaq_f32 (dat->one, ax, ax))); -+ float32x4_t y = vaddq_f32 (ax, vdivq_f32 (vmulq_f32 (ax, ax), d)); - - if (__glibc_unlikely (v_any_u32 (special))) -- return special_case (special_arg, vbslq_f32 (SignMask, x, y), special); -- return vbslq_f32 (SignMask, x, y); -+ return special_case (special_arg, sign, y, special, dat); -+ return vreinterpretq_f32_u32 (veorq_u32 ( -+ sign, vreinterpretq_u32_f32 (log1pf_inline (y, &dat->log1pf_consts)))); - } - libmvec_hidden_def (V_NAME_F1 (asinh)) - HALF_WIDTH_ALIAS_F1 (asinh) -diff --git a/sysdeps/aarch64/fpu/atanhf_advsimd.c b/sysdeps/aarch64/fpu/atanhf_advsimd.c -index ae488f7b54..818b6c92ad 100644 ---- a/sysdeps/aarch64/fpu/atanhf_advsimd.c -+++ b/sysdeps/aarch64/fpu/atanhf_advsimd.c -@@ -40,15 +40,17 @@ const static struct data - #define Half v_u32 (0x3f000000) - - static float32x4_t NOINLINE VPCS_ATTR --special_case (float32x4_t x, float32x4_t y, uint32x4_t special) -+special_case (float32x4_t x, float32x4_t halfsign, float32x4_t y, -+ uint32x4_t special) - { -- return v_call_f32 (atanhf, x, y, special); -+ return v_call_f32 (atanhf, vbslq_f32 (AbsMask, x, halfsign), -+ vmulq_f32 (halfsign, y), special); - } - - /* Approximation for vector single-precision atanh(x) using modified log1p. -- The maximum error is 3.08 ULP: -- __v_atanhf(0x1.ff215p-5) got 0x1.ffcb7cp-5 -- want 0x1.ffcb82p-5. */ -+ The maximum error is 2.93 ULP: -+ _ZGVnN4v_atanhf(0x1.f43d7p-5) got 0x1.f4dcfep-5 -+ want 0x1.f4dcf8p-5. */ - VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (atanh) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -@@ -68,11 +70,19 @@ VPCS_ATTR float32x4_t NOINLINE V_NAME_F1 (atanh) (float32x4_t x) - uint32x4_t special = vcgeq_u32 (iax, d->one); - #endif - -- float32x4_t y = vdivq_f32 (vaddq_f32 (ax, ax), vsubq_f32 (v_f32 (1), ax)); -- y = log1pf_inline (y, d->log1pf_consts); -+ float32x4_t y = vdivq_f32 (vaddq_f32 (ax, ax), -+ vsubq_f32 (vreinterpretq_f32_u32 (d->one), ax)); -+ y = log1pf_inline (y, &d->log1pf_consts); - -+ /* If exceptions not required, pass ax to special-case for shorter dependency -+ chain. If exceptions are required ax will have been zerofied, so have to -+ pass x. */ - if (__glibc_unlikely (v_any_u32 (special))) -- return special_case (x, vmulq_f32 (halfsign, y), special); -+#if WANT_SIMD_EXCEPT -+ return special_case (x, halfsign, y, special); -+#else -+ return special_case (ax, halfsign, y, special); -+#endif - return vmulq_f32 (halfsign, y); - } - libmvec_hidden_def (V_NAME_F1 (atanh)) -diff --git a/sysdeps/aarch64/fpu/log1pf_advsimd.c b/sysdeps/aarch64/fpu/log1pf_advsimd.c -index 8cfa28fb8a..00006fc703 100644 ---- a/sysdeps/aarch64/fpu/log1pf_advsimd.c -+++ b/sysdeps/aarch64/fpu/log1pf_advsimd.c -@@ -18,114 +18,79 @@ - . */ - - #include "v_math.h" --#include "poly_advsimd_f32.h" -+#include "v_log1pf_inline.h" -+ -+#if WANT_SIMD_EXCEPT - - const static struct data - { -- float32x4_t poly[8], ln2; -- uint32x4_t tiny_bound, minus_one, four, thresh; -- int32x4_t three_quarters; -+ uint32x4_t minus_one, thresh; -+ struct v_log1pf_data d; - } data = { -- .poly = { /* Generated using FPMinimax in [-0.25, 0.5]. First two coefficients -- (1, -0.5) are not stored as they can be generated more -- efficiently. */ -- V4 (0x1.5555aap-2f), V4 (-0x1.000038p-2f), V4 (0x1.99675cp-3f), -- V4 (-0x1.54ef78p-3f), V4 (0x1.28a1f4p-3f), V4 (-0x1.0da91p-3f), -- V4 (0x1.abcb6p-4f), V4 (-0x1.6f0d5ep-5f) }, -- .ln2 = V4 (0x1.62e43p-1f), -- .tiny_bound = V4 (0x34000000), /* asuint32(0x1p-23). ulp=0.5 at 0x1p-23. */ -- .thresh = V4 (0x4b800000), /* asuint32(INFINITY) - tiny_bound. */ -+ .d = V_LOG1PF_CONSTANTS_TABLE, -+ .thresh = V4 (0x4b800000), /* asuint32(INFINITY) - TinyBound. */ - .minus_one = V4 (0xbf800000), -- .four = V4 (0x40800000), -- .three_quarters = V4 (0x3f400000) - }; - --static inline float32x4_t --eval_poly (float32x4_t m, const float32x4_t *p) --{ -- /* Approximate log(1+m) on [-0.25, 0.5] using split Estrin scheme. */ -- float32x4_t p_12 = vfmaq_f32 (v_f32 (-0.5), m, p[0]); -- float32x4_t p_34 = vfmaq_f32 (p[1], m, p[2]); -- float32x4_t p_56 = vfmaq_f32 (p[3], m, p[4]); -- float32x4_t p_78 = vfmaq_f32 (p[5], m, p[6]); -- -- float32x4_t m2 = vmulq_f32 (m, m); -- float32x4_t p_02 = vfmaq_f32 (m, m2, p_12); -- float32x4_t p_36 = vfmaq_f32 (p_34, m2, p_56); -- float32x4_t p_79 = vfmaq_f32 (p_78, m2, p[7]); -- -- float32x4_t m4 = vmulq_f32 (m2, m2); -- float32x4_t p_06 = vfmaq_f32 (p_02, m4, p_36); -- return vfmaq_f32 (p_06, m4, vmulq_f32 (m4, p_79)); --} -+/* asuint32(0x1p-23). ulp=0.5 at 0x1p-23. */ -+# define TinyBound v_u32 (0x34000000) - - static float32x4_t NOINLINE VPCS_ATTR --special_case (float32x4_t x, float32x4_t y, uint32x4_t special) -+special_case (float32x4_t x, uint32x4_t cmp, const struct data *d) - { -- return v_call_f32 (log1pf, x, y, special); -+ /* Side-step special lanes so fenv exceptions are not triggered -+ inadvertently. */ -+ float32x4_t x_nospecial = v_zerofy_f32 (x, cmp); -+ return v_call_f32 (log1pf, x, log1pf_inline (x_nospecial, &d->d), cmp); - } - --/* Vector log1pf approximation using polynomial on reduced interval. Accuracy -- is roughly 2.02 ULP: -- log1pf(0x1.21e13ap-2) got 0x1.fe8028p-3 want 0x1.fe802cp-3. */ -+/* Vector log1pf approximation using polynomial on reduced interval. Worst-case -+ error is 1.69 ULP: -+ _ZGVnN4v_log1pf(0x1.04418ap-2) got 0x1.cfcbd8p-3 -+ want 0x1.cfcbdcp-3. */ - VPCS_ATTR float32x4_t V_NAME_F1 (log1p) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- - uint32x4_t ix = vreinterpretq_u32_f32 (x); - uint32x4_t ia = vreinterpretq_u32_f32 (vabsq_f32 (x)); -+ - uint32x4_t special_cases -- = vorrq_u32 (vcgeq_u32 (vsubq_u32 (ia, d->tiny_bound), d->thresh), -+ = vorrq_u32 (vcgeq_u32 (vsubq_u32 (ia, TinyBound), d->thresh), - vcgeq_u32 (ix, d->minus_one)); -- float32x4_t special_arg = x; - --#if WANT_SIMD_EXCEPT - if (__glibc_unlikely (v_any_u32 (special_cases))) -- /* Side-step special lanes so fenv exceptions are not triggered -- inadvertently. */ -- x = v_zerofy_f32 (x, special_cases); --#endif -+ return special_case (x, special_cases, d); - -- /* With x + 1 = t * 2^k (where t = m + 1 and k is chosen such that m -- is in [-0.25, 0.5]): -- log1p(x) = log(t) + log(2^k) = log1p(m) + k*log(2). -- -- We approximate log1p(m) with a polynomial, then scale by -- k*log(2). Instead of doing this directly, we use an intermediate -- scale factor s = 4*k*log(2) to ensure the scale is representable -- as a normalised fp32 number. */ -+ return log1pf_inline (x, &d->d); -+} - -- float32x4_t m = vaddq_f32 (x, v_f32 (1.0f)); -+#else - -- /* Choose k to scale x to the range [-1/4, 1/2]. */ -- int32x4_t k -- = vandq_s32 (vsubq_s32 (vreinterpretq_s32_f32 (m), d->three_quarters), -- v_s32 (0xff800000)); -- uint32x4_t ku = vreinterpretq_u32_s32 (k); -+const static struct v_log1pf_data data = V_LOG1PF_CONSTANTS_TABLE; - -- /* Scale x by exponent manipulation. */ -- float32x4_t m_scale -- = vreinterpretq_f32_u32 (vsubq_u32 (vreinterpretq_u32_f32 (x), ku)); -+static float32x4_t NOINLINE VPCS_ATTR -+special_case (float32x4_t x, uint32x4_t cmp) -+{ -+ return v_call_f32 (log1pf, x, log1pf_inline (x, ptr_barrier (&data)), cmp); -+} - -- /* Scale up to ensure that the scale factor is representable as normalised -- fp32 number, and scale m down accordingly. */ -- float32x4_t s = vreinterpretq_f32_u32 (vsubq_u32 (d->four, ku)); -- m_scale = vaddq_f32 (m_scale, vfmaq_f32 (v_f32 (-1.0f), v_f32 (0.25f), s)); -+/* Vector log1pf approximation using polynomial on reduced interval. Worst-case -+ error is 1.63 ULP: -+ _ZGVnN4v_log1pf(0x1.216d12p-2) got 0x1.fdcb12p-3 -+ want 0x1.fdcb16p-3. */ -+VPCS_ATTR float32x4_t V_NAME_F1 (log1p) (float32x4_t x) -+{ -+ uint32x4_t special_cases = vornq_u32 (vcleq_f32 (x, v_f32 (-1)), -+ vcaleq_f32 (x, v_f32 (0x1p127f))); - -- /* Evaluate polynomial on the reduced interval. */ -- float32x4_t p = eval_poly (m_scale, d->poly); -+ if (__glibc_unlikely (v_any_u32 (special_cases))) -+ return special_case (x, special_cases); - -- /* The scale factor to be applied back at the end - by multiplying float(k) -- by 2^-23 we get the unbiased exponent of k. */ -- float32x4_t scale_back = vcvtq_f32_s32 (vshrq_n_s32 (k, 23)); -+ return log1pf_inline (x, ptr_barrier (&data)); -+} - -- /* Apply the scaling back. */ -- float32x4_t y = vfmaq_f32 (p, scale_back, d->ln2); -+#endif - -- if (__glibc_unlikely (v_any_u32 (special_cases))) -- return special_case (special_arg, y, special_cases); -- return y; --} - libmvec_hidden_def (V_NAME_F1 (log1p)) - HALF_WIDTH_ALIAS_F1 (log1p) - strong_alias (V_NAME_F1 (log1p), V_NAME_F1 (logp1)) -diff --git a/sysdeps/aarch64/fpu/v_log1pf_inline.h b/sysdeps/aarch64/fpu/v_log1pf_inline.h -index 643a6cdcfc..73e45a942e 100644 ---- a/sysdeps/aarch64/fpu/v_log1pf_inline.h -+++ b/sysdeps/aarch64/fpu/v_log1pf_inline.h -@@ -25,54 +25,81 @@ - - struct v_log1pf_data - { -- float32x4_t poly[8], ln2; - uint32x4_t four; - int32x4_t three_quarters; -+ float c0, c3, c5, c7; -+ float32x4_t c4, c6, c1, c2, ln2; - }; - - /* Polynomial generated using FPMinimax in [-0.25, 0.5]. First two coefficients - (1, -0.5) are not stored as they can be generated more efficiently. */ - #define V_LOG1PF_CONSTANTS_TABLE \ - { \ -- .poly \ -- = { V4 (0x1.5555aap-2f), V4 (-0x1.000038p-2f), V4 (0x1.99675cp-3f), \ -- V4 (-0x1.54ef78p-3f), V4 (0x1.28a1f4p-3f), V4 (-0x1.0da91p-3f), \ -- V4 (0x1.abcb6p-4f), V4 (-0x1.6f0d5ep-5f) }, \ -- .ln2 = V4 (0x1.62e43p-1f), .four = V4 (0x40800000), \ -- .three_quarters = V4 (0x3f400000) \ -+ .c0 = 0x1.5555aap-2f, .c1 = V4 (-0x1.000038p-2f), \ -+ .c2 = V4 (0x1.99675cp-3f), .c3 = -0x1.54ef78p-3f, \ -+ .c4 = V4 (0x1.28a1f4p-3f), .c5 = -0x1.0da91p-3f, \ -+ .c6 = V4 (0x1.abcb6p-4f), .c7 = -0x1.6f0d5ep-5f, \ -+ .ln2 = V4 (0x1.62e43p-1f), .four = V4 (0x40800000), \ -+ .three_quarters = V4 (0x3f400000) \ - } - - static inline float32x4_t --eval_poly (float32x4_t m, const float32x4_t *c) -+eval_poly (float32x4_t m, const struct v_log1pf_data *d) - { -- /* Approximate log(1+m) on [-0.25, 0.5] using pairwise Horner (main routine -- uses split Estrin, but this way reduces register pressure in the calling -- routine). */ -- float32x4_t q = vfmaq_f32 (v_f32 (-0.5), m, c[0]); -+ /* Approximate log(1+m) on [-0.25, 0.5] using pairwise Horner. */ -+ float32x4_t c0357 = vld1q_f32 (&d->c0); -+ float32x4_t q = vfmaq_laneq_f32 (v_f32 (-0.5), m, c0357, 0); - float32x4_t m2 = vmulq_f32 (m, m); -- q = vfmaq_f32 (m, m2, q); -- float32x4_t p = v_pw_horner_6_f32 (m, m2, c + 1); -+ float32x4_t p67 = vfmaq_laneq_f32 (d->c6, m, c0357, 3); -+ float32x4_t p45 = vfmaq_laneq_f32 (d->c4, m, c0357, 2); -+ float32x4_t p23 = vfmaq_laneq_f32 (d->c2, m, c0357, 1); -+ float32x4_t p = vfmaq_f32 (p45, m2, p67); -+ p = vfmaq_f32 (p23, m2, p); -+ p = vfmaq_f32 (d->c1, m, p); - p = vmulq_f32 (m2, p); -- return vfmaq_f32 (q, m2, p); -+ p = vfmaq_f32 (m, m2, p); -+ return vfmaq_f32 (p, m2, q); - } - - static inline float32x4_t --log1pf_inline (float32x4_t x, const struct v_log1pf_data d) -+log1pf_inline (float32x4_t x, const struct v_log1pf_data *d) - { -- /* Helper for calculating log(x + 1). Copied from log1pf_2u1.c, with no -- special-case handling. See that file for details of the algorithm. */ -+ /* Helper for calculating log(x + 1). */ -+ -+ /* With x + 1 = t * 2^k (where t = m + 1 and k is chosen such that m -+ is in [-0.25, 0.5]): -+ log1p(x) = log(t) + log(2^k) = log1p(m) + k*log(2). -+ -+ We approximate log1p(m) with a polynomial, then scale by -+ k*log(2). Instead of doing this directly, we use an intermediate -+ scale factor s = 4*k*log(2) to ensure the scale is representable -+ as a normalised fp32 number. */ - float32x4_t m = vaddq_f32 (x, v_f32 (1.0f)); -+ -+ /* Choose k to scale x to the range [-1/4, 1/2]. */ - int32x4_t k -- = vandq_s32 (vsubq_s32 (vreinterpretq_s32_f32 (m), d.three_quarters), -+ = vandq_s32 (vsubq_s32 (vreinterpretq_s32_f32 (m), d->three_quarters), - v_s32 (0xff800000)); - uint32x4_t ku = vreinterpretq_u32_s32 (k); -- float32x4_t s = vreinterpretq_f32_u32 (vsubq_u32 (d.four, ku)); -+ -+ /* Scale up to ensure that the scale factor is representable as normalised -+ fp32 number, and scale m down accordingly. */ -+ float32x4_t s = vreinterpretq_f32_u32 (vsubq_u32 (d->four, ku)); -+ -+ /* Scale x by exponent manipulation. */ - float32x4_t m_scale - = vreinterpretq_f32_u32 (vsubq_u32 (vreinterpretq_u32_f32 (x), ku)); - m_scale = vaddq_f32 (m_scale, vfmaq_f32 (v_f32 (-1.0f), v_f32 (0.25f), s)); -- float32x4_t p = eval_poly (m_scale, d.poly); -+ -+ /* Evaluate polynomial on the reduced interval. */ -+ float32x4_t p = eval_poly (m_scale, d); -+ -+ /* The scale factor to be applied back at the end - by multiplying float(k) -+ by 2^-23 we get the unbiased exponent of k. */ - float32x4_t scale_back = vmulq_f32 (vcvtq_f32_s32 (k), v_f32 (0x1.0p-23f)); -- return vfmaq_f32 (p, scale_back, d.ln2); -+ -+ /* Apply the scaling back. */ -+ return vfmaq_f32 (p, scale_back, d->ln2); - } - - #endif - -commit a947a43b95bbea53ec50df058b42392fd5ea52b6 -Author: Joe Ramsay -Date: Mon Sep 23 15:32:53 2024 +0100 - - AArch64: Improve codegen in users of ADVSIMD expm1f helper - - Rearrange operations so MOV is not necessary in reduction or around - the special-case handler. Reduce memory access by using more indexed - MLAs in polynomial. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 7900ac490db32f6bccff812733f00280dde34e27) - -diff --git a/sysdeps/aarch64/fpu/expm1f_advsimd.c b/sysdeps/aarch64/fpu/expm1f_advsimd.c -index a0616ec754..8303ca296e 100644 ---- a/sysdeps/aarch64/fpu/expm1f_advsimd.c -+++ b/sysdeps/aarch64/fpu/expm1f_advsimd.c -@@ -18,27 +18,18 @@ - . */ - - #include "v_math.h" --#include "poly_advsimd_f32.h" -+#include "v_expm1f_inline.h" - - static const struct data - { -- float32x4_t poly[5]; -- float invln2_and_ln2[4]; -- float32x4_t shift; -- int32x4_t exponent_bias; -+ struct v_expm1f_data d; - #if WANT_SIMD_EXCEPT - uint32x4_t thresh; - #else - float32x4_t oflow_bound; - #endif - } data = { -- /* Generated using fpminimax with degree=5 in [-log(2)/2, log(2)/2]. */ -- .poly = { V4 (0x1.fffffep-2), V4 (0x1.5554aep-3), V4 (0x1.555736p-5), -- V4 (0x1.12287cp-7), V4 (0x1.6b55a2p-10) }, -- /* Stores constants: invln2, ln2_hi, ln2_lo, 0. */ -- .invln2_and_ln2 = { 0x1.715476p+0f, 0x1.62e4p-1f, 0x1.7f7d1cp-20f, 0 }, -- .shift = V4 (0x1.8p23f), -- .exponent_bias = V4 (0x3f800000), -+ .d = V_EXPM1F_DATA, - #if !WANT_SIMD_EXCEPT - /* Value above which expm1f(x) should overflow. Absolute value of the - underflow bound is greater than this, so it catches both cases - there is -@@ -55,67 +46,38 @@ static const struct data - #define TinyBound v_u32 (0x34000000 << 1) - - static float32x4_t VPCS_ATTR NOINLINE --special_case (float32x4_t x, float32x4_t y, uint32x4_t special) -+special_case (float32x4_t x, uint32x4_t special, const struct data *d) - { -- return v_call_f32 (expm1f, x, y, special); -+ return v_call_f32 ( -+ expm1f, x, expm1f_inline (v_zerofy_f32 (x, special), &d->d), special); - } - - /* Single-precision vector exp(x) - 1 function. -- The maximum error is 1.51 ULP: -- _ZGVnN4v_expm1f (0x1.8baa96p-2) got 0x1.e2fb9p-2 -- want 0x1.e2fb94p-2. */ -+ The maximum error is 1.62 ULP: -+ _ZGVnN4v_expm1f(0x1.85f83p-2) got 0x1.da9f4p-2 -+ want 0x1.da9f44p-2. */ - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (expm1) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- uint32x4_t ix = vreinterpretq_u32_f32 (x); - - #if WANT_SIMD_EXCEPT -+ uint32x4_t ix = vreinterpretq_u32_f32 (x); - /* If fp exceptions are to be triggered correctly, fall back to scalar for - |x| < 2^-23, |x| > oflow_bound, Inf & NaN. Add ix to itself for - shift-left by 1, and compare with thresh which was left-shifted offline - - this is effectively an absolute compare. */ - uint32x4_t special - = vcgeq_u32 (vsubq_u32 (vaddq_u32 (ix, ix), TinyBound), d->thresh); -- if (__glibc_unlikely (v_any_u32 (special))) -- x = v_zerofy_f32 (x, special); - #else - /* Handles very large values (+ve and -ve), +/-NaN, +/-Inf. */ - uint32x4_t special = vcagtq_f32 (x, d->oflow_bound); - #endif - -- /* Reduce argument to smaller range: -- Let i = round(x / ln2) -- and f = x - i * ln2, then f is in [-ln2/2, ln2/2]. -- exp(x) - 1 = 2^i * (expm1(f) + 1) - 1 -- where 2^i is exact because i is an integer. */ -- float32x4_t invln2_and_ln2 = vld1q_f32 (d->invln2_and_ln2); -- float32x4_t j -- = vsubq_f32 (vfmaq_laneq_f32 (d->shift, x, invln2_and_ln2, 0), d->shift); -- int32x4_t i = vcvtq_s32_f32 (j); -- float32x4_t f = vfmsq_laneq_f32 (x, j, invln2_and_ln2, 1); -- f = vfmsq_laneq_f32 (f, j, invln2_and_ln2, 2); -- -- /* Approximate expm1(f) using polynomial. -- Taylor expansion for expm1(x) has the form: -- x + ax^2 + bx^3 + cx^4 .... -- So we calculate the polynomial P(f) = a + bf + cf^2 + ... -- and assemble the approximation expm1(f) ~= f + f^2 * P(f). */ -- float32x4_t p = v_horner_4_f32 (f, d->poly); -- p = vfmaq_f32 (f, vmulq_f32 (f, f), p); -- -- /* Assemble the result. -- expm1(x) ~= 2^i * (p + 1) - 1 -- Let t = 2^i. */ -- int32x4_t u = vaddq_s32 (vshlq_n_s32 (i, 23), d->exponent_bias); -- float32x4_t t = vreinterpretq_f32_s32 (u); -- - if (__glibc_unlikely (v_any_u32 (special))) -- return special_case (vreinterpretq_f32_u32 (ix), -- vfmaq_f32 (vsubq_f32 (t, v_f32 (1.0f)), p, t), -- special); -+ return special_case (x, special, d); - - /* expm1(x) ~= p * t + (t - 1). */ -- return vfmaq_f32 (vsubq_f32 (t, v_f32 (1.0f)), p, t); -+ return expm1f_inline (x, &d->d); - } - libmvec_hidden_def (V_NAME_F1 (expm1)) - HALF_WIDTH_ALIAS_F1 (expm1) -diff --git a/sysdeps/aarch64/fpu/sinhf_advsimd.c b/sysdeps/aarch64/fpu/sinhf_advsimd.c -index 6bb7482dc2..c6ed7598e7 100644 ---- a/sysdeps/aarch64/fpu/sinhf_advsimd.c -+++ b/sysdeps/aarch64/fpu/sinhf_advsimd.c -@@ -23,15 +23,13 @@ - static const struct data - { - struct v_expm1f_data expm1f_consts; -- uint32x4_t halff; - #if WANT_SIMD_EXCEPT - uint32x4_t tiny_bound, thresh; - #else -- uint32x4_t oflow_bound; -+ float32x4_t oflow_bound; - #endif - } data = { - .expm1f_consts = V_EXPM1F_DATA, -- .halff = V4 (0x3f000000), - #if WANT_SIMD_EXCEPT - /* 0x1.6a09e8p-32, below which expm1f underflows. */ - .tiny_bound = V4 (0x2fb504f4), -@@ -39,14 +37,15 @@ static const struct data - .thresh = V4 (0x12fbbbb3), - #else - /* 0x1.61814ep+6, above which expm1f helper overflows. */ -- .oflow_bound = V4 (0x42b0c0a7), -+ .oflow_bound = V4 (0x1.61814ep+6), - #endif - }; - - static float32x4_t NOINLINE VPCS_ATTR --special_case (float32x4_t x, float32x4_t y, uint32x4_t special) -+special_case (float32x4_t x, float32x4_t t, float32x4_t halfsign, -+ uint32x4_t special) - { -- return v_call_f32 (sinhf, x, y, special); -+ return v_call_f32 (sinhf, x, vmulq_f32 (t, halfsign), special); - } - - /* Approximation for vector single-precision sinh(x) using expm1. -@@ -60,15 +59,15 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (sinh) (float32x4_t x) - - uint32x4_t ix = vreinterpretq_u32_f32 (x); - float32x4_t ax = vabsq_f32 (x); -- uint32x4_t iax = vreinterpretq_u32_f32 (ax); -- uint32x4_t sign = veorq_u32 (ix, iax); -- float32x4_t halfsign = vreinterpretq_f32_u32 (vorrq_u32 (sign, d->halff)); -+ float32x4_t halfsign = vreinterpretq_f32_u32 ( -+ vbslq_u32 (v_u32 (0x80000000), ix, vreinterpretq_u32_f32 (v_f32 (0.5)))); - - #if WANT_SIMD_EXCEPT -- uint32x4_t special = vcgeq_u32 (vsubq_u32 (iax, d->tiny_bound), d->thresh); -+ uint32x4_t special = vcgeq_u32 ( -+ vsubq_u32 (vreinterpretq_u32_f32 (ax), d->tiny_bound), d->thresh); - ax = v_zerofy_f32 (ax, special); - #else -- uint32x4_t special = vcgeq_u32 (iax, d->oflow_bound); -+ uint32x4_t special = vcageq_f32 (x, d->oflow_bound); - #endif - - /* Up to the point that expm1f overflows, we can use it to calculate sinhf -@@ -80,7 +79,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (sinh) (float32x4_t x) - /* Fall back to the scalar variant for any lanes that should trigger an - exception. */ - if (__glibc_unlikely (v_any_u32 (special))) -- return special_case (x, vmulq_f32 (t, halfsign), special); -+ return special_case (x, t, halfsign, special); - - return vmulq_f32 (t, halfsign); - } -diff --git a/sysdeps/aarch64/fpu/tanhf_advsimd.c b/sysdeps/aarch64/fpu/tanhf_advsimd.c -index 50defd6ef0..3ced9b7a41 100644 ---- a/sysdeps/aarch64/fpu/tanhf_advsimd.c -+++ b/sysdeps/aarch64/fpu/tanhf_advsimd.c -@@ -28,13 +28,16 @@ static const struct data - /* 0x1.205966p+3, above which tanhf rounds to 1 (or -1 for negative). */ - .boring_bound = V4 (0x41102cb3), - .large_bound = V4 (0x7f800000), -- .onef = V4 (0x3f800000), - }; - - static float32x4_t NOINLINE VPCS_ATTR --special_case (float32x4_t x, float32x4_t y, uint32x4_t special) -+special_case (float32x4_t x, uint32x4_t is_boring, float32x4_t boring, -+ float32x4_t q, uint32x4_t special) - { -- return v_call_f32 (tanhf, x, y, special); -+ return v_call_f32 ( -+ tanhf, x, -+ vbslq_f32 (is_boring, boring, vdivq_f32 (q, vaddq_f32 (q, v_f32 (2.0)))), -+ special); - } - - /* Approximation for single-precision vector tanh(x), using a simplified -@@ -50,7 +53,9 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (tanh) (float32x4_t x) - uint32x4_t iax = vreinterpretq_u32_f32 (ax); - uint32x4_t sign = veorq_u32 (ix, iax); - uint32x4_t is_boring = vcgtq_u32 (iax, d->boring_bound); -- float32x4_t boring = vreinterpretq_f32_u32 (vorrq_u32 (sign, d->onef)); -+ /* expm1 exponent bias is 1.0f reinterpreted to int. */ -+ float32x4_t boring = vreinterpretq_f32_u32 (vorrq_u32 ( -+ sign, vreinterpretq_u32_s32 (d->expm1f_consts.exponent_bias))); - - #if WANT_SIMD_EXCEPT - /* If fp exceptions are to be triggered properly, set all special and boring -@@ -66,10 +71,12 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (tanh) (float32x4_t x) - - /* tanh(x) = (e^2x - 1) / (e^2x + 1). */ - float32x4_t q = expm1f_inline (vmulq_n_f32 (x, 2), &d->expm1f_consts); -- float32x4_t y = vdivq_f32 (q, vaddq_f32 (q, v_f32 (2.0))); -+ - if (__glibc_unlikely (v_any_u32 (special))) -- return special_case (vreinterpretq_f32_u32 (ix), -- vbslq_f32 (is_boring, boring, y), special); -+ return special_case (vreinterpretq_f32_u32 (ix), is_boring, boring, q, -+ special); -+ -+ float32x4_t y = vdivq_f32 (q, vaddq_f32 (q, v_f32 (2.0))); - return vbslq_f32 (is_boring, boring, y); - } - libmvec_hidden_def (V_NAME_F1 (tanh)) -diff --git a/sysdeps/aarch64/fpu/v_expm1f_inline.h b/sysdeps/aarch64/fpu/v_expm1f_inline.h -index 59b552da6b..1daedfdd51 100644 ---- a/sysdeps/aarch64/fpu/v_expm1f_inline.h -+++ b/sysdeps/aarch64/fpu/v_expm1f_inline.h -@@ -21,48 +21,47 @@ - #define AARCH64_FPU_V_EXPM1F_INLINE_H - - #include "v_math.h" --#include "poly_advsimd_f32.h" -+#include "math_config.h" - - struct v_expm1f_data - { -- float32x4_t poly[5]; -- float invln2_and_ln2[4]; -- float32x4_t shift; -+ float32x4_t c0, c2; - int32x4_t exponent_bias; -+ float c1, c3, inv_ln2, c4; -+ float ln2_hi, ln2_lo; - }; - - /* Coefficients generated using fpminimax with degree=5 in [-log(2)/2, -- log(2)/2]. Exponent bias is asuint(1.0f). -- invln2_and_ln2 Stores constants: invln2, ln2_lo, ln2_hi, 0. */ -+ log(2)/2]. Exponent bias is asuint(1.0f). */ - #define V_EXPM1F_DATA \ - { \ -- .poly = { V4 (0x1.fffffep-2), V4 (0x1.5554aep-3), V4 (0x1.555736p-5), \ -- V4 (0x1.12287cp-7), V4 (0x1.6b55a2p-10) }, \ -- .shift = V4 (0x1.8p23f), .exponent_bias = V4 (0x3f800000), \ -- .invln2_and_ln2 = { 0x1.715476p+0f, 0x1.62e4p-1f, 0x1.7f7d1cp-20f, 0 }, \ -+ .c0 = V4 (0x1.fffffep-2), .c1 = 0x1.5554aep-3, .c2 = V4 (0x1.555736p-5), \ -+ .c3 = 0x1.12287cp-7, .c4 = 0x1.6b55a2p-10, \ -+ .exponent_bias = V4 (0x3f800000), .inv_ln2 = 0x1.715476p+0f, \ -+ .ln2_hi = 0x1.62e4p-1f, .ln2_lo = 0x1.7f7d1cp-20f, \ - } - - static inline float32x4_t - expm1f_inline (float32x4_t x, const struct v_expm1f_data *d) - { -- /* Helper routine for calculating exp(x) - 1. -- Copied from v_expm1f_1u6.c, with all special-case handling removed - the -- calling routine should handle special values if required. */ -+ /* Helper routine for calculating exp(x) - 1. */ -+ -+ float32x2_t ln2 = vld1_f32 (&d->ln2_hi); -+ float32x4_t lane_consts = vld1q_f32 (&d->c1); - - /* Reduce argument: f in [-ln2/2, ln2/2], i is exact. */ -- float32x4_t invln2_and_ln2 = vld1q_f32 (d->invln2_and_ln2); -- float32x4_t j -- = vsubq_f32 (vfmaq_laneq_f32 (d->shift, x, invln2_and_ln2, 0), d->shift); -+ float32x4_t j = vrndaq_f32 (vmulq_laneq_f32 (x, lane_consts, 2)); - int32x4_t i = vcvtq_s32_f32 (j); -- float32x4_t f = vfmsq_laneq_f32 (x, j, invln2_and_ln2, 1); -- f = vfmsq_laneq_f32 (f, j, invln2_and_ln2, 2); -+ float32x4_t f = vfmsq_lane_f32 (x, j, ln2, 0); -+ f = vfmsq_lane_f32 (f, j, ln2, 1); - -- /* Approximate expm1(f) with polynomial P, expm1(f) ~= f + f^2 * P(f). -- Uses Estrin scheme, where the main _ZGVnN4v_expm1f routine uses -- Horner. */ -+ /* Approximate expm1(f) with polynomial P, expm1(f) ~= f + f^2 * P(f). */ - float32x4_t f2 = vmulq_f32 (f, f); - float32x4_t f4 = vmulq_f32 (f2, f2); -- float32x4_t p = v_estrin_4_f32 (f, f2, f4, d->poly); -+ float32x4_t p01 = vfmaq_laneq_f32 (d->c0, f, lane_consts, 0); -+ float32x4_t p23 = vfmaq_laneq_f32 (d->c2, f, lane_consts, 1); -+ float32x4_t p = vfmaq_f32 (p01, f2, p23); -+ p = vfmaq_laneq_f32 (p, f4, lane_consts, 3); - p = vfmaq_f32 (f, f2, p); - - /* t = 2^i. */ - -commit 68f2eb20de698675ddc74068c2cd03fee29207df -Author: Joe Ramsay -Date: Mon Sep 23 15:33:31 2024 +0100 - - AArch64: Simplify rounding-multiply pattern in several AdvSIMD routines - - This operation can be simplified to use simpler multiply-round-convert - sequence, which uses fewer instructions and constants. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 16a59571e4e9fd019d3fc23a2e7d73c1df8bb5cb) - -diff --git a/sysdeps/aarch64/fpu/cos_advsimd.c b/sysdeps/aarch64/fpu/cos_advsimd.c -index 3924c9ce44..11a89b1530 100644 ---- a/sysdeps/aarch64/fpu/cos_advsimd.c -+++ b/sysdeps/aarch64/fpu/cos_advsimd.c -@@ -22,7 +22,7 @@ - static const struct data - { - float64x2_t poly[7]; -- float64x2_t range_val, shift, inv_pi, half_pi, pi_1, pi_2, pi_3; -+ float64x2_t range_val, inv_pi, pi_1, pi_2, pi_3; - } data = { - /* Worst-case error is 3.3 ulp in [-pi/2, pi/2]. */ - .poly = { V2 (-0x1.555555555547bp-3), V2 (0x1.1111111108a4dp-7), -@@ -30,11 +30,9 @@ static const struct data - V2 (-0x1.ae633919987c6p-26), V2 (0x1.60e277ae07cecp-33), - V2 (-0x1.9e9540300a1p-41) }, - .inv_pi = V2 (0x1.45f306dc9c883p-2), -- .half_pi = V2 (0x1.921fb54442d18p+0), - .pi_1 = V2 (0x1.921fb54442d18p+1), - .pi_2 = V2 (0x1.1a62633145c06p-53), - .pi_3 = V2 (0x1.c1cd129024e09p-106), -- .shift = V2 (0x1.8p52), - .range_val = V2 (0x1p23) - }; - -@@ -68,10 +66,9 @@ float64x2_t VPCS_ATTR V_NAME_D1 (cos) (float64x2_t x) - #endif - - /* n = rint((|x|+pi/2)/pi) - 0.5. */ -- n = vfmaq_f64 (d->shift, d->inv_pi, vaddq_f64 (r, d->half_pi)); -- odd = vshlq_n_u64 (vreinterpretq_u64_f64 (n), 63); -- n = vsubq_f64 (n, d->shift); -- n = vsubq_f64 (n, v_f64 (0.5)); -+ n = vrndaq_f64 (vfmaq_f64 (v_f64 (0.5), r, d->inv_pi)); -+ odd = vshlq_n_u64 (vreinterpretq_u64_s64 (vcvtq_s64_f64 (n)), 63); -+ n = vsubq_f64 (n, v_f64 (0.5f)); - - /* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */ - r = vfmsq_f64 (r, d->pi_1, n); -diff --git a/sysdeps/aarch64/fpu/cosf_advsimd.c b/sysdeps/aarch64/fpu/cosf_advsimd.c -index d0c285b03a..85a1b37373 100644 ---- a/sysdeps/aarch64/fpu/cosf_advsimd.c -+++ b/sysdeps/aarch64/fpu/cosf_advsimd.c -@@ -22,7 +22,7 @@ - static const struct data - { - float32x4_t poly[4]; -- float32x4_t range_val, inv_pi, half_pi, shift, pi_1, pi_2, pi_3; -+ float32x4_t range_val, inv_pi, pi_1, pi_2, pi_3; - } data = { - /* 1.886 ulp error. */ - .poly = { V4 (-0x1.555548p-3f), V4 (0x1.110df4p-7f), V4 (-0x1.9f42eap-13f), -@@ -33,8 +33,6 @@ static const struct data - .pi_3 = V4 (-0x1.ee59dap-49f), - - .inv_pi = V4 (0x1.45f306p-2f), -- .shift = V4 (0x1.8p+23f), -- .half_pi = V4 (0x1.921fb6p0f), - .range_val = V4 (0x1p20f) - }; - -@@ -69,9 +67,8 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (cos) (float32x4_t x) - #endif - - /* n = rint((|x|+pi/2)/pi) - 0.5. */ -- n = vfmaq_f32 (d->shift, d->inv_pi, vaddq_f32 (r, d->half_pi)); -- odd = vshlq_n_u32 (vreinterpretq_u32_f32 (n), 31); -- n = vsubq_f32 (n, d->shift); -+ n = vrndaq_f32 (vfmaq_f32 (v_f32 (0.5), r, d->inv_pi)); -+ odd = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 31); - n = vsubq_f32 (n, v_f32 (0.5f)); - - /* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */ -diff --git a/sysdeps/aarch64/fpu/expf_advsimd.c b/sysdeps/aarch64/fpu/expf_advsimd.c -index 99d2e647aa..5c9cb72620 100644 ---- a/sysdeps/aarch64/fpu/expf_advsimd.c -+++ b/sysdeps/aarch64/fpu/expf_advsimd.c -@@ -22,7 +22,7 @@ - static const struct data - { - float32x4_t poly[5]; -- float32x4_t shift, inv_ln2, ln2_hi, ln2_lo; -+ float32x4_t inv_ln2, ln2_hi, ln2_lo; - uint32x4_t exponent_bias; - #if !WANT_SIMD_EXCEPT - float32x4_t special_bound, scale_thresh; -@@ -31,7 +31,6 @@ static const struct data - /* maxerr: 1.45358 +0.5 ulp. */ - .poly = { V4 (0x1.0e4020p-7f), V4 (0x1.573e2ep-5f), V4 (0x1.555e66p-3f), - V4 (0x1.fffdb6p-2f), V4 (0x1.ffffecp-1f) }, -- .shift = V4 (0x1.8p23f), - .inv_ln2 = V4 (0x1.715476p+0f), - .ln2_hi = V4 (0x1.62e4p-1f), - .ln2_lo = V4 (0x1.7f7d1cp-20f), -@@ -85,7 +84,7 @@ special_case (float32x4_t poly, float32x4_t n, uint32x4_t e, uint32x4_t cmp1, - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- float32x4_t n, r, r2, scale, p, q, poly, z; -+ float32x4_t n, r, r2, scale, p, q, poly; - uint32x4_t cmp, e; - - #if WANT_SIMD_EXCEPT -@@ -104,11 +103,10 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp) (float32x4_t x) - - /* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] - x = ln2*n + r, with r in [-ln2/2, ln2/2]. */ -- z = vfmaq_f32 (d->shift, x, d->inv_ln2); -- n = vsubq_f32 (z, d->shift); -+ n = vrndaq_f32 (vmulq_f32 (x, d->inv_ln2)); - r = vfmsq_f32 (x, n, d->ln2_hi); - r = vfmsq_f32 (r, n, d->ln2_lo); -- e = vshlq_n_u32 (vreinterpretq_u32_f32 (z), 23); -+ e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 23); - scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias)); - - #if !WANT_SIMD_EXCEPT -diff --git a/sysdeps/aarch64/fpu/sin_advsimd.c b/sysdeps/aarch64/fpu/sin_advsimd.c -index a0d9d3b819..718125cbad 100644 ---- a/sysdeps/aarch64/fpu/sin_advsimd.c -+++ b/sysdeps/aarch64/fpu/sin_advsimd.c -@@ -22,7 +22,7 @@ - static const struct data - { - float64x2_t poly[7]; -- float64x2_t range_val, inv_pi, shift, pi_1, pi_2, pi_3; -+ float64x2_t range_val, inv_pi, pi_1, pi_2, pi_3; - } data = { - .poly = { V2 (-0x1.555555555547bp-3), V2 (0x1.1111111108a4dp-7), - V2 (-0x1.a01a019936f27p-13), V2 (0x1.71de37a97d93ep-19), -@@ -34,12 +34,13 @@ static const struct data - .pi_1 = V2 (0x1.921fb54442d18p+1), - .pi_2 = V2 (0x1.1a62633145c06p-53), - .pi_3 = V2 (0x1.c1cd129024e09p-106), -- .shift = V2 (0x1.8p52), - }; - - #if WANT_SIMD_EXCEPT --# define TinyBound v_u64 (0x3000000000000000) /* asuint64 (0x1p-255). */ --# define Thresh v_u64 (0x1160000000000000) /* RangeVal - TinyBound. */ -+/* asuint64(0x1p-253)), below which multiply by inv_pi underflows. */ -+# define TinyBound v_u64 (0x3020000000000000) -+/* RangeVal - TinyBound. */ -+# define Thresh v_u64 (0x1160000000000000) - #endif - - #define C(i) d->poly[i] -@@ -72,16 +73,15 @@ float64x2_t VPCS_ATTR V_NAME_D1 (sin) (float64x2_t x) - fenv). These lanes will be fixed by special-case handler later. */ - uint64x2_t ir = vreinterpretq_u64_f64 (vabsq_f64 (x)); - cmp = vcgeq_u64 (vsubq_u64 (ir, TinyBound), Thresh); -- r = vbslq_f64 (cmp, vreinterpretq_f64_u64 (cmp), x); -+ r = vreinterpretq_f64_u64 (vbicq_u64 (vreinterpretq_u64_f64 (x), cmp)); - #else - r = x; - cmp = vcageq_f64 (x, d->range_val); - #endif - - /* n = rint(|x|/pi). */ -- n = vfmaq_f64 (d->shift, d->inv_pi, r); -- odd = vshlq_n_u64 (vreinterpretq_u64_f64 (n), 63); -- n = vsubq_f64 (n, d->shift); -+ n = vrndaq_f64 (vmulq_f64 (r, d->inv_pi)); -+ odd = vshlq_n_u64 (vreinterpretq_u64_s64 (vcvtq_s64_f64 (n)), 63); - - /* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */ - r = vfmsq_f64 (r, d->pi_1, n); -diff --git a/sysdeps/aarch64/fpu/sinf_advsimd.c b/sysdeps/aarch64/fpu/sinf_advsimd.c -index 375dfc3331..6ee9a23d5b 100644 ---- a/sysdeps/aarch64/fpu/sinf_advsimd.c -+++ b/sysdeps/aarch64/fpu/sinf_advsimd.c -@@ -22,7 +22,7 @@ - static const struct data - { - float32x4_t poly[4]; -- float32x4_t range_val, inv_pi, shift, pi_1, pi_2, pi_3; -+ float32x4_t range_val, inv_pi, pi_1, pi_2, pi_3; - } data = { - /* 1.886 ulp error. */ - .poly = { V4 (-0x1.555548p-3f), V4 (0x1.110df4p-7f), V4 (-0x1.9f42eap-13f), -@@ -33,13 +33,14 @@ static const struct data - .pi_3 = V4 (-0x1.ee59dap-49f), - - .inv_pi = V4 (0x1.45f306p-2f), -- .shift = V4 (0x1.8p+23f), - .range_val = V4 (0x1p20f) - }; - - #if WANT_SIMD_EXCEPT --# define TinyBound v_u32 (0x21000000) /* asuint32(0x1p-61f). */ --# define Thresh v_u32 (0x28800000) /* RangeVal - TinyBound. */ -+/* asuint32(0x1p-59f), below which multiply by inv_pi underflows. */ -+# define TinyBound v_u32 (0x22000000) -+/* RangeVal - TinyBound. */ -+# define Thresh v_u32 (0x27800000) - #endif - - #define C(i) d->poly[i] -@@ -64,23 +65,22 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (sin) (float32x4_t x) - /* If fenv exceptions are to be triggered correctly, set any special lanes - to 1 (which is neutral w.r.t. fenv). These lanes will be fixed by - special-case handler later. */ -- r = vbslq_f32 (cmp, vreinterpretq_f32_u32 (cmp), x); -+ r = vreinterpretq_f32_u32 (vbicq_u32 (vreinterpretq_u32_f32 (x), cmp)); - #else - r = x; - cmp = vcageq_f32 (x, d->range_val); - #endif - -- /* n = rint(|x|/pi) */ -- n = vfmaq_f32 (d->shift, d->inv_pi, r); -- odd = vshlq_n_u32 (vreinterpretq_u32_f32 (n), 31); -- n = vsubq_f32 (n, d->shift); -+ /* n = rint(|x|/pi). */ -+ n = vrndaq_f32 (vmulq_f32 (r, d->inv_pi)); -+ odd = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 31); - -- /* r = |x| - n*pi (range reduction into -pi/2 .. pi/2) */ -+ /* r = |x| - n*pi (range reduction into -pi/2 .. pi/2). */ - r = vfmsq_f32 (r, d->pi_1, n); - r = vfmsq_f32 (r, d->pi_2, n); - r = vfmsq_f32 (r, d->pi_3, n); - -- /* y = sin(r) */ -+ /* y = sin(r). */ - r2 = vmulq_f32 (r, r); - y = vfmaq_f32 (C (2), C (3), r2); - y = vfmaq_f32 (C (1), y, r2); - -commit 9ff7559b274eb0dbce2cbcf87284c1d30d47a2d6 -Author: Joe Ramsay -Date: Mon Oct 28 14:58:35 2024 +0000 - - AArch64: Small optimisation in AdvSIMD erf and erfc - - In both routines, reduce register pressure such that GCC 14 emits no - spills for erf and fewer spills for erfc. Also use more efficient - comparison for the special-case in erf. - - Benchtests show erf improves by 6.4%, erfc by 1.0%. - - (cherry picked from commit 1cf29fbc5be23db775d1dfa6b332ded6e6554252) - -diff --git a/sysdeps/aarch64/fpu/erf_advsimd.c b/sysdeps/aarch64/fpu/erf_advsimd.c -index 19cbb7d0f4..c0116735e4 100644 ---- a/sysdeps/aarch64/fpu/erf_advsimd.c -+++ b/sysdeps/aarch64/fpu/erf_advsimd.c -@@ -22,19 +22,21 @@ - static const struct data - { - float64x2_t third; -- float64x2_t tenth, two_over_five, two_over_fifteen; -- float64x2_t two_over_nine, two_over_fortyfive; -+ float64x2_t tenth, two_over_five, two_over_nine; -+ double two_over_fifteen, two_over_fortyfive; - float64x2_t max, shift; -+ uint64x2_t max_idx; - #if WANT_SIMD_EXCEPT - float64x2_t tiny_bound, huge_bound, scale_minus_one; - #endif - } data = { -+ .max_idx = V2 (768), - .third = V2 (0x1.5555555555556p-2), /* used to compute 2/3 and 1/6 too. */ -- .two_over_fifteen = V2 (0x1.1111111111111p-3), -+ .two_over_fifteen = 0x1.1111111111111p-3, - .tenth = V2 (-0x1.999999999999ap-4), - .two_over_five = V2 (-0x1.999999999999ap-2), - .two_over_nine = V2 (-0x1.c71c71c71c71cp-3), -- .two_over_fortyfive = V2 (0x1.6c16c16c16c17p-5), -+ .two_over_fortyfive = 0x1.6c16c16c16c17p-5, - .max = V2 (5.9921875), /* 6 - 1/128. */ - .shift = V2 (0x1p45), - #if WANT_SIMD_EXCEPT -@@ -87,8 +89,8 @@ float64x2_t VPCS_ATTR V_NAME_D1 (erf) (float64x2_t x) - float64x2_t a = vabsq_f64 (x); - /* Reciprocal conditions that do not catch NaNs so they can be used in BSLs - to return expected results. */ -- uint64x2_t a_le_max = vcleq_f64 (a, dat->max); -- uint64x2_t a_gt_max = vcgtq_f64 (a, dat->max); -+ uint64x2_t a_le_max = vcaleq_f64 (x, dat->max); -+ uint64x2_t a_gt_max = vcagtq_f64 (x, dat->max); - - #if WANT_SIMD_EXCEPT - /* |x| huge or tiny. */ -@@ -115,7 +117,7 @@ float64x2_t VPCS_ATTR V_NAME_D1 (erf) (float64x2_t x) - segfault. */ - uint64x2_t i - = vsubq_u64 (vreinterpretq_u64_f64 (z), vreinterpretq_u64_f64 (shift)); -- i = vbslq_u64 (a_le_max, i, v_u64 (768)); -+ i = vbslq_u64 (a_le_max, i, dat->max_idx); - struct entry e = lookup (i); - - float64x2_t r = vsubq_f64 (z, shift); -@@ -125,14 +127,19 @@ float64x2_t VPCS_ATTR V_NAME_D1 (erf) (float64x2_t x) - float64x2_t d2 = vmulq_f64 (d, d); - float64x2_t r2 = vmulq_f64 (r, r); - -+ float64x2_t two_over_fifteen_and_fortyfive -+ = vld1q_f64 (&dat->two_over_fifteen); -+ - /* poly (d, r) = 1 + p1(r) * d + p2(r) * d^2 + ... + p5(r) * d^5. */ - float64x2_t p1 = r; - float64x2_t p2 - = vfmsq_f64 (dat->third, r2, vaddq_f64 (dat->third, dat->third)); - float64x2_t p3 = vmulq_f64 (r, vfmaq_f64 (v_f64 (-0.5), r2, dat->third)); -- float64x2_t p4 = vfmaq_f64 (dat->two_over_five, r2, dat->two_over_fifteen); -+ float64x2_t p4 = vfmaq_laneq_f64 (dat->two_over_five, r2, -+ two_over_fifteen_and_fortyfive, 0); - p4 = vfmsq_f64 (dat->tenth, r2, p4); -- float64x2_t p5 = vfmaq_f64 (dat->two_over_nine, r2, dat->two_over_fortyfive); -+ float64x2_t p5 = vfmaq_laneq_f64 (dat->two_over_nine, r2, -+ two_over_fifteen_and_fortyfive, 1); - p5 = vmulq_f64 (r, vfmaq_f64 (vmulq_f64 (v_f64 (0.5), dat->third), r2, p5)); - - float64x2_t p34 = vfmaq_f64 (p3, d, p4); -diff --git a/sysdeps/aarch64/fpu/erfc_advsimd.c b/sysdeps/aarch64/fpu/erfc_advsimd.c -index f1b3bfe830..2f2f755c46 100644 ---- a/sysdeps/aarch64/fpu/erfc_advsimd.c -+++ b/sysdeps/aarch64/fpu/erfc_advsimd.c -@@ -24,8 +24,8 @@ static const struct data - { - uint64x2_t offset, table_scale; - float64x2_t max, shift; -- float64x2_t p20, p40, p41, p42; -- float64x2_t p51, p52; -+ float64x2_t p20, p40, p41, p51; -+ double p42, p52; - double qr5[2], qr6[2], qr7[2], qr8[2], qr9[2]; - #if WANT_SIMD_EXCEPT - float64x2_t uflow_bound; -@@ -41,9 +41,9 @@ static const struct data - .p20 = V2 (0x1.5555555555555p-2), /* 1/3, used to compute 2/3 and 1/6. */ - .p40 = V2 (-0x1.999999999999ap-4), /* 1/10. */ - .p41 = V2 (-0x1.999999999999ap-2), /* 2/5. */ -- .p42 = V2 (0x1.1111111111111p-3), /* 2/15. */ -+ .p42 = 0x1.1111111111111p-3, /* 2/15. */ - .p51 = V2 (-0x1.c71c71c71c71cp-3), /* 2/9. */ -- .p52 = V2 (0x1.6c16c16c16c17p-5), /* 2/45. */ -+ .p52 = 0x1.6c16c16c16c17p-5, /* 2/45. */ - /* Qi = (i+1) / i, Ri = -2 * i / ((i+1)*(i+2)), for i = 5, ..., 9. */ - .qr5 = { 0x1.3333333333333p0, -0x1.e79e79e79e79ep-3 }, - .qr6 = { 0x1.2aaaaaaaaaaabp0, -0x1.b6db6db6db6dbp-3 }, -@@ -157,9 +157,10 @@ float64x2_t V_NAME_D1 (erfc) (float64x2_t x) - float64x2_t p1 = r; - float64x2_t p2 = vfmsq_f64 (dat->p20, r2, vaddq_f64 (dat->p20, dat->p20)); - float64x2_t p3 = vmulq_f64 (r, vfmaq_f64 (v_f64 (-0.5), r2, dat->p20)); -- float64x2_t p4 = vfmaq_f64 (dat->p41, r2, dat->p42); -+ float64x2_t p42_p52 = vld1q_f64 (&dat->p42); -+ float64x2_t p4 = vfmaq_laneq_f64 (dat->p41, r2, p42_p52, 0); - p4 = vfmsq_f64 (dat->p40, r2, p4); -- float64x2_t p5 = vfmaq_f64 (dat->p51, r2, dat->p52); -+ float64x2_t p5 = vfmaq_laneq_f64 (dat->p51, r2, p42_p52, 1); - p5 = vmulq_f64 (r, vfmaq_f64 (vmulq_f64 (v_f64 (0.5), dat->p20), r2, p5)); - /* Compute p_i using recurrence relation: - p_{i+2} = (p_i + r * Q_{i+1} * p_{i+1}) * R_{i+1}. */ - -commit 76c923fe9d09befc8131205659d99cb9ac97460a -Author: Joe Ramsay -Date: Fri Nov 1 15:48:54 2024 +0000 - - AArch64: Remove SVE erf and erfc tables - - By using a combination of mask-and-add instead of the shift-based - index calculation the routines can share the same table as other - variants with no performance degradation. - - The tables change name because of other changes in downstream AOR. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 2d82d781a539ce8e82178fc1fa2c99ae1884e7fe) - -diff --git a/sysdeps/aarch64/fpu/Makefile b/sysdeps/aarch64/fpu/Makefile -index 234a6c457c..be8541f649 100644 ---- a/sysdeps/aarch64/fpu/Makefile -+++ b/sysdeps/aarch64/fpu/Makefile -@@ -41,8 +41,6 @@ libmvec-support = $(addsuffix f_advsimd,$(float-advsimd-funcs)) \ - v_log10_data \ - erf_data \ - erff_data \ -- sv_erf_data \ -- sv_erff_data \ - v_exp_tail_data \ - erfc_data \ - erfcf_data \ -diff --git a/sysdeps/aarch64/fpu/erf_advsimd.c b/sysdeps/aarch64/fpu/erf_advsimd.c -index c0116735e4..a48092e838 100644 ---- a/sysdeps/aarch64/fpu/erf_advsimd.c -+++ b/sysdeps/aarch64/fpu/erf_advsimd.c -@@ -58,8 +58,8 @@ static inline struct entry - lookup (uint64x2_t i) - { - struct entry e; -- float64x2_t e1 = vld1q_f64 (&__erf_data.tab[vgetq_lane_u64 (i, 0)].erf), -- e2 = vld1q_f64 (&__erf_data.tab[vgetq_lane_u64 (i, 1)].erf); -+ float64x2_t e1 = vld1q_f64 (&__v_erf_data.tab[vgetq_lane_u64 (i, 0)].erf), -+ e2 = vld1q_f64 (&__v_erf_data.tab[vgetq_lane_u64 (i, 1)].erf); - e.erf = vuzp1q_f64 (e1, e2); - e.scale = vuzp2q_f64 (e1, e2); - return e; -diff --git a/sysdeps/aarch64/fpu/erf_data.c b/sysdeps/aarch64/fpu/erf_data.c -index 6d2dcd235c..ea01fad7ca 100644 ---- a/sysdeps/aarch64/fpu/erf_data.c -+++ b/sysdeps/aarch64/fpu/erf_data.c -@@ -19,14 +19,14 @@ - - #include "vecmath_config.h" - --/* Lookup table used in erf. -+/* Lookup table used in vector erf. - For each possible rounded input r (multiples of 1/128), between - r = 0.0 and r = 6.0 (769 values): -- - the first entry __erff_data.tab.erf contains the values of erf(r), -- - the second entry __erff_data.tab.scale contains the values of -+ - the first entry __v_erff_data.tab.erf contains the values of erf(r), -+ - the second entry __v_erff_data.tab.scale contains the values of - 2/sqrt(pi)*exp(-r^2). Note that indices 0 and 1 are never hit by the - algorithm, since lookup is performed only for x >= 1/64-1/512. */ --const struct erf_data __erf_data = { -+const struct v_erf_data __v_erf_data = { - .tab = { { 0x0.0000000000000p+0, 0x1.20dd750429b6dp+0 }, - { 0x1.20dbf3deb1340p-7, 0x1.20d8f1975c85dp+0 }, - { 0x1.20d77083f17a0p-6, 0x1.20cb67bd452c7p+0 }, -diff --git a/sysdeps/aarch64/fpu/erf_sve.c b/sysdeps/aarch64/fpu/erf_sve.c -index 7d51417406..671d55a02b 100644 ---- a/sysdeps/aarch64/fpu/erf_sve.c -+++ b/sysdeps/aarch64/fpu/erf_sve.c -@@ -67,14 +67,16 @@ svfloat64_t SV_NAME_D1 (erf) (svfloat64_t x, const svbool_t pg) - svfloat64_t a = svabs_x (pg, x); - svfloat64_t shift = sv_f64 (dat->shift); - svfloat64_t z = svadd_x (pg, a, shift); -- svuint64_t i -- = svsub_x (pg, svreinterpret_u64 (z), svreinterpret_u64 (shift)); -+ svuint64_t i = svand_x (pg, svreinterpret_u64 (z), 0xfff); -+ i = svadd_x (pg, i, i); - - /* Lookup without shortcut for small values but with predicate to avoid - segfault for large values and NaNs. */ - svfloat64_t r = svsub_x (pg, z, shift); -- svfloat64_t erfr = svld1_gather_index (a_lt_max, __sv_erf_data.erf, i); -- svfloat64_t scale = svld1_gather_index (a_lt_max, __sv_erf_data.scale, i); -+ svfloat64_t erfr -+ = svld1_gather_index (a_lt_max, &__v_erf_data.tab[0].erf, i); -+ svfloat64_t scale -+ = svld1_gather_index (a_lt_max, &__v_erf_data.tab[0].scale, i); - - /* erf(x) ~ erf(r) + scale * d * poly (r, d). */ - svfloat64_t d = svsub_x (pg, a, r); -diff --git a/sysdeps/aarch64/fpu/erfc_advsimd.c b/sysdeps/aarch64/fpu/erfc_advsimd.c -index 2f2f755c46..d05eac61a2 100644 ---- a/sysdeps/aarch64/fpu/erfc_advsimd.c -+++ b/sysdeps/aarch64/fpu/erfc_advsimd.c -@@ -69,9 +69,9 @@ lookup (uint64x2_t i) - { - struct entry e; - float64x2_t e1 -- = vld1q_f64 (&__erfc_data.tab[vgetq_lane_u64 (i, 0) - Off].erfc); -+ = vld1q_f64 (&__v_erfc_data.tab[vgetq_lane_u64 (i, 0) - Off].erfc); - float64x2_t e2 -- = vld1q_f64 (&__erfc_data.tab[vgetq_lane_u64 (i, 1) - Off].erfc); -+ = vld1q_f64 (&__v_erfc_data.tab[vgetq_lane_u64 (i, 1) - Off].erfc); - e.erfc = vuzp1q_f64 (e1, e2); - e.scale = vuzp2q_f64 (e1, e2); - return e; -diff --git a/sysdeps/aarch64/fpu/erfc_data.c b/sysdeps/aarch64/fpu/erfc_data.c -index 76a94e4681..8dc6a8c42c 100644 ---- a/sysdeps/aarch64/fpu/erfc_data.c -+++ b/sysdeps/aarch64/fpu/erfc_data.c -@@ -19,14 +19,14 @@ - - #include "vecmath_config.h" - --/* Lookup table used in erfc. -+/* Lookup table used in vector erfc. - For each possible rounded input r (multiples of 1/128), between - r = 0.0 and r = ~27.0 (3488 values): -- - the first entry __erfc_data.tab.erfc contains the values of erfc(r), -- - the second entry __erfc_data.tab.scale contains the values of -+ - the first entry __v_erfc_data.tab.erfc contains the values of erfc(r), -+ - the second entry __v_erfc_data.tab.scale contains the values of - 2/sqrt(pi)*exp(-r^2). Both values may go into subnormal range, therefore - they are scaled by a large enough value 2^128 (fits in 8bit). */ --const struct erfc_data __erfc_data = { -+const struct v_erfc_data __v_erfc_data = { - .tab = { { 0x1p128, 0x1.20dd750429b6dp128 }, - { 0x1.fb7c9030853b3p127, 0x1.20d8f1975c85dp128 }, - { 0x1.f6f9447be0743p127, 0x1.20cb67bd452c7p128 }, -diff --git a/sysdeps/aarch64/fpu/erfc_sve.c b/sysdeps/aarch64/fpu/erfc_sve.c -index c17d3e4484..703926ee41 100644 ---- a/sysdeps/aarch64/fpu/erfc_sve.c -+++ b/sysdeps/aarch64/fpu/erfc_sve.c -@@ -104,7 +104,7 @@ svfloat64_t SV_NAME_D1 (erfc) (svfloat64_t x, const svbool_t pg) - - /* Lookup erfc(r) and 2/sqrt(pi)*exp(-r^2) in tables. */ - i = svadd_x (pg, i, i); -- const float64_t *p = &__erfc_data.tab[0].erfc - 2 * dat->off_arr; -+ const float64_t *p = &__v_erfc_data.tab[0].erfc - 2 * dat->off_arr; - svfloat64_t erfcr = svld1_gather_index (pg, p, i); - svfloat64_t scale = svld1_gather_index (pg, p + 1, i); - -diff --git a/sysdeps/aarch64/fpu/erfcf_advsimd.c b/sysdeps/aarch64/fpu/erfcf_advsimd.c -index ca5bc3ab33..59b0b0d64b 100644 ---- a/sysdeps/aarch64/fpu/erfcf_advsimd.c -+++ b/sysdeps/aarch64/fpu/erfcf_advsimd.c -@@ -62,13 +62,13 @@ lookup (uint32x4_t i) - { - struct entry e; - float32x2_t t0 -- = vld1_f32 (&__erfcf_data.tab[vgetq_lane_u32 (i, 0) - Off].erfc); -+ = vld1_f32 (&__v_erfcf_data.tab[vgetq_lane_u32 (i, 0) - Off].erfc); - float32x2_t t1 -- = vld1_f32 (&__erfcf_data.tab[vgetq_lane_u32 (i, 1) - Off].erfc); -+ = vld1_f32 (&__v_erfcf_data.tab[vgetq_lane_u32 (i, 1) - Off].erfc); - float32x2_t t2 -- = vld1_f32 (&__erfcf_data.tab[vgetq_lane_u32 (i, 2) - Off].erfc); -+ = vld1_f32 (&__v_erfcf_data.tab[vgetq_lane_u32 (i, 2) - Off].erfc); - float32x2_t t3 -- = vld1_f32 (&__erfcf_data.tab[vgetq_lane_u32 (i, 3) - Off].erfc); -+ = vld1_f32 (&__v_erfcf_data.tab[vgetq_lane_u32 (i, 3) - Off].erfc); - float32x4_t e1 = vcombine_f32 (t0, t1); - float32x4_t e2 = vcombine_f32 (t2, t3); - e.erfc = vuzp1q_f32 (e1, e2); -diff --git a/sysdeps/aarch64/fpu/erfcf_data.c b/sysdeps/aarch64/fpu/erfcf_data.c -index 77fb889a78..d45087bbb9 100644 ---- a/sysdeps/aarch64/fpu/erfcf_data.c -+++ b/sysdeps/aarch64/fpu/erfcf_data.c -@@ -19,14 +19,14 @@ - - #include "vecmath_config.h" - --/* Lookup table used in erfcf. -+/* Lookup table used in vector erfcf. - For each possible rounded input r (multiples of 1/64), between - r = 0.0 and r = 10.0625 (645 values): -- - the first entry __erfcf_data.tab.erfc contains the values of erfc(r), -- - the second entry __erfcf_data.tab.scale contains the values of -+ - the first entry __v_erfcf_data.tab.erfc contains the values of erfc(r), -+ - the second entry __v_erfcf_data.tab.scale contains the values of - 2/sqrt(pi)*exp(-r^2). Both values may go into subnormal range, therefore - they are scaled by a large enough value 2^47 (fits in 8 bits). */ --const struct erfcf_data __erfcf_data = { -+const struct v_erfcf_data __v_erfcf_data = { - .tab = { { 0x1p47, 0x1.20dd76p47 }, - { 0x1.f6f944p46, 0x1.20cb68p47 }, - { 0x1.edf3aap46, 0x1.209546p47 }, -diff --git a/sysdeps/aarch64/fpu/erfcf_sve.c b/sysdeps/aarch64/fpu/erfcf_sve.c -index 48d1677eb4..ecacb933ac 100644 ---- a/sysdeps/aarch64/fpu/erfcf_sve.c -+++ b/sysdeps/aarch64/fpu/erfcf_sve.c -@@ -77,7 +77,7 @@ svfloat32_t SV_NAME_F1 (erfc) (svfloat32_t x, const svbool_t pg) - - /* Lookup erfc(r) and 2/sqrt(pi)*exp(-r^2) in tables. */ - i = svmul_x (pg, i, 2); -- const float32_t *p = &__erfcf_data.tab[0].erfc - 2 * dat->off_arr; -+ const float32_t *p = &__v_erfcf_data.tab[0].erfc - 2 * dat->off_arr; - svfloat32_t erfcr = svld1_gather_index (pg, p, i); - svfloat32_t scale = svld1_gather_index (pg, p + 1, i); - -diff --git a/sysdeps/aarch64/fpu/erff_advsimd.c b/sysdeps/aarch64/fpu/erff_advsimd.c -index f2fe6ff236..db39e789b6 100644 ---- a/sysdeps/aarch64/fpu/erff_advsimd.c -+++ b/sysdeps/aarch64/fpu/erff_advsimd.c -@@ -47,10 +47,10 @@ static inline struct entry - lookup (uint32x4_t i) - { - struct entry e; -- float32x2_t t0 = vld1_f32 (&__erff_data.tab[vgetq_lane_u32 (i, 0)].erf); -- float32x2_t t1 = vld1_f32 (&__erff_data.tab[vgetq_lane_u32 (i, 1)].erf); -- float32x2_t t2 = vld1_f32 (&__erff_data.tab[vgetq_lane_u32 (i, 2)].erf); -- float32x2_t t3 = vld1_f32 (&__erff_data.tab[vgetq_lane_u32 (i, 3)].erf); -+ float32x2_t t0 = vld1_f32 (&__v_erff_data.tab[vgetq_lane_u32 (i, 0)].erf); -+ float32x2_t t1 = vld1_f32 (&__v_erff_data.tab[vgetq_lane_u32 (i, 1)].erf); -+ float32x2_t t2 = vld1_f32 (&__v_erff_data.tab[vgetq_lane_u32 (i, 2)].erf); -+ float32x2_t t3 = vld1_f32 (&__v_erff_data.tab[vgetq_lane_u32 (i, 3)].erf); - float32x4_t e1 = vcombine_f32 (t0, t1); - float32x4_t e2 = vcombine_f32 (t2, t3); - e.erf = vuzp1q_f32 (e1, e2); -diff --git a/sysdeps/aarch64/fpu/erff_data.c b/sysdeps/aarch64/fpu/erff_data.c -index 9a32940915..da38aed205 100644 ---- a/sysdeps/aarch64/fpu/erff_data.c -+++ b/sysdeps/aarch64/fpu/erff_data.c -@@ -19,14 +19,14 @@ - - #include "vecmath_config.h" - --/* Lookup table used in erff. -+/* Lookup table used in vector erff. - For each possible rounded input r (multiples of 1/128), between - r = 0.0 and r = 4.0 (513 values): -- - the first entry __erff_data.tab.erf contains the values of erf(r), -- - the second entry __erff_data.tab.scale contains the values of -+ - the first entry __v_erff_data.tab.erf contains the values of erf(r), -+ - the second entry __v_erff_data.tab.scale contains the values of - 2/sqrt(pi)*exp(-r^2). Note that indices 0 and 1 are never hit by the - algorithm, since lookup is performed only for x >= 1/64-1/512. */ --const struct erff_data __erff_data = { -+const struct v_erff_data __v_erff_data = { - .tab = { { 0x0.000000p+0, 0x1.20dd76p+0 }, - { 0x1.20dbf4p-7, 0x1.20d8f2p+0 }, - { 0x1.20d770p-6, 0x1.20cb68p+0 }, -diff --git a/sysdeps/aarch64/fpu/erff_sve.c b/sysdeps/aarch64/fpu/erff_sve.c -index 38f00db9be..0e382eb09a 100644 ---- a/sysdeps/aarch64/fpu/erff_sve.c -+++ b/sysdeps/aarch64/fpu/erff_sve.c -@@ -62,18 +62,17 @@ svfloat32_t SV_NAME_F1 (erf) (svfloat32_t x, const svbool_t pg) - - svfloat32_t shift = sv_f32 (dat->shift); - svfloat32_t z = svadd_x (pg, a, shift); -- svuint32_t i -- = svsub_x (pg, svreinterpret_u32 (z), svreinterpret_u32 (shift)); -- -- /* Saturate lookup index. */ -- i = svsel (a_ge_max, sv_u32 (512), i); -+ svuint32_t i = svand_x (pg, svreinterpret_u32 (z), 0xfff); -+ i = svadd_x (pg, i, i); - - /* r and erf(r) set to 0 for |x| below min. */ - svfloat32_t r = svsub_z (a_gt_min, z, shift); -- svfloat32_t erfr = svld1_gather_index (a_gt_min, __sv_erff_data.erf, i); -+ svfloat32_t erfr -+ = svld1_gather_index (a_gt_min, &__v_erff_data.tab[0].erf, i); - - /* scale set to 2/sqrt(pi) for |x| below min. */ -- svfloat32_t scale = svld1_gather_index (a_gt_min, __sv_erff_data.scale, i); -+ svfloat32_t scale -+ = svld1_gather_index (a_gt_min, &__v_erff_data.tab[0].scale, i); - scale = svsel (a_gt_min, scale, sv_f32 (dat->scale)); - - /* erf(x) ~ erf(r) + scale * d * (1 - r * d + 1/3 * d^2). */ -diff --git a/sysdeps/aarch64/fpu/sv_erf_data.c b/sysdeps/aarch64/fpu/sv_erf_data.c -deleted file mode 100644 -index a53878f893..0000000000 ---- a/sysdeps/aarch64/fpu/sv_erf_data.c -+++ /dev/null -@@ -1,1570 +0,0 @@ --/* Table for SVE erf approximation -- -- Copyright (C) 2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include "vecmath_config.h" -- --/* Lookup table used in vector erf. -- For each possible rounded input r (multiples of 1/128), between -- r = 0.0 and r = 6.0 (769 values): -- - the first entry __erf_data.tab.erf contains the values of erf(r), -- - the second entry __erf_data.tab.scale contains the values of -- 2/sqrt(pi)*exp(-r^2). Note that indices 0 and 1 are never hit by the -- algorithm, since lookup is performed only for x >= 1/64-1/512. */ --const struct sv_erf_data __sv_erf_data = { -- .erf = { 0x0.0000000000000p+0, -- 0x1.20dbf3deb1340p-7, -- 0x1.20d77083f17a0p-6, -- 0x1.b137e0cf584dcp-6, -- 0x1.20c5645dd2538p-5, -- 0x1.68e5d3bbc9526p-5, -- 0x1.b0fafef135745p-5, -- 0x1.f902a77bd3821p-5, -- 0x1.207d480e90658p-4, -- 0x1.44703e87e8593p-4, -- 0x1.68591a1e83b5dp-4, -- 0x1.8c36beb8a8d23p-4, -- 0x1.b0081148a873ap-4, -- 0x1.d3cbf7e70a4b3p-4, -- 0x1.f78159ec8bb50p-4, -- 0x1.0d939005f65e5p-3, -- 0x1.1f5e1a35c3b89p-3, -- 0x1.311fc15f56d14p-3, -- 0x1.42d7fc2f64959p-3, -- 0x1.548642321d7c6p-3, -- 0x1.662a0bdf7a89fp-3, -- 0x1.77c2d2a765f9ep-3, -- 0x1.895010fdbdbfdp-3, -- 0x1.9ad142662e14dp-3, -- 0x1.ac45e37fe2526p-3, -- 0x1.bdad72110a648p-3, -- 0x1.cf076d1233237p-3, -- 0x1.e05354b96ff36p-3, -- 0x1.f190aa85540e2p-3, -- 0x1.015f78a3dcf3dp-2, -- 0x1.09eed6982b948p-2, -- 0x1.127631eb8de32p-2, -- 0x1.1af54e232d609p-2, -- 0x1.236bef825d9a2p-2, -- 0x1.2bd9db0f7827fp-2, -- 0x1.343ed6989b7d9p-2, -- 0x1.3c9aa8b84bedap-2, -- 0x1.44ed18d9f6462p-2, -- 0x1.4d35ef3e5372ep-2, -- 0x1.5574f4ffac98ep-2, -- 0x1.5da9f415ff23fp-2, -- 0x1.65d4b75b00471p-2, -- 0x1.6df50a8dff772p-2, -- 0x1.760aba57a76bfp-2, -- 0x1.7e15944d9d3e4p-2, -- 0x1.861566f5fd3c0p-2, -- 0x1.8e0a01cab516bp-2, -- 0x1.95f3353cbb146p-2, -- 0x1.9dd0d2b721f39p-2, -- 0x1.a5a2aca209394p-2, -- 0x1.ad68966569a87p-2, -- 0x1.b522646bbda68p-2, -- 0x1.bccfec24855b8p-2, -- 0x1.c4710406a65fcp-2, -- 0x1.cc058392a6d2dp-2, -- 0x1.d38d4354c3bd0p-2, -- 0x1.db081ce6e2a48p-2, -- 0x1.e275eaf25e458p-2, -- 0x1.e9d68931ae650p-2, -- 0x1.f129d471eabb1p-2, -- 0x1.f86faa9428f9dp-2, -- 0x1.ffa7ea8eb5fd0p-2, -- 0x1.03693a371519cp-1, -- 0x1.06f794ab2cae7p-1, -- 0x1.0a7ef5c18edd2p-1, -- 0x1.0dff4f247f6c6p-1, -- 0x1.1178930ada115p-1, -- 0x1.14eab43841b55p-1, -- 0x1.1855a5fd3dd50p-1, -- 0x1.1bb95c3746199p-1, -- 0x1.1f15cb50bc4dep-1, -- 0x1.226ae840d4d70p-1, -- 0x1.25b8a88b6dd7fp-1, -- 0x1.28ff0240d52cdp-1, -- 0x1.2c3debfd7d6c1p-1, -- 0x1.2f755ce9a21f4p-1, -- 0x1.32a54cb8db67bp-1, -- 0x1.35cdb3a9a144dp-1, -- 0x1.38ee8a84beb71p-1, -- 0x1.3c07ca9cb4f9ep-1, -- 0x1.3f196dcd0f135p-1, -- 0x1.42236e79a5fa6p-1, -- 0x1.4525c78dd5966p-1, -- 0x1.4820747ba2dc2p-1, -- 0x1.4b13713ad3513p-1, -- 0x1.4dfeba47f63ccp-1, -- 0x1.50e24ca35fd2cp-1, -- 0x1.53be25d016a4fp-1, -- 0x1.569243d2b3a9bp-1, -- 0x1.595ea53035283p-1, -- 0x1.5c2348ecc4dc3p-1, -- 0x1.5ee02e8a71a53p-1, -- 0x1.61955607dd15dp-1, -- 0x1.6442bfdedd397p-1, -- 0x1.66e86d0312e82p-1, -- 0x1.69865ee075011p-1, -- 0x1.6c1c9759d0e5fp-1, -- 0x1.6eab18c74091bp-1, -- 0x1.7131e5f496a5ap-1, -- 0x1.73b1021fc0cb8p-1, -- 0x1.762870f720c6fp-1, -- 0x1.78983697dc96fp-1, -- 0x1.7b00578c26037p-1, -- 0x1.7d60d8c979f7bp-1, -- 0x1.7fb9bfaed8078p-1, -- 0x1.820b1202f27fbp-1, -- 0x1.8454d5f25760dp-1, -- 0x1.8697120d92a4ap-1, -- 0x1.88d1cd474a2e0p-1, -- 0x1.8b050ef253c37p-1, -- 0x1.8d30debfc572ep-1, -- 0x1.8f5544bd00c04p-1, -- 0x1.91724951b8fc6p-1, -- 0x1.9387f53df5238p-1, -- 0x1.959651980da31p-1, -- 0x1.979d67caa6631p-1, -- 0x1.999d4192a5715p-1, -- 0x1.9b95e8fd26abap-1, -- 0x1.9d8768656cc42p-1, -- 0x1.9f71ca72cffb6p-1, -- 0x1.a1551a16aaeafp-1, -- 0x1.a331628a45b92p-1, -- 0x1.a506af4cc00f4p-1, -- 0x1.a6d50c20fa293p-1, -- 0x1.a89c850b7d54dp-1, -- 0x1.aa5d265064366p-1, -- 0x1.ac16fc7143263p-1, -- 0x1.adca142b10f98p-1, -- 0x1.af767a741088bp-1, -- 0x1.b11c3c79bb424p-1, -- 0x1.b2bb679ead19cp-1, -- 0x1.b4540978921eep-1, -- 0x1.b5e62fce16095p-1, -- 0x1.b771e894d602ep-1, -- 0x1.b8f741ef54f83p-1, -- 0x1.ba764a2af2b78p-1, -- 0x1.bbef0fbde6221p-1, -- 0x1.bd61a1453ab44p-1, -- 0x1.bece0d82d1a5cp-1, -- 0x1.c034635b66e23p-1, -- 0x1.c194b1d49a184p-1, -- 0x1.c2ef0812fc1bdp-1, -- 0x1.c443755820d64p-1, -- 0x1.c5920900b5fd1p-1, -- 0x1.c6dad2829ec62p-1, -- 0x1.c81de16b14cefp-1, -- 0x1.c95b455cce69dp-1, -- 0x1.ca930e0e2a825p-1, -- 0x1.cbc54b476248dp-1, -- 0x1.ccf20ce0c0d27p-1, -- 0x1.ce1962c0e0d8bp-1, -- 0x1.cf3b5cdaf0c39p-1, -- 0x1.d0580b2cfd249p-1, -- 0x1.d16f7dbe41ca0p-1, -- 0x1.d281c49d818d0p-1, -- 0x1.d38eefdf64fddp-1, -- 0x1.d4970f9ce00d9p-1, -- 0x1.d59a33f19ed42p-1, -- 0x1.d6986cfa798e7p-1, -- 0x1.d791cad3eff01p-1, -- 0x1.d8865d98abe01p-1, -- 0x1.d97635600bb89p-1, -- 0x1.da61623cb41e0p-1, -- 0x1.db47f43b2980dp-1, -- 0x1.dc29fb60715afp-1, -- 0x1.dd0787a8bb39dp-1, -- 0x1.dde0a90611a0dp-1, -- 0x1.deb56f5f12d28p-1, -- 0x1.df85ea8db188ep-1, -- 0x1.e0522a5dfda73p-1, -- 0x1.e11a3e8cf4eb8p-1, -- 0x1.e1de36c75ba58p-1, -- 0x1.e29e22a89d766p-1, -- 0x1.e35a11b9b61cep-1, -- 0x1.e4121370224ccp-1, -- 0x1.e4c6372cd8927p-1, -- 0x1.e5768c3b4a3fcp-1, -- 0x1.e62321d06c5e0p-1, -- 0x1.e6cc0709c8a0dp-1, -- 0x1.e7714aec96534p-1, -- 0x1.e812fc64db369p-1, -- 0x1.e8b12a44944a8p-1, -- 0x1.e94be342e6743p-1, -- 0x1.e9e335fb56f87p-1, -- 0x1.ea7730ed0bbb9p-1, -- 0x1.eb07e27a133aap-1, -- 0x1.eb9558e6b42cep-1, -- 0x1.ec1fa258c4beap-1, -- 0x1.eca6ccd709544p-1, -- 0x1.ed2ae6489ac1ep-1, -- 0x1.edabfc7453e63p-1, -- 0x1.ee2a1d004692cp-1, -- 0x1.eea5557137ae0p-1, -- 0x1.ef1db32a2277cp-1, -- 0x1.ef93436bc2daap-1, -- 0x1.f006135426b26p-1, -- 0x1.f0762fde45ee6p-1, -- 0x1.f0e3a5e1a1788p-1, -- 0x1.f14e8211e8c55p-1, -- 0x1.f1b6d0fea5f4dp-1, -- 0x1.f21c9f12f0677p-1, -- 0x1.f27ff89525acfp-1, -- 0x1.f2e0e9a6a8b09p-1, -- 0x1.f33f7e43a706bp-1, -- 0x1.f39bc242e43e6p-1, -- 0x1.f3f5c1558b19ep-1, -- 0x1.f44d870704911p-1, -- 0x1.f4a31ebcd47dfp-1, -- 0x1.f4f693b67bd77p-1, -- 0x1.f547f10d60597p-1, -- 0x1.f59741b4b97cfp-1, -- 0x1.f5e4907982a07p-1, -- 0x1.f62fe80272419p-1, -- 0x1.f67952cff6282p-1, -- 0x1.f6c0db3c34641p-1, -- 0x1.f7068b7b10fd9p-1, -- 0x1.f74a6d9a38383p-1, -- 0x1.f78c8b812d498p-1, -- 0x1.f7cceef15d631p-1, -- 0x1.f80ba18636f07p-1, -- 0x1.f848acb544e95p-1, -- 0x1.f88419ce4e184p-1, -- 0x1.f8bdf1fb78370p-1, -- 0x1.f8f63e416ebffp-1, -- 0x1.f92d077f8d56dp-1, -- 0x1.f96256700da8ep-1, -- 0x1.f99633a838a57p-1, -- 0x1.f9c8a7989af0dp-1, -- 0x1.f9f9ba8d3c733p-1, -- 0x1.fa2974addae45p-1, -- 0x1.fa57ddfe27376p-1, -- 0x1.fa84fe5e05c8dp-1, -- 0x1.fab0dd89d1309p-1, -- 0x1.fadb831a9f9c3p-1, -- 0x1.fb04f6868a944p-1, -- 0x1.fb2d3f20f9101p-1, -- 0x1.fb54641aebbc9p-1, -- 0x1.fb7a6c834b5a2p-1, -- 0x1.fb9f5f4739170p-1, -- 0x1.fbc3433260ca5p-1, -- 0x1.fbe61eef4cf6ap-1, -- 0x1.fc07f907bc794p-1, -- 0x1.fc28d7e4f9cd0p-1, -- 0x1.fc48c1d033c7ap-1, -- 0x1.fc67bcf2d7b8fp-1, -- 0x1.fc85cf56ecd38p-1, -- 0x1.fca2fee770c79p-1, -- 0x1.fcbf5170b578bp-1, -- 0x1.fcdacca0bfb73p-1, -- 0x1.fcf57607a6e7cp-1, -- 0x1.fd0f5317f582fp-1, -- 0x1.fd2869270a56fp-1, -- 0x1.fd40bd6d7a785p-1, -- 0x1.fd58550773cb5p-1, -- 0x1.fd6f34f52013ap-1, -- 0x1.fd85621b0876dp-1, -- 0x1.fd9ae142795e3p-1, -- 0x1.fdafb719e6a69p-1, -- 0x1.fdc3e835500b3p-1, -- 0x1.fdd7790ea5bc0p-1, -- 0x1.fdea6e062d0c9p-1, -- 0x1.fdfccb62e52d3p-1, -- 0x1.fe0e9552ebdd6p-1, -- 0x1.fe1fcfebe2083p-1, -- 0x1.fe307f2b503d0p-1, -- 0x1.fe40a6f70af4bp-1, -- 0x1.fe504b1d9696cp-1, -- 0x1.fe5f6f568b301p-1, -- 0x1.fe6e1742f7cf6p-1, -- 0x1.fe7c466dc57a1p-1, -- 0x1.fe8a004c19ae6p-1, -- 0x1.fe97483db8670p-1, -- 0x1.fea4218d6594ap-1, -- 0x1.feb08f7146046p-1, -- 0x1.febc950b3fa75p-1, -- 0x1.fec835695932ep-1, -- 0x1.fed37386190fbp-1, -- 0x1.fede5248e38f4p-1, -- 0x1.fee8d486585eep-1, -- 0x1.fef2fd00af31ap-1, -- 0x1.fefcce6813974p-1, -- 0x1.ff064b5afffbep-1, -- 0x1.ff0f766697c76p-1, -- 0x1.ff18520700971p-1, -- 0x1.ff20e0a7ba8c2p-1, -- 0x1.ff2924a3f7a83p-1, -- 0x1.ff312046f2339p-1, -- 0x1.ff38d5cc4227fp-1, -- 0x1.ff404760319b4p-1, -- 0x1.ff47772010262p-1, -- 0x1.ff4e671a85425p-1, -- 0x1.ff55194fe19dfp-1, -- 0x1.ff5b8fb26f5f6p-1, -- 0x1.ff61cc26c1578p-1, -- 0x1.ff67d08401202p-1, -- 0x1.ff6d9e943c231p-1, -- 0x1.ff733814af88cp-1, -- 0x1.ff789eb6130c9p-1, -- 0x1.ff7dd41ce2b4dp-1, -- 0x1.ff82d9e1a76d8p-1, -- 0x1.ff87b1913e853p-1, -- 0x1.ff8c5cad200a5p-1, -- 0x1.ff90dcaba4096p-1, -- 0x1.ff9532f846ab0p-1, -- 0x1.ff9960f3eb327p-1, -- 0x1.ff9d67f51ddbap-1, -- 0x1.ffa14948549a7p-1, -- 0x1.ffa506302ebaep-1, -- 0x1.ffa89fe5b3625p-1, -- 0x1.ffac17988ef4bp-1, -- 0x1.ffaf6e6f4f5c0p-1, -- 0x1.ffb2a5879f35ep-1, -- 0x1.ffb5bdf67fe6fp-1, -- 0x1.ffb8b8c88295fp-1, -- 0x1.ffbb970200110p-1, -- 0x1.ffbe599f4f9d9p-1, -- 0x1.ffc10194fcb64p-1, -- 0x1.ffc38fcffbb7cp-1, -- 0x1.ffc60535dd7f5p-1, -- 0x1.ffc862a501fd7p-1, -- 0x1.ffcaa8f4c9beap-1, -- 0x1.ffccd8f5c66d1p-1, -- 0x1.ffcef371ea4d7p-1, -- 0x1.ffd0f92cb6ba7p-1, -- 0x1.ffd2eae369a07p-1, -- 0x1.ffd4c94d29fdbp-1, -- 0x1.ffd6951b33686p-1, -- 0x1.ffd84ef9009eep-1, -- 0x1.ffd9f78c7524ap-1, -- 0x1.ffdb8f7605ee7p-1, -- 0x1.ffdd1750e1220p-1, -- 0x1.ffde8fb314ebfp-1, -- 0x1.ffdff92db56e5p-1, -- 0x1.ffe1544d01ccbp-1, -- 0x1.ffe2a1988857cp-1, -- 0x1.ffe3e19349dc7p-1, -- 0x1.ffe514bbdc197p-1, -- 0x1.ffe63b8c8b5f7p-1, -- 0x1.ffe7567b7b5e1p-1, -- 0x1.ffe865fac722bp-1, -- 0x1.ffe96a78a04a9p-1, -- 0x1.ffea645f6d6dap-1, -- 0x1.ffeb5415e7c44p-1, -- 0x1.ffec39ff380b9p-1, -- 0x1.ffed167b12ac2p-1, -- 0x1.ffede9e5d3262p-1, -- 0x1.ffeeb49896c6dp-1, -- 0x1.ffef76e956a9fp-1, -- 0x1.fff0312b010b5p-1, -- 0x1.fff0e3ad91ec2p-1, -- 0x1.fff18ebe2b0e1p-1, -- 0x1.fff232a72b48ep-1, -- 0x1.fff2cfb0453d9p-1, -- 0x1.fff3661e9569dp-1, -- 0x1.fff3f634b79f9p-1, -- 0x1.fff48032dbe40p-1, -- 0x1.fff50456dab8cp-1, -- 0x1.fff582dc48d30p-1, -- 0x1.fff5fbfc8a439p-1, -- 0x1.fff66feee5129p-1, -- 0x1.fff6dee89352ep-1, -- 0x1.fff7491cd4af6p-1, -- 0x1.fff7aebcff755p-1, -- 0x1.fff80ff8911fdp-1, -- 0x1.fff86cfd3e657p-1, -- 0x1.fff8c5f702ccfp-1, -- 0x1.fff91b102fca8p-1, -- 0x1.fff96c717b695p-1, -- 0x1.fff9ba420e834p-1, -- 0x1.fffa04a7928b1p-1, -- 0x1.fffa4bc63ee9ap-1, -- 0x1.fffa8fc0e5f33p-1, -- 0x1.fffad0b901755p-1, -- 0x1.fffb0ecebee1bp-1, -- 0x1.fffb4a210b172p-1, -- 0x1.fffb82cd9dcbfp-1, -- 0x1.fffbb8f1049c6p-1, -- 0x1.fffbeca6adbe9p-1, -- 0x1.fffc1e08f25f5p-1, -- 0x1.fffc4d3120aa1p-1, -- 0x1.fffc7a37857d2p-1, -- 0x1.fffca53375ce3p-1, -- 0x1.fffcce3b57bffp-1, -- 0x1.fffcf564ab6b7p-1, -- 0x1.fffd1ac4135f9p-1, -- 0x1.fffd3e6d5cd87p-1, -- 0x1.fffd607387b07p-1, -- 0x1.fffd80e8ce0dap-1, -- 0x1.fffd9fdeabccep-1, -- 0x1.fffdbd65e5ad0p-1, -- 0x1.fffdd98e903b2p-1, -- 0x1.fffdf46816833p-1, -- 0x1.fffe0e0140857p-1, -- 0x1.fffe26683972ap-1, -- 0x1.fffe3daa95b18p-1, -- 0x1.fffe53d558ae9p-1, -- 0x1.fffe68f4fa777p-1, -- 0x1.fffe7d156d244p-1, -- 0x1.fffe904222101p-1, -- 0x1.fffea2860ee1ep-1, -- 0x1.fffeb3ebb267bp-1, -- 0x1.fffec47d19457p-1, -- 0x1.fffed443e2787p-1, -- 0x1.fffee34943b15p-1, -- 0x1.fffef1960d85dp-1, -- 0x1.fffeff32af7afp-1, -- 0x1.ffff0c273bea2p-1, -- 0x1.ffff187b6bc0ep-1, -- 0x1.ffff2436a21dcp-1, -- 0x1.ffff2f5fefcaap-1, -- 0x1.ffff39fe16963p-1, -- 0x1.ffff44178c8d2p-1, -- 0x1.ffff4db27f146p-1, -- 0x1.ffff56d4d5e5ep-1, -- 0x1.ffff5f8435efcp-1, -- 0x1.ffff67c604180p-1, -- 0x1.ffff6f9f67e55p-1, -- 0x1.ffff77154e0d6p-1, -- 0x1.ffff7e2c6aea2p-1, -- 0x1.ffff84e93cd75p-1, -- 0x1.ffff8b500e77cp-1, -- 0x1.ffff9164f8e46p-1, -- 0x1.ffff972be5c59p-1, -- 0x1.ffff9ca891572p-1, -- 0x1.ffffa1de8c582p-1, -- 0x1.ffffa6d13de73p-1, -- 0x1.ffffab83e54b8p-1, -- 0x1.ffffaff99bac4p-1, -- 0x1.ffffb43555b5fp-1, -- 0x1.ffffb839e52f3p-1, -- 0x1.ffffbc09fa7cdp-1, -- 0x1.ffffbfa82616bp-1, -- 0x1.ffffc316d9ed0p-1, -- 0x1.ffffc6586abf6p-1, -- 0x1.ffffc96f1165ep-1, -- 0x1.ffffcc5cec0c1p-1, -- 0x1.ffffcf23ff5fcp-1, -- 0x1.ffffd1c637b2bp-1, -- 0x1.ffffd4456a10dp-1, -- 0x1.ffffd6a3554a1p-1, -- 0x1.ffffd8e1a2f22p-1, -- 0x1.ffffdb01e8546p-1, -- 0x1.ffffdd05a75eap-1, -- 0x1.ffffdeee4f810p-1, -- 0x1.ffffe0bd3e852p-1, -- 0x1.ffffe273c15b7p-1, -- 0x1.ffffe41314e06p-1, -- 0x1.ffffe59c6698bp-1, -- 0x1.ffffe710d565ep-1, -- 0x1.ffffe8717232dp-1, -- 0x1.ffffe9bf4098cp-1, -- 0x1.ffffeafb377d5p-1, -- 0x1.ffffec2641a9ep-1, -- 0x1.ffffed413e5b7p-1, -- 0x1.ffffee4d01cd6p-1, -- 0x1.ffffef4a55bd4p-1, -- 0x1.fffff039f9e8fp-1, -- 0x1.fffff11ca4876p-1, -- 0x1.fffff1f302bc1p-1, -- 0x1.fffff2bdb904dp-1, -- 0x1.fffff37d63a36p-1, -- 0x1.fffff43297019p-1, -- 0x1.fffff4dde0118p-1, -- 0x1.fffff57fc4a95p-1, -- 0x1.fffff618c3da6p-1, -- 0x1.fffff6a956450p-1, -- 0x1.fffff731ee681p-1, -- 0x1.fffff7b2f8ed6p-1, -- 0x1.fffff82cdcf1bp-1, -- 0x1.fffff89ffc4aap-1, -- 0x1.fffff90cb3c81p-1, -- 0x1.fffff9735b73bp-1, -- 0x1.fffff9d446cccp-1, -- 0x1.fffffa2fc5015p-1, -- 0x1.fffffa8621251p-1, -- 0x1.fffffad7a2652p-1, -- 0x1.fffffb248c39dp-1, -- 0x1.fffffb6d1e95dp-1, -- 0x1.fffffbb196132p-1, -- 0x1.fffffbf22c1e2p-1, -- 0x1.fffffc2f171e3p-1, -- 0x1.fffffc688a9cfp-1, -- 0x1.fffffc9eb76acp-1, -- 0x1.fffffcd1cbc28p-1, -- 0x1.fffffd01f36afp-1, -- 0x1.fffffd2f57d68p-1, -- 0x1.fffffd5a2041fp-1, -- 0x1.fffffd8271d12p-1, -- 0x1.fffffda86faa9p-1, -- 0x1.fffffdcc3b117p-1, -- 0x1.fffffdedf37edp-1, -- 0x1.fffffe0db6b91p-1, -- 0x1.fffffe2ba0ea5p-1, -- 0x1.fffffe47ccb60p-1, -- 0x1.fffffe62534d4p-1, -- 0x1.fffffe7b4c81ep-1, -- 0x1.fffffe92ced93p-1, -- 0x1.fffffea8ef9cfp-1, -- 0x1.fffffebdc2ec6p-1, -- 0x1.fffffed15bcbap-1, -- 0x1.fffffee3cc32cp-1, -- 0x1.fffffef5251c2p-1, -- 0x1.ffffff0576917p-1, -- 0x1.ffffff14cfb92p-1, -- 0x1.ffffff233ee1dp-1, -- 0x1.ffffff30d18e8p-1, -- 0x1.ffffff3d9480fp-1, -- 0x1.ffffff4993c46p-1, -- 0x1.ffffff54dab72p-1, -- 0x1.ffffff5f74141p-1, -- 0x1.ffffff6969fb8p-1, -- 0x1.ffffff72c5fb6p-1, -- 0x1.ffffff7b91176p-1, -- 0x1.ffffff83d3d07p-1, -- 0x1.ffffff8b962bep-1, -- 0x1.ffffff92dfba2p-1, -- 0x1.ffffff99b79d2p-1, -- 0x1.ffffffa0248e8p-1, -- 0x1.ffffffa62ce54p-1, -- 0x1.ffffffabd69b4p-1, -- 0x1.ffffffb127525p-1, -- 0x1.ffffffb624592p-1, -- 0x1.ffffffbad2affp-1, -- 0x1.ffffffbf370cdp-1, -- 0x1.ffffffc355dfdp-1, -- 0x1.ffffffc733572p-1, -- 0x1.ffffffcad3626p-1, -- 0x1.ffffffce39b67p-1, -- 0x1.ffffffd169d0cp-1, -- 0x1.ffffffd466fa5p-1, -- 0x1.ffffffd7344aap-1, -- 0x1.ffffffd9d4aabp-1, -- 0x1.ffffffdc4ad7ap-1, -- 0x1.ffffffde9964ep-1, -- 0x1.ffffffe0c2bf0p-1, -- 0x1.ffffffe2c92dbp-1, -- 0x1.ffffffe4aed5ep-1, -- 0x1.ffffffe675bbdp-1, -- 0x1.ffffffe81fc4ep-1, -- 0x1.ffffffe9aeb97p-1, -- 0x1.ffffffeb24467p-1, -- 0x1.ffffffec81ff2p-1, -- 0x1.ffffffedc95e7p-1, -- 0x1.ffffffeefbc85p-1, -- 0x1.fffffff01a8b6p-1, -- 0x1.fffffff126e1ep-1, -- 0x1.fffffff221f30p-1, -- 0x1.fffffff30cd3fp-1, -- 0x1.fffffff3e8892p-1, -- 0x1.fffffff4b606fp-1, -- 0x1.fffffff57632dp-1, -- 0x1.fffffff629e44p-1, -- 0x1.fffffff6d1e56p-1, -- 0x1.fffffff76ef3fp-1, -- 0x1.fffffff801c1fp-1, -- 0x1.fffffff88af67p-1, -- 0x1.fffffff90b2e3p-1, -- 0x1.fffffff982fc1p-1, -- 0x1.fffffff9f2e9fp-1, -- 0x1.fffffffa5b790p-1, -- 0x1.fffffffabd229p-1, -- 0x1.fffffffb18582p-1, -- 0x1.fffffffb6d844p-1, -- 0x1.fffffffbbd0aap-1, -- 0x1.fffffffc0748fp-1, -- 0x1.fffffffc4c96cp-1, -- 0x1.fffffffc8d462p-1, -- 0x1.fffffffcc9a41p-1, -- 0x1.fffffffd01f89p-1, -- 0x1.fffffffd36871p-1, -- 0x1.fffffffd678edp-1, -- 0x1.fffffffd954aep-1, -- 0x1.fffffffdbff2ap-1, -- 0x1.fffffffde7ba0p-1, -- 0x1.fffffffe0cd16p-1, -- 0x1.fffffffe2f664p-1, -- 0x1.fffffffe4fa30p-1, -- 0x1.fffffffe6daf7p-1, -- 0x1.fffffffe89b0cp-1, -- 0x1.fffffffea3c9ap-1, -- 0x1.fffffffebc1a9p-1, -- 0x1.fffffffed2c21p-1, -- 0x1.fffffffee7dc8p-1, -- 0x1.fffffffefb847p-1, -- 0x1.ffffffff0dd2bp-1, -- 0x1.ffffffff1ede9p-1, -- 0x1.ffffffff2ebdap-1, -- 0x1.ffffffff3d843p-1, -- 0x1.ffffffff4b453p-1, -- 0x1.ffffffff58126p-1, -- 0x1.ffffffff63fc3p-1, -- 0x1.ffffffff6f121p-1, -- 0x1.ffffffff79626p-1, -- 0x1.ffffffff82fabp-1, -- 0x1.ffffffff8be77p-1, -- 0x1.ffffffff94346p-1, -- 0x1.ffffffff9bec8p-1, -- 0x1.ffffffffa319fp-1, -- 0x1.ffffffffa9c63p-1, -- 0x1.ffffffffaffa4p-1, -- 0x1.ffffffffb5be5p-1, -- 0x1.ffffffffbb1a2p-1, -- 0x1.ffffffffc014ep-1, -- 0x1.ffffffffc4b56p-1, -- 0x1.ffffffffc901cp-1, -- 0x1.ffffffffccfffp-1, -- 0x1.ffffffffd0b56p-1, -- 0x1.ffffffffd4271p-1, -- 0x1.ffffffffd759dp-1, -- 0x1.ffffffffda520p-1, -- 0x1.ffffffffdd13cp-1, -- 0x1.ffffffffdfa2dp-1, -- 0x1.ffffffffe202dp-1, -- 0x1.ffffffffe4371p-1, -- 0x1.ffffffffe642ap-1, -- 0x1.ffffffffe8286p-1, -- 0x1.ffffffffe9eb0p-1, -- 0x1.ffffffffeb8d0p-1, -- 0x1.ffffffffed10ap-1, -- 0x1.ffffffffee782p-1, -- 0x1.ffffffffefc57p-1, -- 0x1.fffffffff0fa7p-1, -- 0x1.fffffffff218fp-1, -- 0x1.fffffffff3227p-1, -- 0x1.fffffffff4188p-1, -- 0x1.fffffffff4fc9p-1, -- 0x1.fffffffff5cfdp-1, -- 0x1.fffffffff6939p-1, -- 0x1.fffffffff748ep-1, -- 0x1.fffffffff7f0dp-1, -- 0x1.fffffffff88c5p-1, -- 0x1.fffffffff91c6p-1, -- 0x1.fffffffff9a1bp-1, -- 0x1.fffffffffa1d2p-1, -- 0x1.fffffffffa8f6p-1, -- 0x1.fffffffffaf92p-1, -- 0x1.fffffffffb5b0p-1, -- 0x1.fffffffffbb58p-1, -- 0x1.fffffffffc095p-1, -- 0x1.fffffffffc56dp-1, -- 0x1.fffffffffc9e8p-1, -- 0x1.fffffffffce0dp-1, -- 0x1.fffffffffd1e1p-1, -- 0x1.fffffffffd56cp-1, -- 0x1.fffffffffd8b3p-1, -- 0x1.fffffffffdbbap-1, -- 0x1.fffffffffde86p-1, -- 0x1.fffffffffe11dp-1, -- 0x1.fffffffffe380p-1, -- 0x1.fffffffffe5b6p-1, -- 0x1.fffffffffe7c0p-1, -- 0x1.fffffffffe9a2p-1, -- 0x1.fffffffffeb60p-1, -- 0x1.fffffffffecfbp-1, -- 0x1.fffffffffee77p-1, -- 0x1.fffffffffefd6p-1, -- 0x1.ffffffffff11ap-1, -- 0x1.ffffffffff245p-1, -- 0x1.ffffffffff359p-1, -- 0x1.ffffffffff457p-1, -- 0x1.ffffffffff542p-1, -- 0x1.ffffffffff61bp-1, -- 0x1.ffffffffff6e3p-1, -- 0x1.ffffffffff79bp-1, -- 0x1.ffffffffff845p-1, -- 0x1.ffffffffff8e2p-1, -- 0x1.ffffffffff973p-1, -- 0x1.ffffffffff9f8p-1, -- 0x1.ffffffffffa73p-1, -- 0x1.ffffffffffae4p-1, -- 0x1.ffffffffffb4cp-1, -- 0x1.ffffffffffbadp-1, -- 0x1.ffffffffffc05p-1, -- 0x1.ffffffffffc57p-1, -- 0x1.ffffffffffca2p-1, -- 0x1.ffffffffffce7p-1, -- 0x1.ffffffffffd27p-1, -- 0x1.ffffffffffd62p-1, -- 0x1.ffffffffffd98p-1, -- 0x1.ffffffffffdcap-1, -- 0x1.ffffffffffdf8p-1, -- 0x1.ffffffffffe22p-1, -- 0x1.ffffffffffe49p-1, -- 0x1.ffffffffffe6cp-1, -- 0x1.ffffffffffe8dp-1, -- 0x1.ffffffffffeabp-1, -- 0x1.ffffffffffec7p-1, -- 0x1.ffffffffffee1p-1, -- 0x1.ffffffffffef8p-1, -- 0x1.fffffffffff0ep-1, -- 0x1.fffffffffff22p-1, -- 0x1.fffffffffff34p-1, -- 0x1.fffffffffff45p-1, -- 0x1.fffffffffff54p-1, -- 0x1.fffffffffff62p-1, -- 0x1.fffffffffff6fp-1, -- 0x1.fffffffffff7bp-1, -- 0x1.fffffffffff86p-1, -- 0x1.fffffffffff90p-1, -- 0x1.fffffffffff9ap-1, -- 0x1.fffffffffffa2p-1, -- 0x1.fffffffffffaap-1, -- 0x1.fffffffffffb1p-1, -- 0x1.fffffffffffb8p-1, -- 0x1.fffffffffffbep-1, -- 0x1.fffffffffffc3p-1, -- 0x1.fffffffffffc8p-1, -- 0x1.fffffffffffcdp-1, -- 0x1.fffffffffffd1p-1, -- 0x1.fffffffffffd5p-1, -- 0x1.fffffffffffd9p-1, -- 0x1.fffffffffffdcp-1, -- 0x1.fffffffffffdfp-1, -- 0x1.fffffffffffe2p-1, -- 0x1.fffffffffffe4p-1, -- 0x1.fffffffffffe7p-1, -- 0x1.fffffffffffe9p-1, -- 0x1.fffffffffffebp-1, -- 0x1.fffffffffffedp-1, -- 0x1.fffffffffffeep-1, -- 0x1.ffffffffffff0p-1, -- 0x1.ffffffffffff1p-1, -- 0x1.ffffffffffff3p-1, -- 0x1.ffffffffffff4p-1, -- 0x1.ffffffffffff5p-1, -- 0x1.ffffffffffff6p-1, -- 0x1.ffffffffffff7p-1, -- 0x1.ffffffffffff7p-1, -- 0x1.ffffffffffff8p-1, -- 0x1.ffffffffffff9p-1, -- 0x1.ffffffffffff9p-1, -- 0x1.ffffffffffffap-1, -- 0x1.ffffffffffffbp-1, -- 0x1.ffffffffffffbp-1, -- 0x1.ffffffffffffbp-1, -- 0x1.ffffffffffffcp-1, -- 0x1.ffffffffffffcp-1, -- 0x1.ffffffffffffdp-1, -- 0x1.ffffffffffffdp-1, -- 0x1.ffffffffffffdp-1, -- 0x1.ffffffffffffdp-1, -- 0x1.ffffffffffffep-1, -- 0x1.ffffffffffffep-1, -- 0x1.ffffffffffffep-1, -- 0x1.ffffffffffffep-1, -- 0x1.ffffffffffffep-1, -- 0x1.ffffffffffffep-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.fffffffffffffp-1, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- 0x1.0000000000000p+0, -- }, -- .scale = { 0x1.20dd750429b6dp+0, -- 0x1.20d8f1975c85dp+0, -- 0x1.20cb67bd452c7p+0, -- 0x1.20b4d8bac36c1p+0, -- 0x1.209546ad13ccfp+0, -- 0x1.206cb4897b148p+0, -- 0x1.203b261cd0052p+0, -- 0x1.2000a00ae3804p+0, -- 0x1.1fbd27cdc72d3p+0, -- 0x1.1f70c3b4f2cc7p+0, -- 0x1.1f1b7ae44867fp+0, -- 0x1.1ebd5552f795bp+0, -- 0x1.1e565bca400d4p+0, -- 0x1.1de697e413d28p+0, -- 0x1.1d6e14099944ap+0, -- 0x1.1cecdb718d61cp+0, -- 0x1.1c62fa1e869b6p+0, -- 0x1.1bd07cdd189acp+0, -- 0x1.1b357141d95d5p+0, -- 0x1.1a91e5a748165p+0, -- 0x1.19e5e92b964abp+0, -- 0x1.19318bae53a04p+0, -- 0x1.1874ddcdfce24p+0, -- 0x1.17aff0e56ec10p+0, -- 0x1.16e2d7093cd8cp+0, -- 0x1.160da304ed92fp+0, -- 0x1.153068581b781p+0, -- 0x1.144b3b337c90cp+0, -- 0x1.135e3075d076bp+0, -- 0x1.12695da8b5bdep+0, -- 0x1.116cd8fd67618p+0, -- 0x1.1068b94962e5ep+0, -- 0x1.0f5d1602f7e41p+0, -- 0x1.0e4a073dc1b91p+0, -- 0x1.0d2fa5a70c168p+0, -- 0x1.0c0e0a8223359p+0, -- 0x1.0ae54fa490722p+0, -- 0x1.09b58f724416bp+0, -- 0x1.087ee4d9ad247p+0, -- 0x1.07416b4fbfe7cp+0, -- 0x1.05fd3ecbec297p+0, -- 0x1.04b27bc403d30p+0, -- 0x1.03613f2812dafp+0, -- 0x1.0209a65e29545p+0, -- 0x1.00abcf3e187a9p+0, -- 0x1.fe8fb01a47307p-1, -- 0x1.fbbbbef34b4b2p-1, -- 0x1.f8dc092d58ff8p-1, -- 0x1.f5f0cdaf15313p-1, -- 0x1.f2fa4c16c0019p-1, -- 0x1.eff8c4b1375dbp-1, -- 0x1.ecec7870ebca7p-1, -- 0x1.e9d5a8e4c934ep-1, -- 0x1.e6b4982f158b9p-1, -- 0x1.e38988fc46e72p-1, -- 0x1.e054be79d3042p-1, -- 0x1.dd167c4cf9d2ap-1, -- 0x1.d9cf06898cdafp-1, -- 0x1.d67ea1a8b5368p-1, -- 0x1.d325927fb9d89p-1, -- 0x1.cfc41e36c7df9p-1, -- 0x1.cc5a8a3fbea40p-1, -- 0x1.c8e91c4d01368p-1, -- 0x1.c5701a484ef9dp-1, -- 0x1.c1efca49a5011p-1, -- 0x1.be68728e29d5dp-1, -- 0x1.bada596f25436p-1, -- 0x1.b745c55905bf8p-1, -- 0x1.b3aafcc27502ep-1, -- 0x1.b00a46237d5bep-1, -- 0x1.ac63e7ecc1411p-1, -- 0x1.a8b8287ec6a09p-1, -- 0x1.a5074e2157620p-1, -- 0x1.a1519efaf889ep-1, -- 0x1.9d97610879642p-1, -- 0x1.99d8da149c13fp-1, -- 0x1.96164fafd8de3p-1, -- 0x1.925007283d7aap-1, -- 0x1.8e86458169af8p-1, -- 0x1.8ab94f6caa71dp-1, -- 0x1.86e9694134b9ep-1, -- 0x1.8316d6f48133dp-1, -- 0x1.7f41dc12c9e89p-1, -- 0x1.7b6abbb7aaf19p-1, -- 0x1.7791b886e7403p-1, -- 0x1.73b714a552763p-1, -- 0x1.6fdb11b1e0c34p-1, -- 0x1.6bfdf0beddaf5p-1, -- 0x1.681ff24b4ab04p-1, -- 0x1.6441563c665d4p-1, -- 0x1.60625bd75d07bp-1, -- 0x1.5c8341bb23767p-1, -- 0x1.58a445da7c74cp-1, -- 0x1.54c5a57629db0p-1, -- 0x1.50e79d1749ac9p-1, -- 0x1.4d0a6889dfd9fp-1, -- 0x1.492e42d78d2c5p-1, -- 0x1.4553664273d24p-1, -- 0x1.417a0c4049fd0p-1, -- 0x1.3da26d759aef5p-1, -- 0x1.39ccc1b136d5ap-1, -- 0x1.35f93fe7d1b3dp-1, -- 0x1.32281e2fd1a92p-1, -- 0x1.2e5991bd4cbfcp-1, -- 0x1.2a8dcede3673bp-1, -- 0x1.26c508f6bd0ffp-1, -- 0x1.22ff727dd6f7bp-1, -- 0x1.1f3d3cf9ffe5ap-1, -- 0x1.1b7e98fe26217p-1, -- 0x1.17c3b626c7a11p-1, -- 0x1.140cc3173f007p-1, -- 0x1.1059ed7740313p-1, -- 0x1.0cab61f084b93p-1, -- 0x1.09014c2ca74dap-1, -- 0x1.055bd6d32e8d7p-1, -- 0x1.01bb2b87c6968p-1, -- 0x1.fc3ee5d1524b0p-2, -- 0x1.f511a91a67d2ap-2, -- 0x1.edeeee0959518p-2, -- 0x1.e6d6ffaa65a25p-2, -- 0x1.dfca26f5bbf88p-2, -- 0x1.d8c8aace11e63p-2, -- 0x1.d1d2cfff91594p-2, -- 0x1.cae8d93f1d7b6p-2, -- 0x1.c40b0729ed547p-2, -- 0x1.bd3998457afdap-2, -- 0x1.b674c8ffc6283p-2, -- 0x1.afbcd3afe8ab6p-2, -- 0x1.a911f096fbc26p-2, -- 0x1.a27455e14c93cp-2, -- 0x1.9be437a7de946p-2, -- 0x1.9561c7f23a47bp-2, -- 0x1.8eed36b886d93p-2, -- 0x1.8886b1e5ecfd1p-2, -- 0x1.822e655b417e6p-2, -- 0x1.7be47af1f5d89p-2, -- 0x1.75a91a7f4d2edp-2, -- 0x1.6f7c69d7d3ef8p-2, -- 0x1.695e8cd31867ep-2, -- 0x1.634fa54fa285fp-2, -- 0x1.5d4fd33729015p-2, -- 0x1.575f3483021c3p-2, -- 0x1.517de540ce2a3p-2, -- 0x1.4babff975a04cp-2, -- 0x1.45e99bcbb7915p-2, -- 0x1.4036d0468a7a2p-2, -- 0x1.3a93b1998736cp-2, -- 0x1.35005285227f1p-2, -- 0x1.2f7cc3fe6f423p-2, -- 0x1.2a09153529381p-2, -- 0x1.24a55399ea239p-2, -- 0x1.1f518ae487dc8p-2, -- 0x1.1a0dc51a9934dp-2, -- 0x1.14da0a961fd14p-2, -- 0x1.0fb6620c550afp-2, -- 0x1.0aa2d09497f2bp-2, -- 0x1.059f59af7a906p-2, -- 0x1.00abff4dec7a3p-2, -- 0x1.f79183b101c5bp-3, -- 0x1.edeb406d9c824p-3, -- 0x1.e4652fadcb6b2p-3, -- 0x1.daff4969c0b04p-3, -- 0x1.d1b982c501370p-3, -- 0x1.c893ce1dcbef7p-3, -- 0x1.bf8e1b1ca2279p-3, -- 0x1.b6a856c3ed54fp-3, -- 0x1.ade26b7fbed95p-3, -- 0x1.a53c4135a6526p-3, -- 0x1.9cb5bd549b111p-3, -- 0x1.944ec2e4f5630p-3, -- 0x1.8c07329874652p-3, -- 0x1.83deeada4d25ap-3, -- 0x1.7bd5c7df3fe9cp-3, -- 0x1.73eba3b5b07b7p-3, -- 0x1.6c205655be71fp-3, -- 0x1.6473b5b15a7a1p-3, -- 0x1.5ce595c455b0ap-3, -- 0x1.5575c8a468361p-3, -- 0x1.4e241e912c305p-3, -- 0x1.46f066040a832p-3, -- 0x1.3fda6bc016994p-3, -- 0x1.38e1fae1d6a9dp-3, -- 0x1.3206dceef5f87p-3, -- 0x1.2b48d9e5dea1cp-3, -- 0x1.24a7b84d38971p-3, -- 0x1.1e233d434b813p-3, -- 0x1.17bb2c8d41535p-3, -- 0x1.116f48a6476ccp-3, -- 0x1.0b3f52ce8c383p-3, -- 0x1.052b0b1a174eap-3, -- 0x1.fe6460fef4680p-4, -- 0x1.f2a901ccafb37p-4, -- 0x1.e723726b824a9p-4, -- 0x1.dbd32ac4c99b0p-4, -- 0x1.d0b7a0f921e7cp-4, -- 0x1.c5d0497c09e74p-4, -- 0x1.bb1c972f23e50p-4, -- 0x1.b09bfb7d11a83p-4, -- 0x1.a64de673e8837p-4, -- 0x1.9c31c6df3b1b8p-4, -- 0x1.92470a61b6965p-4, -- 0x1.888d1d8e510a3p-4, -- 0x1.7f036c0107294p-4, -- 0x1.75a96077274bap-4, -- 0x1.6c7e64e7281cbp-4, -- 0x1.6381e2980956bp-4, -- 0x1.5ab342383d177p-4, -- 0x1.5211ebf41880bp-4, -- 0x1.499d478bca735p-4, -- 0x1.4154bc68d75c3p-4, -- 0x1.3937b1b319259p-4, -- 0x1.31458e6542847p-4, -- 0x1.297db960e4f63p-4, -- 0x1.21df9981f8e53p-4, -- 0x1.1a6a95b1e786fp-4, -- 0x1.131e14fa1625dp-4, -- 0x1.0bf97e95f2a64p-4, -- 0x1.04fc3a0481321p-4, -- 0x1.fc4b5e32d6259p-5, -- 0x1.eeea8c1b1db93p-5, -- 0x1.e1d4cf1e2450ap-5, -- 0x1.d508f9a1ea64ep-5, -- 0x1.c885df3451a07p-5, -- 0x1.bc4a54a84e834p-5, -- 0x1.b055303221015p-5, -- 0x1.a4a549829587ep-5, -- 0x1.993979e14fffdp-5, -- 0x1.8e109c4622913p-5, -- 0x1.83298d717210ep-5, -- 0x1.78832c03aa2b1p-5, -- 0x1.6e1c5893c380bp-5, -- 0x1.63f3f5c4de13bp-5, -- 0x1.5a08e85af27e0p-5, -- 0x1.505a174e9c929p-5, -- 0x1.46e66be002240p-5, -- 0x1.3dacd1a8d8ccdp-5, -- 0x1.34ac36ad8dafep-5, -- 0x1.2be38b6d92415p-5, -- 0x1.2351c2f2d1449p-5, -- 0x1.1af5d2e04f3f6p-5, -- 0x1.12ceb37ff9bc3p-5, -- 0x1.0adb5fcfa8c75p-5, -- 0x1.031ad58d56279p-5, -- 0x1.f7182a851bca2p-6, -- 0x1.e85c449e377f2p-6, -- 0x1.da0005e5f28dfp-6, -- 0x1.cc0180af00a8bp-6, -- 0x1.be5ecd2fcb5f9p-6, -- 0x1.b1160991ff737p-6, -- 0x1.a4255a00b9f03p-6, -- 0x1.978ae8b55ce1bp-6, -- 0x1.8b44e6031383ep-6, -- 0x1.7f5188610ddc8p-6, -- 0x1.73af0c737bb45p-6, -- 0x1.685bb5134ef13p-6, -- 0x1.5d55cb54cd53ap-6, -- 0x1.529b9e8cf9a1ep-6, -- 0x1.482b8455dc491p-6, -- 0x1.3e03d891b37dep-6, -- 0x1.3422fd6d12e2bp-6, -- 0x1.2a875b5ffab56p-6, -- 0x1.212f612dee7fbp-6, -- 0x1.181983e5133ddp-6, -- 0x1.0f443edc5ce49p-6, -- 0x1.06ae13b0d3255p-6, -- 0x1.fcab1483ea7fcp-7, -- 0x1.ec72615a894c4p-7, -- 0x1.dcaf3691fc448p-7, -- 0x1.cd5ec93c12431p-7, -- 0x1.be7e5ac24963bp-7, -- 0x1.b00b38d6b3575p-7, -- 0x1.a202bd6372dcep-7, -- 0x1.94624e78e0fafp-7, -- 0x1.87275e3a6869dp-7, -- 0x1.7a4f6aca256cbp-7, -- 0x1.6dd7fe3358230p-7, -- 0x1.61beae53b72b7p-7, -- 0x1.56011cc3b036dp-7, -- 0x1.4a9cf6bda3f4cp-7, -- 0x1.3f8ff5042a88ep-7, -- 0x1.34d7dbc76d7e5p-7, -- 0x1.2a727a89a3f14p-7, -- 0x1.205dac02bd6b9p-7, -- 0x1.1697560347b25p-7, -- 0x1.0d1d69569b82dp-7, -- 0x1.03ede1a45bfeep-7, -- 0x1.f60d8aa2a88f2p-8, -- 0x1.e4cc4abf7d065p-8, -- 0x1.d4143a9dfe965p-8, -- 0x1.c3e1a5f5c077cp-8, -- 0x1.b430ecf4a83a8p-8, -- 0x1.a4fe83fb9db25p-8, -- 0x1.9646f35a76623p-8, -- 0x1.8806d70b2fc36p-8, -- 0x1.7a3ade6c8b3e4p-8, -- 0x1.6cdfcbfc1e263p-8, -- 0x1.5ff2750fe7820p-8, -- 0x1.536fc18f7ce5cp-8, -- 0x1.4754abacdf1dcp-8, -- 0x1.3b9e3f9d06e3fp-8, -- 0x1.30499b503957fp-8, -- 0x1.2553ee2a336bfp-8, -- 0x1.1aba78ba3af89p-8, -- 0x1.107a8c7323a6ep-8, -- 0x1.06918b6355624p-8, -- 0x1.f9f9cfd9c3035p-9, -- 0x1.e77448fb66bb9p-9, -- 0x1.d58da68fd1170p-9, -- 0x1.c4412bf4b8f0bp-9, -- 0x1.b38a3af2e55b4p-9, -- 0x1.a3645330550ffp-9, -- 0x1.93cb11a30d765p-9, -- 0x1.84ba3004a50d0p-9, -- 0x1.762d84469c18fp-9, -- 0x1.6821000795a03p-9, -- 0x1.5a90b00981d93p-9, -- 0x1.4d78bba8ca5fdp-9, -- 0x1.40d564548fad7p-9, -- 0x1.34a305080681fp-9, -- 0x1.28de11c5031ebp-9, -- 0x1.1d83170fbf6fbp-9, -- 0x1.128eb96be8798p-9, -- 0x1.07fdb4dafea5fp-9, -- 0x1.fb99b8b8279e1p-10, -- 0x1.e7f232d9e2630p-10, -- 0x1.d4fed7195d7e8p-10, -- 0x1.c2b9cf7f893bfp-10, -- 0x1.b11d702b3deb1p-10, -- 0x1.a024365f771bdp-10, -- 0x1.8fc8c794b03b5p-10, -- 0x1.8005f08d6f1efp-10, -- 0x1.70d6a46e07ddap-10, -- 0x1.6235fbd7a4345p-10, -- 0x1.541f340697987p-10, -- 0x1.468dadf4080abp-10, -- 0x1.397ced7af2b15p-10, -- 0x1.2ce898809244ep-10, -- 0x1.20cc76202c5fap-10, -- 0x1.15246dda49d47p-10, -- 0x1.09ec86c75d497p-10, -- 0x1.fe41cd9bb4eeep-11, -- 0x1.e97ba3b77f306p-11, -- 0x1.d57f524723822p-11, -- 0x1.c245d4b998479p-11, -- 0x1.afc85e0f82e12p-11, -- 0x1.9e005769dbc1dp-11, -- 0x1.8ce75e9f6f8a0p-11, -- 0x1.7c7744d9378f7p-11, -- 0x1.6caa0d3582fe9p-11, -- 0x1.5d79eb71e893bp-11, -- 0x1.4ee1429bf7cc0p-11, -- 0x1.40daa3c89f5b6p-11, -- 0x1.3360ccd23db3ap-11, -- 0x1.266ea71d4f71ap-11, -- 0x1.19ff4663ae9dfp-11, -- 0x1.0e0de78654d1ep-11, -- 0x1.0295ef6591848p-11, -- 0x1.ef25d37f49fe1p-12, -- 0x1.da01102b5f851p-12, -- 0x1.c5b5412dcafadp-12, -- 0x1.b23a5a23e4210p-12, -- 0x1.9f8893d8fd1c1p-12, -- 0x1.8d986a4187285p-12, -- 0x1.7c629a822bc9ep-12, -- 0x1.6be02102b3520p-12, -- 0x1.5c0a378c90bcap-12, -- 0x1.4cda5374ea275p-12, -- 0x1.3e4a23d1f4702p-12, -- 0x1.30538fbb77ecdp-12, -- 0x1.22f0b496539bdp-12, -- 0x1.161be46ad3b50p-12, -- 0x1.09cfa445b00ffp-12, -- 0x1.fc0d55470cf51p-13, -- 0x1.e577bbcd49935p-13, -- 0x1.cfd4a5adec5bfp-13, -- 0x1.bb1a9657ce465p-13, -- 0x1.a740684026555p-13, -- 0x1.943d4a1d1ed39p-13, -- 0x1.8208bc334a6a5p-13, -- 0x1.709a8db59f25cp-13, -- 0x1.5feada379d8b7p-13, -- 0x1.4ff207314a102p-13, -- 0x1.40a8c1949f75ep-13, -- 0x1.3207fb7420eb9p-13, -- 0x1.2408e9ba3327fp-13, -- 0x1.16a501f0e42cap-13, -- 0x1.09d5f819c9e29p-13, -- 0x1.fb2b792b40a22p-14, -- 0x1.e3bcf436a1a95p-14, -- 0x1.cd55277c18d05p-14, -- 0x1.b7e94604479dcp-14, -- 0x1.a36eec00926ddp-14, -- 0x1.8fdc1b2dcf7b9p-14, -- 0x1.7d2737527c3f9p-14, -- 0x1.6b4702d7d5849p-14, -- 0x1.5a329b7d30748p-14, -- 0x1.49e17724f4d41p-14, -- 0x1.3a4b60ba9aa4dp-14, -- 0x1.2b6875310f785p-14, -- 0x1.1d312098e9dbap-14, -- 0x1.0f9e1b4dd36dfp-14, -- 0x1.02a8673a94691p-14, -- 0x1.ec929a665b449p-15, -- 0x1.d4f4b4c8e09edp-15, -- 0x1.be6abbb10a5aap-15, -- 0x1.a8e8cc1fadef6p-15, -- 0x1.94637d5bacfdbp-15, -- 0x1.80cfdc72220cfp-15, -- 0x1.6e2367dc27f95p-15, -- 0x1.5c540b4936fd2p-15, -- 0x1.4b581b8d170fcp-15, -- 0x1.3b2652b06c2b2p-15, -- 0x1.2bb5cc22e5db6p-15, -- 0x1.1cfe010e2052dp-15, -- 0x1.0ef6c4c84a0fep-15, -- 0x1.01984165a5f36p-15, -- 0x1.e9b5e8d00ce76p-16, -- 0x1.d16f5716c6c1ap-16, -- 0x1.ba4f035d60e02p-16, -- 0x1.a447b7b03f045p-16, -- 0x1.8f4ccca7fc90dp-16, -- 0x1.7b5223dac7336p-16, -- 0x1.684c227fcacefp-16, -- 0x1.562fac4329b48p-16, -- 0x1.44f21e49054f2p-16, -- 0x1.34894a5e24657p-16, -- 0x1.24eb7254ccf83p-16, -- 0x1.160f438c70913p-16, -- 0x1.07ebd2a2d2844p-16, -- 0x1.f4f12e9ab070ap-17, -- 0x1.db5ad0b27805cp-17, -- 0x1.c304efa2c6f4ep-17, -- 0x1.abe09e9144b5ep-17, -- 0x1.95df988e76644p-17, -- 0x1.80f439b4ee04bp-17, -- 0x1.6d11788a69c64p-17, -- 0x1.5a2adfa0b4bc4p-17, -- 0x1.4834877429b8fp-17, -- 0x1.37231085c7d9ap-17, -- 0x1.26eb9daed6f7ep-17, -- 0x1.1783ceac28910p-17, -- 0x1.08e1badf0fcedp-17, -- 0x1.f5f7d88472604p-18, -- 0x1.db92b5212fb8dp-18, -- 0x1.c282cd3957edap-18, -- 0x1.aab7abace48dcp-18, -- 0x1.94219bfcb4928p-18, -- 0x1.7eb1a2075864dp-18, -- 0x1.6a597219a93d9p-18, -- 0x1.570b69502f313p-18, -- 0x1.44ba864670882p-18, -- 0x1.335a62115bce2p-18, -- 0x1.22df298214423p-18, -- 0x1.133d96ae7e0ddp-18, -- 0x1.046aeabcfcdecp-18, -- 0x1.ecb9cfe1d8642p-19, -- 0x1.d21397ead99cbp-19, -- 0x1.b8d094c86d374p-19, -- 0x1.a0df0f0c626dcp-19, -- 0x1.8a2e269750a39p-19, -- 0x1.74adc8f4064d3p-19, -- 0x1.604ea819f007cp-19, -- 0x1.4d0231928c6f9p-19, -- 0x1.3aba85fe22e1fp-19, -- 0x1.296a70f414053p-19, -- 0x1.1905613b3abf2p-19, -- 0x1.097f6156f32c5p-19, -- 0x1.f59a20caf6695p-20, -- 0x1.d9c73698fb1dcp-20, -- 0x1.bf716c6168baep-20, -- 0x1.a6852c6b58392p-20, -- 0x1.8eefd70594a88p-20, -- 0x1.789fb715aae95p-20, -- 0x1.6383f726a8e04p-20, -- 0x1.4f8c96f26a26ap-20, -- 0x1.3caa61607f920p-20, -- 0x1.2acee2f5ecdb8p-20, -- 0x1.19ec60b1242edp-20, -- 0x1.09f5cf4dd2877p-20, -- 0x1.f5bd95d8730d8p-21, -- 0x1.d9371e2ff7c35p-21, -- 0x1.be41de54d155ap-21, -- 0x1.a4c89e08ef4f3p-21, -- 0x1.8cb738399b12cp-21, -- 0x1.75fa8dbc84becp-21, -- 0x1.608078a70dcbcp-21, -- 0x1.4c37c0394d094p-21, -- 0x1.39100d5687bfep-21, -- 0x1.26f9df8519bd6p-21, -- 0x1.15e6827001f18p-21, -- 0x1.05c803e4831c1p-21, -- 0x1.ed22548cffd35p-22, -- 0x1.d06ad6ecdf971p-22, -- 0x1.b551c847fbc96p-22, -- 0x1.9bc09f112b494p-22, -- 0x1.83a1ff0aa239dp-22, -- 0x1.6ce1aa3fd7bddp-22, -- 0x1.576c72b514859p-22, -- 0x1.43302cc4a0da8p-22, -- 0x1.301ba221dc9bbp-22, -- 0x1.1e1e857adc568p-22, -- 0x1.0d2966b1746f7p-22, -- 0x1.fa5b4f49cc6b2p-23, -- 0x1.dc3ae30b55c16p-23, -- 0x1.bfd7555a3bd68p-23, -- 0x1.a517d9e61628ap-23, -- 0x1.8be4f8f6c951fp-23, -- 0x1.74287ded49339p-23, -- 0x1.5dcd669f2cd34p-23, -- 0x1.48bfd38302870p-23, -- 0x1.34ecf8a3c124ap-23, -- 0x1.22430f521cbcfp-23, -- 0x1.10b1488aeb235p-23, -- 0x1.0027c00a263a6p-23, -- 0x1.e12ee004efc37p-24, -- 0x1.c3e44ae32b16bp-24, -- 0x1.a854ea14102a8p-24, -- 0x1.8e6761569f45dp-24, -- 0x1.7603bac345f65p-24, -- 0x1.5f1353cdad001p-24, -- 0x1.4980cb3c80949p-24, -- 0x1.3537f00b6ad4dp-24, -- 0x1.2225b12bffc68p-24, -- 0x1.10380e1adb7e9p-24, -- 0x1.febc107d5efaap-25, -- 0x1.df0f2a0ee6946p-25, -- 0x1.c14b2188bcee4p-25, -- 0x1.a553644f7f07dp-25, -- 0x1.8b0cfce0579dfp-25, -- 0x1.725e7c5dd20f7p-25, -- 0x1.5b2fe547a1340p-25, -- 0x1.456a974e92e93p-25, -- 0x1.30f93c3699078p-25, -- 0x1.1dc7b5b978cf8p-25, -- 0x1.0bc30c5d52f15p-25, -- 0x1.f5b2be65a0c7fp-26, -- 0x1.d5f3a8dea7357p-26, -- 0x1.b82915b03515bp-26, -- 0x1.9c3517e789488p-26, -- 0x1.81fb7df06136ep-26, -- 0x1.6961b8d641d06p-26, -- 0x1.524ec4d916caep-26, -- 0x1.3cab1343d18d1p-26, -- 0x1.2860757487a01p-26, -- 0x1.155a09065d4f7p-26, -- 0x1.0384250e4c9fcp-26, -- 0x1.e59890b926c78p-27, -- 0x1.c642116a8a9e3p-27, -- 0x1.a8e405e651ab6p-27, -- 0x1.8d5f98114f872p-27, -- 0x1.7397c5a66e307p-27, -- 0x1.5b71456c5a4c4p-27, -- 0x1.44d26de513197p-27, -- 0x1.2fa31d6371537p-27, -- 0x1.1bcca373b7b43p-27, -- 0x1.0939ab853339fp-27, -- 0x1.efac5187b2863p-28, -- 0x1.cf1e86235d0e6p-28, -- 0x1.b0a68a2128babp-28, -- 0x1.9423165bc4444p-28, -- 0x1.7974e743dea3cp-28, -- 0x1.607e9eacd1050p-28, -- 0x1.4924a74dec728p-28, -- 0x1.334d19e0c2160p-28, -- 0x1.1edfa3c5f5ccap-28, -- 0x1.0bc56f1b54701p-28, -- 0x1.f3d2185e047d9p-29, -- 0x1.d26cb87945e87p-29, -- 0x1.b334fac4b9f99p-29, -- 0x1.96076f7918d1cp-29, -- 0x1.7ac2d72fc2c63p-29, -- 0x1.614801550319ep-29, -- 0x1.4979ac8b28926p-29, -- 0x1.333c68e2d0548p-29, -- 0x1.1e767bce37dd7p-29, -- 0x1.0b0fc5b6d05a0p-29, -- 0x1.f1e3523b41d7dp-30, -- 0x1.d00de6608effep-30, -- 0x1.b0778b7b3301ap-30, -- 0x1.92fb04ec0f6cfp-30, -- 0x1.77756ec9f78fap-30, -- 0x1.5dc61922d5a06p-30, -- 0x1.45ce65699ff6dp-30, -- 0x1.2f71a5f159970p-30, -- 0x1.1a94ff571654fp-30, -- 0x1.071f4bbea09ecp-30, -- 0x1.e9f1ff8ddd774p-31, -- 0x1.c818223a202c7p-31, -- 0x1.a887bd2b4404dp-31, -- 0x1.8b1a336c5eb6bp-31, -- 0x1.6fab63324088ap-31, -- 0x1.56197e30205bap-31, -- 0x1.3e44e45301b92p-31, -- 0x1.281000bfe4c3fp-31, -- 0x1.135f28f2d50b4p-31, -- 0x1.00187dded5975p-31, -- 0x1.dc479de0ef001p-32, -- 0x1.bad4fdad3caa1p-32, -- 0x1.9baed3ed27ab8p-32, -- 0x1.7ead9ce4285bbp-32, -- 0x1.63ac6b4edc88ep-32, -- 0x1.4a88be2a6390cp-32, -- 0x1.332259185f1a0p-32, -- 0x1.1d5b1f3793044p-32, -- 0x1.0916f04b6e18bp-32, -- 0x1.ec77101de6926p-33, -- 0x1.c960bf23153e0p-33, -- 0x1.a8bd20fc65ef7p-33, -- 0x1.8a61745ec7d1dp-33, -- 0x1.6e25d0e756261p-33, -- 0x1.53e4f7d1666cbp-33, -- 0x1.3b7c27a7ddb0ep-33, -- 0x1.24caf2c32af14p-33, -- 0x1.0fb3186804d0fp-33, -- 0x1.f830c0bb41fd7p-34, -- 0x1.d3c0f1a91c846p-34, -- 0x1.b1e5acf351d87p-34, -- 0x1.92712d259ce66p-34, -- 0x1.7538c60a04476p-34, -- 0x1.5a14b04b47879p-34, -- 0x1.40dfd87456f4cp-34, -- 0x1.2977b1172b9d5p-34, -- 0x1.13bc07e891491p-34, -- 0x1.ff1dbb4300811p-35, -- 0x1.d9a880f306bd8p-35, -- 0x1.b6e45220b55e0p-35, -- 0x1.96a0b33f2c4dap-35, -- 0x1.78b07e9e924acp-35, -- 0x1.5ce9ab1670dd2p-35, -- 0x1.4325167006bb0p-35, -- 0x1.2b3e53538ff3fp-35, -- 0x1.15137a7f44864p-35, -- 0x1.0084ff125639dp-35, -- 0x1.daeb0b7311ec7p-36, -- 0x1.b7937d1c40c52p-36, -- 0x1.96d082f59ab06p-36, -- 0x1.7872d9fa10aadp-36, -- 0x1.5c4e8e37bc7d0p-36, -- 0x1.423ac0df49a40p-36, -- 0x1.2a117230ad284p-36, -- 0x1.13af4f04f9998p-36, -- 0x1.fde703724e560p-37, -- 0x1.d77f0c82e7641p-37, -- 0x1.b3ee02611d7ddp-37, -- 0x1.92ff33023d5bdp-37, -- 0x1.7481a9e69f53fp-37, -- 0x1.5847eda620959p-37, -- 0x1.3e27c1fcc74bdp-37, -- 0x1.25f9ee0b923dcp-37, -- 0x1.0f9a0686531ffp-37, -- 0x1.f5cc7718082afp-38, -- 0x1.cf7e53d6a2ca5p-38, -- 0x1.ac0f5f3229372p-38, -- 0x1.8b498644847eap-38, -- 0x1.6cfa9bcca59dcp-38, -- 0x1.50f411d4fd2cdp-38, -- 0x1.370ab8327af5ep-38, -- 0x1.1f167f88c6b6ep-38, -- 0x1.08f24085d4597p-38, -- 0x1.e8f70e181d619p-39, -- 0x1.c324c20e337dcp-39, -- 0x1.a03261574b54ep-39, -- 0x1.7fe903cdf5855p-39, -- 0x1.6215c58da3450p-39, -- 0x1.46897d4b69fc6p-39, -- 0x1.2d1877d731b7bp-39, -- 0x1.159a386b11517p-39, -- 0x1.ffd27ae9393cep-40, -- 0x1.d7c593130dd0bp-40, -- 0x1.b2cd607c79bcfp-40, -- 0x1.90ae4d3405651p-40, -- 0x1.71312dd1759e2p-40, -- 0x1.5422ef5d8949dp-40, -- 0x1.39544b0ecc957p-40, -- 0x1.20997f73e73ddp-40, -- 0x1.09ca0eaacd277p-40, -- 0x1.e9810295890ecp-41, -- 0x1.c2b45b5aa4a1dp-41, -- 0x1.9eee068fa7596p-41, -- 0x1.7df2b399c10a8p-41, -- 0x1.5f8b87a31bd85p-41, -- 0x1.4385c96e9a2d9p-41, -- 0x1.29b2933ef4cbcp-41, -- 0x1.11e68a6378f8ap-41, -- 0x1.f7f338086a86bp-42, -- 0x1.cf8d7d9ce040ap-42, -- 0x1.aa577251ae484p-42, -- 0x1.8811d739efb5ep-42, -- 0x1.68823e52970bep-42, -- 0x1.4b72ae68e8b4cp-42, -- 0x1.30b14dbe876bcp-42, -- 0x1.181012ef86610p-42, -- 0x1.01647ba798744p-42, -- 0x1.d90e917701675p-43, -- 0x1.b2a87e86d0c8ap-43, -- 0x1.8f53dcb377293p-43, -- 0x1.6ed2f2515e933p-43, -- 0x1.50ecc9ed47f19p-43, -- 0x1.356cd5ce7799ep-43, -- 0x1.1c229a587ab78p-43, -- 0x1.04e15ecc7f3f6p-43, -- 0x1.deffc7e6a6017p-44, -- 0x1.b7b040832f310p-44, -- 0x1.938e021f36d76p-44, -- 0x1.7258610b3b233p-44, -- 0x1.53d3bfc82a909p-44, -- 0x1.37c92babdc2fdp-44, -- 0x1.1e06010120f6ap-44, -- 0x1.065b9616170d4p-44, -- 0x1.e13dd96b3753ap-45, -- 0x1.b950d32467392p-45, -- 0x1.94a72263259a5p-45, -- 0x1.72fd93e036cdcp-45, -- 0x1.54164576929abp-45, -- 0x1.37b83c521fe96p-45, -- 0x1.1daf033182e96p-45, -- 0x1.05ca50205d26ap-45, -- 0x1.dfbb6235639fap-46, -- 0x1.b7807e294781fp-46, -- 0x1.9298add70a734p-46, -- 0x1.70beaf9c7ffb6p-46, -- 0x1.51b2cd6709222p-46, -- 0x1.353a6cf7f7fffp-46, -- 0x1.1b1fa8cbe84a7p-46, -- 0x1.0330f0fd69921p-46, -- 0x1.da81670f96f9bp-47, -- 0x1.b24a16b4d09aap-47, -- 0x1.8d6eeb6efdbd6p-47, -- 0x1.6ba91ac734785p-47, -- 0x1.4cb7966770ab5p-47, -- 0x1.305e9721d0981p-47, -- 0x1.1667311fff70ap-47, -- 0x1.fd3de10d62855p-48, -- 0x1.d1aefbcd48d0cp-48, -- 0x1.a9cc93c25aca9p-48, -- 0x1.85487ee3ea735p-48, -- 0x1.63daf8b4b1e0cp-48, -- 0x1.45421e69a6ca1p-48, -- 0x1.294175802d99ap-48, -- 0x1.0fa17bf41068fp-48, -- 0x1.f05e82aae2bb9p-49, -- 0x1.c578101b29058p-49, -- 0x1.9e39dc5dd2f7cp-49, -- 0x1.7a553a728bbf2p-49, -- 0x1.5982008db1304p-49, -- 0x1.3b7e00422e51bp-49, -- 0x1.200c898d9ee3ep-49, -- 0x1.06f5f7eb65a56p-49, -- 0x1.e00e9148a1d25p-50, -- 0x1.b623734024e92p-50, -- 0x1.8fd4e01891bf8p-50, -- 0x1.6cd44c7470d89p-50, -- 0x1.4cd9c04158cd7p-50, -- 0x1.2fa34bf5c8344p-50, -- 0x1.14f4890ff2461p-50, -- 0x1.f92c49dfa4df5p-51, -- 0x1.ccaaea71ab0dfp-51, -- 0x1.a40829f001197p-51, -- 0x1.7eef13b59e96cp-51, -- 0x1.5d11e1a252bf5p-51, -- 0x1.3e296303b2297p-51, -- 0x1.21f47009f43cep-51, -- 0x1.083768c5e4541p-51, -- 0x1.e1777d831265ep-52, -- 0x1.b69f10b0191b5p-52, -- 0x1.8f8a3a05b5b52p-52, -- 0x1.6be573c40c8e7p-52, -- 0x1.4b645ba991fdbp-52, -- 0x1.2dc119095729fp-52, -- }, --}; -diff --git a/sysdeps/aarch64/fpu/sv_erff_data.c b/sysdeps/aarch64/fpu/sv_erff_data.c -deleted file mode 100644 -index 6dcd72af69..0000000000 ---- a/sysdeps/aarch64/fpu/sv_erff_data.c -+++ /dev/null -@@ -1,1058 +0,0 @@ --/* Table for SVE erff approximation -- -- Copyright (C) 2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include "vecmath_config.h" -- --/* Lookup table used in SVE erff. -- For each possible rounded input r (multiples of 1/128), between -- r = 0.0 and r = 4.0 (513 values): -- - __erff_data.erf contains the values of erf(r), -- - __erff_data.scale contains the values of 2/sqrt(pi)*exp(-r^2). -- Note that indices 0 and 1 are never hit by the algorithm, since lookup is -- performed only for x >= 1/64-1/512. */ --const struct sv_erff_data __sv_erff_data = { -- .erf = { 0x0.000000p+0, -- 0x1.20dbf4p-7, -- 0x1.20d770p-6, -- 0x1.b137e0p-6, -- 0x1.20c564p-5, -- 0x1.68e5d4p-5, -- 0x1.b0fafep-5, -- 0x1.f902a8p-5, -- 0x1.207d48p-4, -- 0x1.44703ep-4, -- 0x1.68591ap-4, -- 0x1.8c36bep-4, -- 0x1.b00812p-4, -- 0x1.d3cbf8p-4, -- 0x1.f7815ap-4, -- 0x1.0d9390p-3, -- 0x1.1f5e1ap-3, -- 0x1.311fc2p-3, -- 0x1.42d7fcp-3, -- 0x1.548642p-3, -- 0x1.662a0cp-3, -- 0x1.77c2d2p-3, -- 0x1.895010p-3, -- 0x1.9ad142p-3, -- 0x1.ac45e4p-3, -- 0x1.bdad72p-3, -- 0x1.cf076ep-3, -- 0x1.e05354p-3, -- 0x1.f190aap-3, -- 0x1.015f78p-2, -- 0x1.09eed6p-2, -- 0x1.127632p-2, -- 0x1.1af54ep-2, -- 0x1.236bf0p-2, -- 0x1.2bd9dcp-2, -- 0x1.343ed6p-2, -- 0x1.3c9aa8p-2, -- 0x1.44ed18p-2, -- 0x1.4d35f0p-2, -- 0x1.5574f4p-2, -- 0x1.5da9f4p-2, -- 0x1.65d4b8p-2, -- 0x1.6df50ap-2, -- 0x1.760abap-2, -- 0x1.7e1594p-2, -- 0x1.861566p-2, -- 0x1.8e0a02p-2, -- 0x1.95f336p-2, -- 0x1.9dd0d2p-2, -- 0x1.a5a2acp-2, -- 0x1.ad6896p-2, -- 0x1.b52264p-2, -- 0x1.bccfecp-2, -- 0x1.c47104p-2, -- 0x1.cc0584p-2, -- 0x1.d38d44p-2, -- 0x1.db081cp-2, -- 0x1.e275eap-2, -- 0x1.e9d68ap-2, -- 0x1.f129d4p-2, -- 0x1.f86faap-2, -- 0x1.ffa7eap-2, -- 0x1.03693ap-1, -- 0x1.06f794p-1, -- 0x1.0a7ef6p-1, -- 0x1.0dff50p-1, -- 0x1.117894p-1, -- 0x1.14eab4p-1, -- 0x1.1855a6p-1, -- 0x1.1bb95cp-1, -- 0x1.1f15ccp-1, -- 0x1.226ae8p-1, -- 0x1.25b8a8p-1, -- 0x1.28ff02p-1, -- 0x1.2c3decp-1, -- 0x1.2f755cp-1, -- 0x1.32a54cp-1, -- 0x1.35cdb4p-1, -- 0x1.38ee8ap-1, -- 0x1.3c07cap-1, -- 0x1.3f196ep-1, -- 0x1.42236ep-1, -- 0x1.4525c8p-1, -- 0x1.482074p-1, -- 0x1.4b1372p-1, -- 0x1.4dfebap-1, -- 0x1.50e24cp-1, -- 0x1.53be26p-1, -- 0x1.569244p-1, -- 0x1.595ea6p-1, -- 0x1.5c2348p-1, -- 0x1.5ee02ep-1, -- 0x1.619556p-1, -- 0x1.6442c0p-1, -- 0x1.66e86ep-1, -- 0x1.69865ep-1, -- 0x1.6c1c98p-1, -- 0x1.6eab18p-1, -- 0x1.7131e6p-1, -- 0x1.73b102p-1, -- 0x1.762870p-1, -- 0x1.789836p-1, -- 0x1.7b0058p-1, -- 0x1.7d60d8p-1, -- 0x1.7fb9c0p-1, -- 0x1.820b12p-1, -- 0x1.8454d6p-1, -- 0x1.869712p-1, -- 0x1.88d1cep-1, -- 0x1.8b050ep-1, -- 0x1.8d30dep-1, -- 0x1.8f5544p-1, -- 0x1.91724ap-1, -- 0x1.9387f6p-1, -- 0x1.959652p-1, -- 0x1.979d68p-1, -- 0x1.999d42p-1, -- 0x1.9b95e8p-1, -- 0x1.9d8768p-1, -- 0x1.9f71cap-1, -- 0x1.a1551ap-1, -- 0x1.a33162p-1, -- 0x1.a506b0p-1, -- 0x1.a6d50cp-1, -- 0x1.a89c86p-1, -- 0x1.aa5d26p-1, -- 0x1.ac16fcp-1, -- 0x1.adca14p-1, -- 0x1.af767ap-1, -- 0x1.b11c3cp-1, -- 0x1.b2bb68p-1, -- 0x1.b4540ap-1, -- 0x1.b5e630p-1, -- 0x1.b771e8p-1, -- 0x1.b8f742p-1, -- 0x1.ba764ap-1, -- 0x1.bbef10p-1, -- 0x1.bd61a2p-1, -- 0x1.bece0ep-1, -- 0x1.c03464p-1, -- 0x1.c194b2p-1, -- 0x1.c2ef08p-1, -- 0x1.c44376p-1, -- 0x1.c5920ap-1, -- 0x1.c6dad2p-1, -- 0x1.c81de2p-1, -- 0x1.c95b46p-1, -- 0x1.ca930ep-1, -- 0x1.cbc54cp-1, -- 0x1.ccf20cp-1, -- 0x1.ce1962p-1, -- 0x1.cf3b5cp-1, -- 0x1.d0580cp-1, -- 0x1.d16f7ep-1, -- 0x1.d281c4p-1, -- 0x1.d38ef0p-1, -- 0x1.d49710p-1, -- 0x1.d59a34p-1, -- 0x1.d6986cp-1, -- 0x1.d791cap-1, -- 0x1.d8865ep-1, -- 0x1.d97636p-1, -- 0x1.da6162p-1, -- 0x1.db47f4p-1, -- 0x1.dc29fcp-1, -- 0x1.dd0788p-1, -- 0x1.dde0aap-1, -- 0x1.deb570p-1, -- 0x1.df85eap-1, -- 0x1.e0522ap-1, -- 0x1.e11a3ep-1, -- 0x1.e1de36p-1, -- 0x1.e29e22p-1, -- 0x1.e35a12p-1, -- 0x1.e41214p-1, -- 0x1.e4c638p-1, -- 0x1.e5768cp-1, -- 0x1.e62322p-1, -- 0x1.e6cc08p-1, -- 0x1.e7714ap-1, -- 0x1.e812fcp-1, -- 0x1.e8b12ap-1, -- 0x1.e94be4p-1, -- 0x1.e9e336p-1, -- 0x1.ea7730p-1, -- 0x1.eb07e2p-1, -- 0x1.eb9558p-1, -- 0x1.ec1fa2p-1, -- 0x1.eca6ccp-1, -- 0x1.ed2ae6p-1, -- 0x1.edabfcp-1, -- 0x1.ee2a1ep-1, -- 0x1.eea556p-1, -- 0x1.ef1db4p-1, -- 0x1.ef9344p-1, -- 0x1.f00614p-1, -- 0x1.f07630p-1, -- 0x1.f0e3a6p-1, -- 0x1.f14e82p-1, -- 0x1.f1b6d0p-1, -- 0x1.f21ca0p-1, -- 0x1.f27ff8p-1, -- 0x1.f2e0eap-1, -- 0x1.f33f7ep-1, -- 0x1.f39bc2p-1, -- 0x1.f3f5c2p-1, -- 0x1.f44d88p-1, -- 0x1.f4a31ep-1, -- 0x1.f4f694p-1, -- 0x1.f547f2p-1, -- 0x1.f59742p-1, -- 0x1.f5e490p-1, -- 0x1.f62fe8p-1, -- 0x1.f67952p-1, -- 0x1.f6c0dcp-1, -- 0x1.f7068cp-1, -- 0x1.f74a6ep-1, -- 0x1.f78c8cp-1, -- 0x1.f7cceep-1, -- 0x1.f80ba2p-1, -- 0x1.f848acp-1, -- 0x1.f8841ap-1, -- 0x1.f8bdf2p-1, -- 0x1.f8f63ep-1, -- 0x1.f92d08p-1, -- 0x1.f96256p-1, -- 0x1.f99634p-1, -- 0x1.f9c8a8p-1, -- 0x1.f9f9bap-1, -- 0x1.fa2974p-1, -- 0x1.fa57dep-1, -- 0x1.fa84fep-1, -- 0x1.fab0dep-1, -- 0x1.fadb84p-1, -- 0x1.fb04f6p-1, -- 0x1.fb2d40p-1, -- 0x1.fb5464p-1, -- 0x1.fb7a6cp-1, -- 0x1.fb9f60p-1, -- 0x1.fbc344p-1, -- 0x1.fbe61ep-1, -- 0x1.fc07fap-1, -- 0x1.fc28d8p-1, -- 0x1.fc48c2p-1, -- 0x1.fc67bcp-1, -- 0x1.fc85d0p-1, -- 0x1.fca2fep-1, -- 0x1.fcbf52p-1, -- 0x1.fcdaccp-1, -- 0x1.fcf576p-1, -- 0x1.fd0f54p-1, -- 0x1.fd286ap-1, -- 0x1.fd40bep-1, -- 0x1.fd5856p-1, -- 0x1.fd6f34p-1, -- 0x1.fd8562p-1, -- 0x1.fd9ae2p-1, -- 0x1.fdafb8p-1, -- 0x1.fdc3e8p-1, -- 0x1.fdd77ap-1, -- 0x1.fdea6ep-1, -- 0x1.fdfcccp-1, -- 0x1.fe0e96p-1, -- 0x1.fe1fd0p-1, -- 0x1.fe3080p-1, -- 0x1.fe40a6p-1, -- 0x1.fe504cp-1, -- 0x1.fe5f70p-1, -- 0x1.fe6e18p-1, -- 0x1.fe7c46p-1, -- 0x1.fe8a00p-1, -- 0x1.fe9748p-1, -- 0x1.fea422p-1, -- 0x1.feb090p-1, -- 0x1.febc96p-1, -- 0x1.fec836p-1, -- 0x1.fed374p-1, -- 0x1.fede52p-1, -- 0x1.fee8d4p-1, -- 0x1.fef2fep-1, -- 0x1.fefccep-1, -- 0x1.ff064cp-1, -- 0x1.ff0f76p-1, -- 0x1.ff1852p-1, -- 0x1.ff20e0p-1, -- 0x1.ff2924p-1, -- 0x1.ff3120p-1, -- 0x1.ff38d6p-1, -- 0x1.ff4048p-1, -- 0x1.ff4778p-1, -- 0x1.ff4e68p-1, -- 0x1.ff551ap-1, -- 0x1.ff5b90p-1, -- 0x1.ff61ccp-1, -- 0x1.ff67d0p-1, -- 0x1.ff6d9ep-1, -- 0x1.ff7338p-1, -- 0x1.ff789ep-1, -- 0x1.ff7dd4p-1, -- 0x1.ff82dap-1, -- 0x1.ff87b2p-1, -- 0x1.ff8c5cp-1, -- 0x1.ff90dcp-1, -- 0x1.ff9532p-1, -- 0x1.ff9960p-1, -- 0x1.ff9d68p-1, -- 0x1.ffa14ap-1, -- 0x1.ffa506p-1, -- 0x1.ffa8a0p-1, -- 0x1.ffac18p-1, -- 0x1.ffaf6ep-1, -- 0x1.ffb2a6p-1, -- 0x1.ffb5bep-1, -- 0x1.ffb8b8p-1, -- 0x1.ffbb98p-1, -- 0x1.ffbe5ap-1, -- 0x1.ffc102p-1, -- 0x1.ffc390p-1, -- 0x1.ffc606p-1, -- 0x1.ffc862p-1, -- 0x1.ffcaa8p-1, -- 0x1.ffccd8p-1, -- 0x1.ffcef4p-1, -- 0x1.ffd0fap-1, -- 0x1.ffd2eap-1, -- 0x1.ffd4cap-1, -- 0x1.ffd696p-1, -- 0x1.ffd84ep-1, -- 0x1.ffd9f8p-1, -- 0x1.ffdb90p-1, -- 0x1.ffdd18p-1, -- 0x1.ffde90p-1, -- 0x1.ffdffap-1, -- 0x1.ffe154p-1, -- 0x1.ffe2a2p-1, -- 0x1.ffe3e2p-1, -- 0x1.ffe514p-1, -- 0x1.ffe63cp-1, -- 0x1.ffe756p-1, -- 0x1.ffe866p-1, -- 0x1.ffe96ap-1, -- 0x1.ffea64p-1, -- 0x1.ffeb54p-1, -- 0x1.ffec3ap-1, -- 0x1.ffed16p-1, -- 0x1.ffedeap-1, -- 0x1.ffeeb4p-1, -- 0x1.ffef76p-1, -- 0x1.fff032p-1, -- 0x1.fff0e4p-1, -- 0x1.fff18ep-1, -- 0x1.fff232p-1, -- 0x1.fff2d0p-1, -- 0x1.fff366p-1, -- 0x1.fff3f6p-1, -- 0x1.fff480p-1, -- 0x1.fff504p-1, -- 0x1.fff582p-1, -- 0x1.fff5fcp-1, -- 0x1.fff670p-1, -- 0x1.fff6dep-1, -- 0x1.fff74ap-1, -- 0x1.fff7aep-1, -- 0x1.fff810p-1, -- 0x1.fff86cp-1, -- 0x1.fff8c6p-1, -- 0x1.fff91cp-1, -- 0x1.fff96cp-1, -- 0x1.fff9bap-1, -- 0x1.fffa04p-1, -- 0x1.fffa4cp-1, -- 0x1.fffa90p-1, -- 0x1.fffad0p-1, -- 0x1.fffb0ep-1, -- 0x1.fffb4ap-1, -- 0x1.fffb82p-1, -- 0x1.fffbb8p-1, -- 0x1.fffbecp-1, -- 0x1.fffc1ep-1, -- 0x1.fffc4ep-1, -- 0x1.fffc7ap-1, -- 0x1.fffca6p-1, -- 0x1.fffccep-1, -- 0x1.fffcf6p-1, -- 0x1.fffd1ap-1, -- 0x1.fffd3ep-1, -- 0x1.fffd60p-1, -- 0x1.fffd80p-1, -- 0x1.fffda0p-1, -- 0x1.fffdbep-1, -- 0x1.fffddap-1, -- 0x1.fffdf4p-1, -- 0x1.fffe0ep-1, -- 0x1.fffe26p-1, -- 0x1.fffe3ep-1, -- 0x1.fffe54p-1, -- 0x1.fffe68p-1, -- 0x1.fffe7ep-1, -- 0x1.fffe90p-1, -- 0x1.fffea2p-1, -- 0x1.fffeb4p-1, -- 0x1.fffec4p-1, -- 0x1.fffed4p-1, -- 0x1.fffee4p-1, -- 0x1.fffef2p-1, -- 0x1.ffff00p-1, -- 0x1.ffff0cp-1, -- 0x1.ffff18p-1, -- 0x1.ffff24p-1, -- 0x1.ffff30p-1, -- 0x1.ffff3ap-1, -- 0x1.ffff44p-1, -- 0x1.ffff4ep-1, -- 0x1.ffff56p-1, -- 0x1.ffff60p-1, -- 0x1.ffff68p-1, -- 0x1.ffff70p-1, -- 0x1.ffff78p-1, -- 0x1.ffff7ep-1, -- 0x1.ffff84p-1, -- 0x1.ffff8cp-1, -- 0x1.ffff92p-1, -- 0x1.ffff98p-1, -- 0x1.ffff9cp-1, -- 0x1.ffffa2p-1, -- 0x1.ffffa6p-1, -- 0x1.ffffacp-1, -- 0x1.ffffb0p-1, -- 0x1.ffffb4p-1, -- 0x1.ffffb8p-1, -- 0x1.ffffbcp-1, -- 0x1.ffffc0p-1, -- 0x1.ffffc4p-1, -- 0x1.ffffc6p-1, -- 0x1.ffffcap-1, -- 0x1.ffffccp-1, -- 0x1.ffffd0p-1, -- 0x1.ffffd2p-1, -- 0x1.ffffd4p-1, -- 0x1.ffffd6p-1, -- 0x1.ffffd8p-1, -- 0x1.ffffdcp-1, -- 0x1.ffffdep-1, -- 0x1.ffffdep-1, -- 0x1.ffffe0p-1, -- 0x1.ffffe2p-1, -- 0x1.ffffe4p-1, -- 0x1.ffffe6p-1, -- 0x1.ffffe8p-1, -- 0x1.ffffe8p-1, -- 0x1.ffffeap-1, -- 0x1.ffffeap-1, -- 0x1.ffffecp-1, -- 0x1.ffffeep-1, -- 0x1.ffffeep-1, -- 0x1.fffff0p-1, -- 0x1.fffff0p-1, -- 0x1.fffff2p-1, -- 0x1.fffff2p-1, -- 0x1.fffff2p-1, -- 0x1.fffff4p-1, -- 0x1.fffff4p-1, -- 0x1.fffff4p-1, -- 0x1.fffff6p-1, -- 0x1.fffff6p-1, -- 0x1.fffff6p-1, -- 0x1.fffff8p-1, -- 0x1.fffff8p-1, -- 0x1.fffff8p-1, -- 0x1.fffff8p-1, -- 0x1.fffffap-1, -- 0x1.fffffap-1, -- 0x1.fffffap-1, -- 0x1.fffffap-1, -- 0x1.fffffap-1, -- 0x1.fffffap-1, -- 0x1.fffffcp-1, -- 0x1.fffffcp-1, -- 0x1.fffffcp-1, -- 0x1.fffffcp-1, -- 0x1.fffffcp-1, -- 0x1.fffffcp-1, -- 0x1.fffffcp-1, -- 0x1.fffffcp-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.fffffep-1, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- 0x1.000000p+0, -- }, -- .scale = { 0x1.20dd76p+0, -- 0x1.20d8f2p+0, -- 0x1.20cb68p+0, -- 0x1.20b4d8p+0, -- 0x1.209546p+0, -- 0x1.206cb4p+0, -- 0x1.203b26p+0, -- 0x1.2000a0p+0, -- 0x1.1fbd28p+0, -- 0x1.1f70c4p+0, -- 0x1.1f1b7ap+0, -- 0x1.1ebd56p+0, -- 0x1.1e565cp+0, -- 0x1.1de698p+0, -- 0x1.1d6e14p+0, -- 0x1.1cecdcp+0, -- 0x1.1c62fap+0, -- 0x1.1bd07cp+0, -- 0x1.1b3572p+0, -- 0x1.1a91e6p+0, -- 0x1.19e5eap+0, -- 0x1.19318cp+0, -- 0x1.1874dep+0, -- 0x1.17aff0p+0, -- 0x1.16e2d8p+0, -- 0x1.160da4p+0, -- 0x1.153068p+0, -- 0x1.144b3cp+0, -- 0x1.135e30p+0, -- 0x1.12695ep+0, -- 0x1.116cd8p+0, -- 0x1.1068bap+0, -- 0x1.0f5d16p+0, -- 0x1.0e4a08p+0, -- 0x1.0d2fa6p+0, -- 0x1.0c0e0ap+0, -- 0x1.0ae550p+0, -- 0x1.09b590p+0, -- 0x1.087ee4p+0, -- 0x1.07416cp+0, -- 0x1.05fd3ep+0, -- 0x1.04b27cp+0, -- 0x1.036140p+0, -- 0x1.0209a6p+0, -- 0x1.00abd0p+0, -- 0x1.fe8fb0p-1, -- 0x1.fbbbbep-1, -- 0x1.f8dc0ap-1, -- 0x1.f5f0cep-1, -- 0x1.f2fa4cp-1, -- 0x1.eff8c4p-1, -- 0x1.ecec78p-1, -- 0x1.e9d5a8p-1, -- 0x1.e6b498p-1, -- 0x1.e38988p-1, -- 0x1.e054bep-1, -- 0x1.dd167cp-1, -- 0x1.d9cf06p-1, -- 0x1.d67ea2p-1, -- 0x1.d32592p-1, -- 0x1.cfc41ep-1, -- 0x1.cc5a8ap-1, -- 0x1.c8e91cp-1, -- 0x1.c5701ap-1, -- 0x1.c1efcap-1, -- 0x1.be6872p-1, -- 0x1.bada5ap-1, -- 0x1.b745c6p-1, -- 0x1.b3aafcp-1, -- 0x1.b00a46p-1, -- 0x1.ac63e8p-1, -- 0x1.a8b828p-1, -- 0x1.a5074ep-1, -- 0x1.a1519ep-1, -- 0x1.9d9762p-1, -- 0x1.99d8dap-1, -- 0x1.961650p-1, -- 0x1.925008p-1, -- 0x1.8e8646p-1, -- 0x1.8ab950p-1, -- 0x1.86e96ap-1, -- 0x1.8316d6p-1, -- 0x1.7f41dcp-1, -- 0x1.7b6abcp-1, -- 0x1.7791b8p-1, -- 0x1.73b714p-1, -- 0x1.6fdb12p-1, -- 0x1.6bfdf0p-1, -- 0x1.681ff2p-1, -- 0x1.644156p-1, -- 0x1.60625cp-1, -- 0x1.5c8342p-1, -- 0x1.58a446p-1, -- 0x1.54c5a6p-1, -- 0x1.50e79ep-1, -- 0x1.4d0a68p-1, -- 0x1.492e42p-1, -- 0x1.455366p-1, -- 0x1.417a0cp-1, -- 0x1.3da26ep-1, -- 0x1.39ccc2p-1, -- 0x1.35f940p-1, -- 0x1.32281ep-1, -- 0x1.2e5992p-1, -- 0x1.2a8dcep-1, -- 0x1.26c508p-1, -- 0x1.22ff72p-1, -- 0x1.1f3d3cp-1, -- 0x1.1b7e98p-1, -- 0x1.17c3b6p-1, -- 0x1.140cc4p-1, -- 0x1.1059eep-1, -- 0x1.0cab62p-1, -- 0x1.09014cp-1, -- 0x1.055bd6p-1, -- 0x1.01bb2cp-1, -- 0x1.fc3ee6p-2, -- 0x1.f511aap-2, -- 0x1.edeeeep-2, -- 0x1.e6d700p-2, -- 0x1.dfca26p-2, -- 0x1.d8c8aap-2, -- 0x1.d1d2d0p-2, -- 0x1.cae8dap-2, -- 0x1.c40b08p-2, -- 0x1.bd3998p-2, -- 0x1.b674c8p-2, -- 0x1.afbcd4p-2, -- 0x1.a911f0p-2, -- 0x1.a27456p-2, -- 0x1.9be438p-2, -- 0x1.9561c8p-2, -- 0x1.8eed36p-2, -- 0x1.8886b2p-2, -- 0x1.822e66p-2, -- 0x1.7be47ap-2, -- 0x1.75a91ap-2, -- 0x1.6f7c6ap-2, -- 0x1.695e8cp-2, -- 0x1.634fa6p-2, -- 0x1.5d4fd4p-2, -- 0x1.575f34p-2, -- 0x1.517de6p-2, -- 0x1.4bac00p-2, -- 0x1.45e99cp-2, -- 0x1.4036d0p-2, -- 0x1.3a93b2p-2, -- 0x1.350052p-2, -- 0x1.2f7cc4p-2, -- 0x1.2a0916p-2, -- 0x1.24a554p-2, -- 0x1.1f518ap-2, -- 0x1.1a0dc6p-2, -- 0x1.14da0ap-2, -- 0x1.0fb662p-2, -- 0x1.0aa2d0p-2, -- 0x1.059f5ap-2, -- 0x1.00ac00p-2, -- 0x1.f79184p-3, -- 0x1.edeb40p-3, -- 0x1.e46530p-3, -- 0x1.daff4ap-3, -- 0x1.d1b982p-3, -- 0x1.c893cep-3, -- 0x1.bf8e1cp-3, -- 0x1.b6a856p-3, -- 0x1.ade26cp-3, -- 0x1.a53c42p-3, -- 0x1.9cb5bep-3, -- 0x1.944ec2p-3, -- 0x1.8c0732p-3, -- 0x1.83deeap-3, -- 0x1.7bd5c8p-3, -- 0x1.73eba4p-3, -- 0x1.6c2056p-3, -- 0x1.6473b6p-3, -- 0x1.5ce596p-3, -- 0x1.5575c8p-3, -- 0x1.4e241ep-3, -- 0x1.46f066p-3, -- 0x1.3fda6cp-3, -- 0x1.38e1fap-3, -- 0x1.3206dcp-3, -- 0x1.2b48dap-3, -- 0x1.24a7b8p-3, -- 0x1.1e233ep-3, -- 0x1.17bb2cp-3, -- 0x1.116f48p-3, -- 0x1.0b3f52p-3, -- 0x1.052b0cp-3, -- 0x1.fe6460p-4, -- 0x1.f2a902p-4, -- 0x1.e72372p-4, -- 0x1.dbd32ap-4, -- 0x1.d0b7a0p-4, -- 0x1.c5d04ap-4, -- 0x1.bb1c98p-4, -- 0x1.b09bfcp-4, -- 0x1.a64de6p-4, -- 0x1.9c31c6p-4, -- 0x1.92470ap-4, -- 0x1.888d1ep-4, -- 0x1.7f036cp-4, -- 0x1.75a960p-4, -- 0x1.6c7e64p-4, -- 0x1.6381e2p-4, -- 0x1.5ab342p-4, -- 0x1.5211ecp-4, -- 0x1.499d48p-4, -- 0x1.4154bcp-4, -- 0x1.3937b2p-4, -- 0x1.31458ep-4, -- 0x1.297dbap-4, -- 0x1.21df9ap-4, -- 0x1.1a6a96p-4, -- 0x1.131e14p-4, -- 0x1.0bf97ep-4, -- 0x1.04fc3ap-4, -- 0x1.fc4b5ep-5, -- 0x1.eeea8cp-5, -- 0x1.e1d4d0p-5, -- 0x1.d508fap-5, -- 0x1.c885e0p-5, -- 0x1.bc4a54p-5, -- 0x1.b05530p-5, -- 0x1.a4a54ap-5, -- 0x1.99397ap-5, -- 0x1.8e109cp-5, -- 0x1.83298ep-5, -- 0x1.78832cp-5, -- 0x1.6e1c58p-5, -- 0x1.63f3f6p-5, -- 0x1.5a08e8p-5, -- 0x1.505a18p-5, -- 0x1.46e66cp-5, -- 0x1.3dacd2p-5, -- 0x1.34ac36p-5, -- 0x1.2be38cp-5, -- 0x1.2351c2p-5, -- 0x1.1af5d2p-5, -- 0x1.12ceb4p-5, -- 0x1.0adb60p-5, -- 0x1.031ad6p-5, -- 0x1.f7182ap-6, -- 0x1.e85c44p-6, -- 0x1.da0006p-6, -- 0x1.cc0180p-6, -- 0x1.be5ecep-6, -- 0x1.b1160ap-6, -- 0x1.a4255ap-6, -- 0x1.978ae8p-6, -- 0x1.8b44e6p-6, -- 0x1.7f5188p-6, -- 0x1.73af0cp-6, -- 0x1.685bb6p-6, -- 0x1.5d55ccp-6, -- 0x1.529b9ep-6, -- 0x1.482b84p-6, -- 0x1.3e03d8p-6, -- 0x1.3422fep-6, -- 0x1.2a875cp-6, -- 0x1.212f62p-6, -- 0x1.181984p-6, -- 0x1.0f443ep-6, -- 0x1.06ae14p-6, -- 0x1.fcab14p-7, -- 0x1.ec7262p-7, -- 0x1.dcaf36p-7, -- 0x1.cd5ecap-7, -- 0x1.be7e5ap-7, -- 0x1.b00b38p-7, -- 0x1.a202bep-7, -- 0x1.94624ep-7, -- 0x1.87275ep-7, -- 0x1.7a4f6ap-7, -- 0x1.6dd7fep-7, -- 0x1.61beaep-7, -- 0x1.56011cp-7, -- 0x1.4a9cf6p-7, -- 0x1.3f8ff6p-7, -- 0x1.34d7dcp-7, -- 0x1.2a727ap-7, -- 0x1.205dacp-7, -- 0x1.169756p-7, -- 0x1.0d1d6ap-7, -- 0x1.03ede2p-7, -- 0x1.f60d8ap-8, -- 0x1.e4cc4ap-8, -- 0x1.d4143ap-8, -- 0x1.c3e1a6p-8, -- 0x1.b430ecp-8, -- 0x1.a4fe84p-8, -- 0x1.9646f4p-8, -- 0x1.8806d8p-8, -- 0x1.7a3adep-8, -- 0x1.6cdfccp-8, -- 0x1.5ff276p-8, -- 0x1.536fc2p-8, -- 0x1.4754acp-8, -- 0x1.3b9e40p-8, -- 0x1.30499cp-8, -- 0x1.2553eep-8, -- 0x1.1aba78p-8, -- 0x1.107a8cp-8, -- 0x1.06918cp-8, -- 0x1.f9f9d0p-9, -- 0x1.e77448p-9, -- 0x1.d58da6p-9, -- 0x1.c4412cp-9, -- 0x1.b38a3ap-9, -- 0x1.a36454p-9, -- 0x1.93cb12p-9, -- 0x1.84ba30p-9, -- 0x1.762d84p-9, -- 0x1.682100p-9, -- 0x1.5a90b0p-9, -- 0x1.4d78bcp-9, -- 0x1.40d564p-9, -- 0x1.34a306p-9, -- 0x1.28de12p-9, -- 0x1.1d8318p-9, -- 0x1.128ebap-9, -- 0x1.07fdb4p-9, -- 0x1.fb99b8p-10, -- 0x1.e7f232p-10, -- 0x1.d4fed8p-10, -- 0x1.c2b9d0p-10, -- 0x1.b11d70p-10, -- 0x1.a02436p-10, -- 0x1.8fc8c8p-10, -- 0x1.8005f0p-10, -- 0x1.70d6a4p-10, -- 0x1.6235fcp-10, -- 0x1.541f34p-10, -- 0x1.468daep-10, -- 0x1.397ceep-10, -- 0x1.2ce898p-10, -- 0x1.20cc76p-10, -- 0x1.15246ep-10, -- 0x1.09ec86p-10, -- 0x1.fe41cep-11, -- 0x1.e97ba4p-11, -- 0x1.d57f52p-11, -- 0x1.c245d4p-11, -- 0x1.afc85ep-11, -- 0x1.9e0058p-11, -- 0x1.8ce75ep-11, -- 0x1.7c7744p-11, -- 0x1.6caa0ep-11, -- 0x1.5d79ecp-11, -- 0x1.4ee142p-11, -- 0x1.40daa4p-11, -- 0x1.3360ccp-11, -- 0x1.266ea8p-11, -- 0x1.19ff46p-11, -- 0x1.0e0de8p-11, -- 0x1.0295f0p-11, -- 0x1.ef25d4p-12, -- 0x1.da0110p-12, -- 0x1.c5b542p-12, -- 0x1.b23a5ap-12, -- 0x1.9f8894p-12, -- 0x1.8d986ap-12, -- 0x1.7c629ap-12, -- 0x1.6be022p-12, -- 0x1.5c0a38p-12, -- 0x1.4cda54p-12, -- 0x1.3e4a24p-12, -- 0x1.305390p-12, -- 0x1.22f0b4p-12, -- 0x1.161be4p-12, -- 0x1.09cfa4p-12, -- 0x1.fc0d56p-13, -- 0x1.e577bcp-13, -- 0x1.cfd4a6p-13, -- 0x1.bb1a96p-13, -- 0x1.a74068p-13, -- 0x1.943d4ap-13, -- 0x1.8208bcp-13, -- 0x1.709a8ep-13, -- 0x1.5feadap-13, -- 0x1.4ff208p-13, -- 0x1.40a8c2p-13, -- 0x1.3207fcp-13, -- 0x1.2408eap-13, -- 0x1.16a502p-13, -- 0x1.09d5f8p-13, -- 0x1.fb2b7ap-14, -- 0x1.e3bcf4p-14, -- 0x1.cd5528p-14, -- 0x1.b7e946p-14, -- 0x1.a36eecp-14, -- 0x1.8fdc1cp-14, -- 0x1.7d2738p-14, -- 0x1.6b4702p-14, -- 0x1.5a329cp-14, -- 0x1.49e178p-14, -- 0x1.3a4b60p-14, -- 0x1.2b6876p-14, -- 0x1.1d3120p-14, -- 0x1.0f9e1cp-14, -- 0x1.02a868p-14, -- 0x1.ec929ap-15, -- 0x1.d4f4b4p-15, -- 0x1.be6abcp-15, -- 0x1.a8e8ccp-15, -- 0x1.94637ep-15, -- 0x1.80cfdcp-15, -- 0x1.6e2368p-15, -- 0x1.5c540cp-15, -- 0x1.4b581cp-15, -- 0x1.3b2652p-15, -- 0x1.2bb5ccp-15, -- 0x1.1cfe02p-15, -- 0x1.0ef6c4p-15, -- 0x1.019842p-15, -- 0x1.e9b5e8p-16, -- 0x1.d16f58p-16, -- 0x1.ba4f04p-16, -- 0x1.a447b8p-16, -- 0x1.8f4cccp-16, -- 0x1.7b5224p-16, -- 0x1.684c22p-16, -- 0x1.562facp-16, -- 0x1.44f21ep-16, -- 0x1.34894ap-16, -- 0x1.24eb72p-16, -- 0x1.160f44p-16, -- 0x1.07ebd2p-16, -- 0x1.f4f12ep-17, -- 0x1.db5ad0p-17, -- 0x1.c304f0p-17, -- 0x1.abe09ep-17, -- 0x1.95df98p-17, -- 0x1.80f43ap-17, -- 0x1.6d1178p-17, -- 0x1.5a2ae0p-17, -- 0x1.483488p-17, -- 0x1.372310p-17, -- 0x1.26eb9ep-17, -- 0x1.1783cep-17, -- 0x1.08e1bap-17, -- 0x1.f5f7d8p-18, -- 0x1.db92b6p-18, -- 0x1.c282cep-18, -- 0x1.aab7acp-18, -- 0x1.94219cp-18, -- 0x1.7eb1a2p-18, -- 0x1.6a5972p-18, -- 0x1.570b6ap-18, -- 0x1.44ba86p-18, -- 0x1.335a62p-18, -- 0x1.22df2ap-18, -- 0x1.133d96p-18, -- 0x1.046aeap-18, -- 0x1.ecb9d0p-19, -- 0x1.d21398p-19, -- 0x1.b8d094p-19, -- 0x1.a0df10p-19, -- 0x1.8a2e26p-19, -- 0x1.74adc8p-19, -- 0x1.604ea8p-19, -- 0x1.4d0232p-19, -- 0x1.3aba86p-19, -- 0x1.296a70p-19, -- 0x1.190562p-19, -- 0x1.097f62p-19, -- 0x1.f59a20p-20, -- 0x1.d9c736p-20, -- 0x1.bf716cp-20, -- 0x1.a6852cp-20, -- 0x1.8eefd8p-20, -- 0x1.789fb8p-20, -- 0x1.6383f8p-20, -- 0x1.4f8c96p-20, -- 0x1.3caa62p-20, -- 0x1.2acee2p-20, -- 0x1.19ec60p-20, -- 0x1.09f5d0p-20, -- 0x1.f5bd96p-21, -- 0x1.d9371ep-21, -- 0x1.be41dep-21, -- 0x1.a4c89ep-21, -- 0x1.8cb738p-21, -- 0x1.75fa8ep-21, -- 0x1.608078p-21, -- 0x1.4c37c0p-21, -- 0x1.39100ep-21, -- 0x1.26f9e0p-21, -- 0x1.15e682p-21, -- 0x1.05c804p-21, -- 0x1.ed2254p-22, -- 0x1.d06ad6p-22, -- 0x1.b551c8p-22, -- 0x1.9bc0a0p-22, -- 0x1.83a200p-22, -- 0x1.6ce1aap-22, -- 0x1.576c72p-22, -- 0x1.43302cp-22, -- 0x1.301ba2p-22, -- 0x1.1e1e86p-22, -- 0x1.0d2966p-22, -- 0x1.fa5b50p-23, -- 0x1.dc3ae4p-23, -- 0x1.bfd756p-23, -- 0x1.a517dap-23, -- 0x1.8be4f8p-23, -- 0x1.74287ep-23, -- 0x1.5dcd66p-23, -- 0x1.48bfd4p-23, -- 0x1.34ecf8p-23, -- 0x1.224310p-23, -- 0x1.10b148p-23, -- }, --}; -diff --git a/sysdeps/aarch64/fpu/vecmath_config.h b/sysdeps/aarch64/fpu/vecmath_config.h -index 7f0a8aa5f2..862eefaf8f 100644 ---- a/sysdeps/aarch64/fpu/vecmath_config.h -+++ b/sysdeps/aarch64/fpu/vecmath_config.h -@@ -75,49 +75,37 @@ extern const struct v_log10_data - } table[1 << V_LOG10_TABLE_BITS]; - } __v_log10_data attribute_hidden; - --extern const struct erff_data -+extern const struct v_erff_data - { - struct - { - float erf, scale; - } tab[513]; --} __erff_data attribute_hidden; -+} __v_erff_data attribute_hidden; - --extern const struct sv_erff_data --{ -- float erf[513]; -- float scale[513]; --} __sv_erff_data attribute_hidden; -- --extern const struct erf_data -+extern const struct v_erf_data - { - struct - { - double erf, scale; - } tab[769]; --} __erf_data attribute_hidden; -- --extern const struct sv_erf_data --{ -- double erf[769]; -- double scale[769]; --} __sv_erf_data attribute_hidden; -+} __v_erf_data attribute_hidden; - --extern const struct erfc_data -+extern const struct v_erfc_data - { - struct - { - double erfc, scale; - } tab[3488]; --} __erfc_data attribute_hidden; -+} __v_erfc_data attribute_hidden; - --extern const struct erfcf_data -+extern const struct v_erfcf_data - { - struct - { - float erfc, scale; - } tab[645]; --} __erfcf_data attribute_hidden; -+} __v_erfcf_data attribute_hidden; - - /* Some data for AdvSIMD and SVE pow's internal exp and log. */ - #define V_POW_EXP_TABLE_BITS 8 - -commit 4148940836eee07d1138da6f1805280eeb8217e3 -Author: Pierre Blanchard -Date: Mon Dec 9 15:53:04 2024 +0000 - - AArch64: Improve codegen in AdvSIMD pow - - Remove spurious ADRP. Improve memory access by shuffling constants and - using more indexed MLAs. - - A few more optimisation with no impact on accuracy - - force fmas contraction - - switch from shift-aided rint to rint instruction - - Between 1 and 5% throughput improvement on Neoverse - V1 depending on benchmark. - - (cherry picked from commit 569cfaaf4984ae70b23c61ee28a609b5aef93fea) - -diff --git a/sysdeps/aarch64/fpu/pow_advsimd.c b/sysdeps/aarch64/fpu/pow_advsimd.c -index 3c91e3e183..81e134ac2f 100644 ---- a/sysdeps/aarch64/fpu/pow_advsimd.c -+++ b/sysdeps/aarch64/fpu/pow_advsimd.c -@@ -22,9 +22,6 @@ - /* Defines parameters of the approximation and scalar fallback. */ - #include "finite_pow.h" - --#define VecSmallExp v_u64 (SmallExp) --#define VecThresExp v_u64 (ThresExp) -- - #define VecSmallPowX v_u64 (SmallPowX) - #define VecThresPowX v_u64 (ThresPowX) - #define VecSmallPowY v_u64 (SmallPowY) -@@ -32,36 +29,48 @@ - - static const struct data - { -- float64x2_t log_poly[6]; -- float64x2_t exp_poly[3]; -- float64x2_t ln2_hi, ln2_lo; -- float64x2_t shift, inv_ln2_n, ln2_hi_n, ln2_lo_n, small_powx; - uint64x2_t inf; -+ float64x2_t small_powx; -+ uint64x2_t offset, mask; -+ uint64x2_t mask_sub_0, mask_sub_1; -+ float64x2_t log_c0, log_c2, log_c4, log_c5; -+ double log_c1, log_c3; -+ double ln2_lo, ln2_hi; -+ uint64x2_t small_exp, thres_exp; -+ double ln2_lo_n, ln2_hi_n; -+ double inv_ln2_n, exp_c2; -+ float64x2_t exp_c0, exp_c1; - } data = { -+ /* Power threshold. */ -+ .inf = V2 (0x7ff0000000000000), -+ .small_powx = V2 (0x1p-126), -+ .offset = V2 (Off), -+ .mask = V2 (0xfffULL << 52), -+ .mask_sub_0 = V2 (1ULL << 52), -+ .mask_sub_1 = V2 (52ULL << 52), - /* Coefficients copied from v_pow_log_data.c - relative error: 0x1.11922ap-70 in [-0x1.6bp-8, 0x1.6bp-8] - Coefficients are scaled to match the scaling during evaluation. */ -- .log_poly -- = { V2 (0x1.555555555556p-2 * -2), V2 (-0x1.0000000000006p-2 * -2), -- V2 (0x1.999999959554ep-3 * 4), V2 (-0x1.555555529a47ap-3 * 4), -- V2 (0x1.2495b9b4845e9p-3 * -8), V2 (-0x1.0002b8b263fc3p-3 * -8) }, -- .ln2_hi = V2 (0x1.62e42fefa3800p-1), -- .ln2_lo = V2 (0x1.ef35793c76730p-45), -+ .log_c0 = V2 (0x1.555555555556p-2 * -2), -+ .log_c1 = -0x1.0000000000006p-2 * -2, -+ .log_c2 = V2 (0x1.999999959554ep-3 * 4), -+ .log_c3 = -0x1.555555529a47ap-3 * 4, -+ .log_c4 = V2 (0x1.2495b9b4845e9p-3 * -8), -+ .log_c5 = V2 (-0x1.0002b8b263fc3p-3 * -8), -+ .ln2_hi = 0x1.62e42fefa3800p-1, -+ .ln2_lo = 0x1.ef35793c76730p-45, - /* Polynomial coefficients: abs error: 1.43*2^-58, ulp error: 0.549 - (0.550 without fma) if |x| < ln2/512. */ -- .exp_poly = { V2 (0x1.fffffffffffd4p-2), V2 (0x1.5555571d6ef9p-3), -- V2 (0x1.5555576a5adcep-5) }, -- .shift = V2 (0x1.8p52), /* round to nearest int. without intrinsics. */ -- .inv_ln2_n = V2 (0x1.71547652b82fep8), /* N/ln2. */ -- .ln2_hi_n = V2 (0x1.62e42fefc0000p-9), /* ln2/N. */ -- .ln2_lo_n = V2 (-0x1.c610ca86c3899p-45), -- .small_powx = V2 (0x1p-126), -- .inf = V2 (0x7ff0000000000000) -+ .exp_c0 = V2 (0x1.fffffffffffd4p-2), -+ .exp_c1 = V2 (0x1.5555571d6ef9p-3), -+ .exp_c2 = 0x1.5555576a5adcep-5, -+ .small_exp = V2 (0x3c90000000000000), -+ .thres_exp = V2 (0x03f0000000000000), -+ .inv_ln2_n = 0x1.71547652b82fep8, /* N/ln2. */ -+ .ln2_hi_n = 0x1.62e42fefc0000p-9, /* ln2/N. */ -+ .ln2_lo_n = -0x1.c610ca86c3899p-45, - }; - --#define A(i) data.log_poly[i] --#define C(i) data.exp_poly[i] -- - /* This version implements an algorithm close to scalar pow but - - does not implement the trick in the exp's specialcase subroutine to avoid - double-rounding, -@@ -91,10 +100,9 @@ v_log_inline (uint64x2_t ix, float64x2_t *tail, const struct data *d) - /* x = 2^k z; where z is in range [OFF,2*OFF) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- uint64x2_t tmp = vsubq_u64 (ix, v_u64 (Off)); -- int64x2_t k -- = vshrq_n_s64 (vreinterpretq_s64_u64 (tmp), 52); /* arithmetic shift. */ -- uint64x2_t iz = vsubq_u64 (ix, vandq_u64 (tmp, v_u64 (0xfffULL << 52))); -+ uint64x2_t tmp = vsubq_u64 (ix, d->offset); -+ int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (tmp), 52); -+ uint64x2_t iz = vsubq_u64 (ix, vandq_u64 (tmp, d->mask)); - float64x2_t z = vreinterpretq_f64_u64 (iz); - float64x2_t kd = vcvtq_f64_s64 (k); - /* log(x) = k*Ln2 + log(c) + log1p(z/c-1). */ -@@ -105,9 +113,10 @@ v_log_inline (uint64x2_t ix, float64x2_t *tail, const struct data *d) - |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible. */ - float64x2_t r = vfmaq_f64 (v_f64 (-1.0), z, invc); - /* k*Ln2 + log(c) + r. */ -- float64x2_t t1 = vfmaq_f64 (logc, kd, d->ln2_hi); -+ float64x2_t ln2 = vld1q_f64 (&d->ln2_lo); -+ float64x2_t t1 = vfmaq_laneq_f64 (logc, kd, ln2, 1); - float64x2_t t2 = vaddq_f64 (t1, r); -- float64x2_t lo1 = vfmaq_f64 (logctail, kd, d->ln2_lo); -+ float64x2_t lo1 = vfmaq_laneq_f64 (logctail, kd, ln2, 0); - float64x2_t lo2 = vaddq_f64 (vsubq_f64 (t1, t2), r); - /* Evaluation is optimized assuming superscalar pipelined execution. */ - float64x2_t ar = vmulq_f64 (v_f64 (-0.5), r); -@@ -118,9 +127,10 @@ v_log_inline (uint64x2_t ix, float64x2_t *tail, const struct data *d) - float64x2_t lo3 = vfmaq_f64 (vnegq_f64 (ar2), ar, r); - float64x2_t lo4 = vaddq_f64 (vsubq_f64 (t2, hi), ar2); - /* p = log1p(r) - r - A[0]*r*r. */ -- float64x2_t a56 = vfmaq_f64 (A (4), r, A (5)); -- float64x2_t a34 = vfmaq_f64 (A (2), r, A (3)); -- float64x2_t a12 = vfmaq_f64 (A (0), r, A (1)); -+ float64x2_t odd_coeffs = vld1q_f64 (&d->log_c1); -+ float64x2_t a56 = vfmaq_f64 (d->log_c4, r, d->log_c5); -+ float64x2_t a34 = vfmaq_laneq_f64 (d->log_c2, r, odd_coeffs, 1); -+ float64x2_t a12 = vfmaq_laneq_f64 (d->log_c0, r, odd_coeffs, 0); - float64x2_t p = vfmaq_f64 (a34, ar2, a56); - p = vfmaq_f64 (a12, ar2, p); - p = vmulq_f64 (ar3, p); -@@ -140,28 +150,28 @@ exp_special_case (float64x2_t x, float64x2_t xtail) - - /* Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|. */ - static inline float64x2_t --v_exp_inline (float64x2_t x, float64x2_t xtail, const struct data *d) -+v_exp_inline (float64x2_t x, float64x2_t neg_xtail, const struct data *d) - { - /* Fallback to scalar exp_inline for all lanes if any lane - contains value of x s.t. |x| <= 2^-54 or >= 512. */ -- uint64x2_t abstop -- = vshrq_n_u64 (vandq_u64 (vreinterpretq_u64_f64 (x), d->inf), 52); -- uint64x2_t uoflowx -- = vcgeq_u64 (vsubq_u64 (abstop, VecSmallExp), VecThresExp); -+ uint64x2_t uoflowx = vcgeq_u64 ( -+ vsubq_u64 (vreinterpretq_u64_f64 (vabsq_f64 (x)), d->small_exp), -+ d->thres_exp); - if (__glibc_unlikely (v_any_u64 (uoflowx))) -- return exp_special_case (x, xtail); -+ return exp_special_case (x, vnegq_f64 (neg_xtail)); - - /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]. */ - /* x = ln2/N*k + r, with k integer and r in [-ln2/2N, ln2/2N]. */ -- float64x2_t z = vmulq_f64 (d->inv_ln2_n, x); - /* z - kd is in [-1, 1] in non-nearest rounding modes. */ -- float64x2_t kd = vaddq_f64 (z, d->shift); -- uint64x2_t ki = vreinterpretq_u64_f64 (kd); -- kd = vsubq_f64 (kd, d->shift); -- float64x2_t r = vfmsq_f64 (x, kd, d->ln2_hi_n); -- r = vfmsq_f64 (r, kd, d->ln2_lo_n); -+ float64x2_t exp_consts = vld1q_f64 (&d->inv_ln2_n); -+ float64x2_t z = vmulq_laneq_f64 (x, exp_consts, 0); -+ float64x2_t kd = vrndnq_f64 (z); -+ uint64x2_t ki = vreinterpretq_u64_s64 (vcvtaq_s64_f64 (z)); -+ float64x2_t ln2_n = vld1q_f64 (&d->ln2_lo_n); -+ float64x2_t r = vfmsq_laneq_f64 (x, kd, ln2_n, 1); -+ r = vfmsq_laneq_f64 (r, kd, ln2_n, 0); - /* The code assumes 2^-200 < |xtail| < 2^-8/N. */ -- r = vaddq_f64 (r, xtail); -+ r = vsubq_f64 (r, neg_xtail); - /* 2^(k/N) ~= scale. */ - uint64x2_t idx = vandq_u64 (ki, v_u64 (N_EXP - 1)); - uint64x2_t top = vshlq_n_u64 (ki, 52 - V_POW_EXP_TABLE_BITS); -@@ -170,8 +180,8 @@ v_exp_inline (float64x2_t x, float64x2_t xtail, const struct data *d) - sbits = vaddq_u64 (sbits, top); - /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (exp(r) - 1). */ - float64x2_t r2 = vmulq_f64 (r, r); -- float64x2_t tmp = vfmaq_f64 (C (1), r, C (2)); -- tmp = vfmaq_f64 (C (0), r, tmp); -+ float64x2_t tmp = vfmaq_laneq_f64 (d->exp_c1, r, exp_consts, 1); -+ tmp = vfmaq_f64 (d->exp_c0, r, tmp); - tmp = vfmaq_f64 (r, r2, tmp); - float64x2_t scale = vreinterpretq_f64_u64 (sbits); - /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there -@@ -230,8 +240,8 @@ float64x2_t VPCS_ATTR V_NAME_D2 (pow) (float64x2_t x, float64x2_t y) - { - /* Normalize subnormal x so exponent becomes negative. */ - uint64x2_t vix_norm = vreinterpretq_u64_f64 ( -- vabsq_f64 (vmulq_f64 (x, vcvtq_f64_u64 (v_u64 (1ULL << 52))))); -- vix_norm = vsubq_u64 (vix_norm, v_u64 (52ULL << 52)); -+ vabsq_f64 (vmulq_f64 (x, vcvtq_f64_u64 (d->mask_sub_0)))); -+ vix_norm = vsubq_u64 (vix_norm, d->mask_sub_1); - vix = vbslq_u64 (sub_x, vix_norm, vix); - } - } -@@ -242,8 +252,7 @@ float64x2_t VPCS_ATTR V_NAME_D2 (pow) (float64x2_t x, float64x2_t y) - - /* Vector Exp(y_loghi, y_loglo). */ - float64x2_t vehi = vmulq_f64 (y, vhi); -- float64x2_t velo = vmulq_f64 (y, vlo); - float64x2_t vemi = vfmsq_f64 (vehi, y, vhi); -- velo = vsubq_f64 (velo, vemi); -- return v_exp_inline (vehi, velo, d); -+ float64x2_t neg_velo = vfmsq_f64 (vemi, y, vlo); -+ return v_exp_inline (vehi, neg_velo, d); - } - -commit ae04f63087415eba9060143608b03db693854bb7 -Author: Pierre Blanchard -Date: Mon Dec 9 15:54:34 2024 +0000 - - AArch64: Improve codegen in AdvSIMD logs - - Remove spurious ADRP and a few MOVs. - Reduce memory access by using more indexed MLAs in polynomial. - Align notation so that algorithms are easier to compare. - Speedup on Neoverse V1 for log10 (8%), log (8.5%), and log2 (10%). - Update error threshold in AdvSIMD log (now matches SVE log). - - (cherry picked from commit 8eb5ad2ebc94cc5bedbac57c226c02ec254479c7) - -diff --git a/sysdeps/aarch64/fpu/log10_advsimd.c b/sysdeps/aarch64/fpu/log10_advsimd.c -index c065aaebae..f69ed21c39 100644 ---- a/sysdeps/aarch64/fpu/log10_advsimd.c -+++ b/sysdeps/aarch64/fpu/log10_advsimd.c -@@ -18,36 +18,36 @@ - . */ - - #include "v_math.h" --#include "poly_advsimd_f64.h" -- --#define N (1 << V_LOG10_TABLE_BITS) - - static const struct data - { -- uint64x2_t min_norm; -+ uint64x2_t off, sign_exp_mask, offset_lower_bound; - uint32x4_t special_bound; -- float64x2_t poly[5]; -- float64x2_t invln10, log10_2, ln2; -- uint64x2_t sign_exp_mask; -+ double invln10, log10_2; -+ double c1, c3; -+ float64x2_t c0, c2, c4; - } data = { - /* Computed from log coefficients divided by log(10) then rounded to double - precision. */ -- .poly = { V2 (-0x1.bcb7b1526e506p-3), V2 (0x1.287a7636be1d1p-3), -- V2 (-0x1.bcb7b158af938p-4), V2 (0x1.63c78734e6d07p-4), -- V2 (-0x1.287461742fee4p-4) }, -- .ln2 = V2 (0x1.62e42fefa39efp-1), -- .invln10 = V2 (0x1.bcb7b1526e50ep-2), -- .log10_2 = V2 (0x1.34413509f79ffp-2), -- .min_norm = V2 (0x0010000000000000), /* asuint64(0x1p-1022). */ -- .special_bound = V4 (0x7fe00000), /* asuint64(inf) - min_norm. */ -+ .c0 = V2 (-0x1.bcb7b1526e506p-3), -+ .c1 = 0x1.287a7636be1d1p-3, -+ .c2 = V2 (-0x1.bcb7b158af938p-4), -+ .c3 = 0x1.63c78734e6d07p-4, -+ .c4 = V2 (-0x1.287461742fee4p-4), -+ .invln10 = 0x1.bcb7b1526e50ep-2, -+ .log10_2 = 0x1.34413509f79ffp-2, -+ .off = V2 (0x3fe6900900000000), - .sign_exp_mask = V2 (0xfff0000000000000), -+ /* Lower bound is 0x0010000000000000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound - offset (which wraps around). */ -+ .offset_lower_bound = V2 (0x0010000000000000 - 0x3fe6900900000000), -+ .special_bound = V4 (0x7fe00000), /* asuint64(inf) - 0x0010000000000000. */ - }; - --#define Off v_u64 (0x3fe6900900000000) -+#define N (1 << V_LOG10_TABLE_BITS) - #define IndexMask (N - 1) - --#define T(s, i) __v_log10_data.s[i] -- - struct entry - { - float64x2_t invc; -@@ -70,10 +70,11 @@ lookup (uint64x2_t i) - } - - static float64x2_t VPCS_ATTR NOINLINE --special_case (float64x2_t x, float64x2_t y, float64x2_t hi, float64x2_t r2, -- uint32x2_t special) -+special_case (float64x2_t hi, uint64x2_t u_off, float64x2_t y, float64x2_t r2, -+ uint32x2_t special, const struct data *d) - { -- return v_call_f64 (log10, x, vfmaq_f64 (hi, r2, y), vmovl_u32 (special)); -+ float64x2_t x = vreinterpretq_f64_u64 (vaddq_u64 (u_off, d->off)); -+ return v_call_f64 (log10, x, vfmaq_f64 (hi, y, r2), vmovl_u32 (special)); - } - - /* Fast implementation of double-precision vector log10 -@@ -85,19 +86,24 @@ special_case (float64x2_t x, float64x2_t y, float64x2_t hi, float64x2_t r2, - float64x2_t VPCS_ATTR V_NAME_D1 (log10) (float64x2_t x) - { - const struct data *d = ptr_barrier (&data); -- uint64x2_t ix = vreinterpretq_u64_f64 (x); -- uint32x2_t special = vcge_u32 (vsubhn_u64 (ix, d->min_norm), -- vget_low_u32 (d->special_bound)); -+ -+ /* To avoid having to mov x out of the way, keep u after offset has been -+ applied, and recover x by adding the offset back in the special-case -+ handler. */ -+ uint64x2_t u = vreinterpretq_u64_f64 (x); -+ uint64x2_t u_off = vsubq_u64 (u, d->off); - - /* x = 2^k z; where z is in range [OFF,2*OFF) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- uint64x2_t tmp = vsubq_u64 (ix, Off); -- int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (tmp), 52); -- uint64x2_t iz = vsubq_u64 (ix, vandq_u64 (tmp, d->sign_exp_mask)); -+ int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (u_off), 52); -+ uint64x2_t iz = vsubq_u64 (u, vandq_u64 (u_off, d->sign_exp_mask)); - float64x2_t z = vreinterpretq_f64_u64 (iz); - -- struct entry e = lookup (tmp); -+ struct entry e = lookup (u_off); -+ -+ uint32x2_t special = vcge_u32 (vsubhn_u64 (u_off, d->offset_lower_bound), -+ vget_low_u32 (d->special_bound)); - - /* log10(x) = log1p(z/c-1)/log(10) + log10(c) + k*log10(2). */ - float64x2_t r = vfmaq_f64 (v_f64 (-1.0), z, e.invc); -@@ -105,17 +111,22 @@ float64x2_t VPCS_ATTR V_NAME_D1 (log10) (float64x2_t x) - - /* hi = r / log(10) + log10(c) + k*log10(2). - Constants in v_log10_data.c are computed (in extended precision) as -- e.log10c := e.logc * ivln10. */ -- float64x2_t w = vfmaq_f64 (e.log10c, r, d->invln10); -+ e.log10c := e.logc * invln10. */ -+ float64x2_t cte = vld1q_f64 (&d->invln10); -+ float64x2_t hi = vfmaq_laneq_f64 (e.log10c, r, cte, 0); - - /* y = log10(1+r) + n * log10(2). */ -- float64x2_t hi = vfmaq_f64 (w, kd, d->log10_2); -+ hi = vfmaq_laneq_f64 (hi, kd, cte, 1); - - /* y = r2*(A0 + r*A1 + r2*(A2 + r*A3 + r2*A4)) + hi. */ - float64x2_t r2 = vmulq_f64 (r, r); -- float64x2_t y = v_pw_horner_4_f64 (r, r2, d->poly); -+ float64x2_t odd_coeffs = vld1q_f64 (&d->c1); -+ float64x2_t y = vfmaq_laneq_f64 (d->c2, r, odd_coeffs, 1); -+ float64x2_t p = vfmaq_laneq_f64 (d->c0, r, odd_coeffs, 0); -+ y = vfmaq_f64 (y, d->c4, r2); -+ y = vfmaq_f64 (p, y, r2); - - if (__glibc_unlikely (v_any_u32h (special))) -- return special_case (x, y, hi, r2, special); -- return vfmaq_f64 (hi, r2, y); -+ return special_case (hi, u_off, y, r2, special, d); -+ return vfmaq_f64 (hi, y, r2); - } -diff --git a/sysdeps/aarch64/fpu/log2_advsimd.c b/sysdeps/aarch64/fpu/log2_advsimd.c -index 4057c552d8..1eea1f86eb 100644 ---- a/sysdeps/aarch64/fpu/log2_advsimd.c -+++ b/sysdeps/aarch64/fpu/log2_advsimd.c -@@ -18,31 +18,33 @@ - . */ - - #include "v_math.h" --#include "poly_advsimd_f64.h" -- --#define N (1 << V_LOG2_TABLE_BITS) - - static const struct data - { -- uint64x2_t min_norm; -+ uint64x2_t off, sign_exp_mask, offset_lower_bound; - uint32x4_t special_bound; -- float64x2_t poly[5]; -- float64x2_t invln2; -- uint64x2_t sign_exp_mask; -+ float64x2_t c0, c2; -+ double c1, c3, invln2, c4; - } data = { - /* Each coefficient was generated to approximate log(r) for |r| < 0x1.fp-9 - and N = 128, then scaled by log2(e) in extended precision and rounded back - to double precision. */ -- .poly = { V2 (-0x1.71547652b83p-1), V2 (0x1.ec709dc340953p-2), -- V2 (-0x1.71547651c8f35p-2), V2 (0x1.2777ebe12dda5p-2), -- V2 (-0x1.ec738d616fe26p-3) }, -- .invln2 = V2 (0x1.71547652b82fep0), -- .min_norm = V2 (0x0010000000000000), /* asuint64(0x1p-1022). */ -- .special_bound = V4 (0x7fe00000), /* asuint64(inf) - min_norm. */ -+ .c0 = V2 (-0x1.71547652b8300p-1), -+ .c1 = 0x1.ec709dc340953p-2, -+ .c2 = V2 (-0x1.71547651c8f35p-2), -+ .c3 = 0x1.2777ebe12dda5p-2, -+ .c4 = -0x1.ec738d616fe26p-3, -+ .invln2 = 0x1.71547652b82fep0, -+ .off = V2 (0x3fe6900900000000), - .sign_exp_mask = V2 (0xfff0000000000000), -+ /* Lower bound is 0x0010000000000000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound - offset (which wraps around). */ -+ .offset_lower_bound = V2 (0x0010000000000000 - 0x3fe6900900000000), -+ .special_bound = V4 (0x7fe00000), /* asuint64(inf) - asuint64(0x1p-1022). */ - }; - --#define Off v_u64 (0x3fe6900900000000) -+#define N (1 << V_LOG2_TABLE_BITS) - #define IndexMask (N - 1) - - struct entry -@@ -67,10 +69,11 @@ lookup (uint64x2_t i) - } - - static float64x2_t VPCS_ATTR NOINLINE --special_case (float64x2_t x, float64x2_t y, float64x2_t w, float64x2_t r2, -- uint32x2_t special) -+special_case (float64x2_t hi, uint64x2_t u_off, float64x2_t y, float64x2_t r2, -+ uint32x2_t special, const struct data *d) - { -- return v_call_f64 (log2, x, vfmaq_f64 (w, r2, y), vmovl_u32 (special)); -+ float64x2_t x = vreinterpretq_f64_u64 (vaddq_u64 (u_off, d->off)); -+ return v_call_f64 (log2, x, vfmaq_f64 (hi, y, r2), vmovl_u32 (special)); - } - - /* Double-precision vector log2 routine. Implements the same algorithm as -@@ -81,31 +84,41 @@ special_case (float64x2_t x, float64x2_t y, float64x2_t w, float64x2_t r2, - float64x2_t VPCS_ATTR V_NAME_D1 (log2) (float64x2_t x) - { - const struct data *d = ptr_barrier (&data); -- uint64x2_t ix = vreinterpretq_u64_f64 (x); -- uint32x2_t special = vcge_u32 (vsubhn_u64 (ix, d->min_norm), -- vget_low_u32 (d->special_bound)); -+ -+ /* To avoid having to mov x out of the way, keep u after offset has been -+ applied, and recover x by adding the offset back in the special-case -+ handler. */ -+ uint64x2_t u = vreinterpretq_u64_f64 (x); -+ uint64x2_t u_off = vsubq_u64 (u, d->off); - - /* x = 2^k z; where z is in range [Off,2*Off) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- uint64x2_t tmp = vsubq_u64 (ix, Off); -- int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (tmp), 52); -- uint64x2_t iz = vsubq_u64 (ix, vandq_u64 (tmp, d->sign_exp_mask)); -+ int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (u_off), 52); -+ uint64x2_t iz = vsubq_u64 (u, vandq_u64 (u_off, d->sign_exp_mask)); - float64x2_t z = vreinterpretq_f64_u64 (iz); - -- struct entry e = lookup (tmp); -+ struct entry e = lookup (u_off); - -- /* log2(x) = log1p(z/c-1)/log(2) + log2(c) + k. */ -+ uint32x2_t special = vcge_u32 (vsubhn_u64 (u_off, d->offset_lower_bound), -+ vget_low_u32 (d->special_bound)); - -+ /* log2(x) = log1p(z/c-1)/log(2) + log2(c) + k. */ - float64x2_t r = vfmaq_f64 (v_f64 (-1.0), z, e.invc); - float64x2_t kd = vcvtq_f64_s64 (k); -- float64x2_t w = vfmaq_f64 (e.log2c, r, d->invln2); -+ -+ float64x2_t invln2_and_c4 = vld1q_f64 (&d->invln2); -+ float64x2_t hi -+ = vfmaq_laneq_f64 (vaddq_f64 (e.log2c, kd), r, invln2_and_c4, 0); - - float64x2_t r2 = vmulq_f64 (r, r); -- float64x2_t y = v_pw_horner_4_f64 (r, r2, d->poly); -- w = vaddq_f64 (kd, w); -+ float64x2_t odd_coeffs = vld1q_f64 (&d->c1); -+ float64x2_t y = vfmaq_laneq_f64 (d->c2, r, odd_coeffs, 1); -+ float64x2_t p = vfmaq_laneq_f64 (d->c0, r, odd_coeffs, 0); -+ y = vfmaq_laneq_f64 (y, r2, invln2_and_c4, 1); -+ y = vfmaq_f64 (p, r2, y); - - if (__glibc_unlikely (v_any_u32h (special))) -- return special_case (x, y, w, r2, special); -- return vfmaq_f64 (w, r2, y); -+ return special_case (hi, u_off, y, r2, special, d); -+ return vfmaq_f64 (hi, y, r2); - } -diff --git a/sysdeps/aarch64/fpu/log_advsimd.c b/sysdeps/aarch64/fpu/log_advsimd.c -index 015a6da7d7..b1a27fbc29 100644 ---- a/sysdeps/aarch64/fpu/log_advsimd.c -+++ b/sysdeps/aarch64/fpu/log_advsimd.c -@@ -21,27 +21,29 @@ - - static const struct data - { -- uint64x2_t min_norm; -+ uint64x2_t off, sign_exp_mask, offset_lower_bound; - uint32x4_t special_bound; -- float64x2_t poly[5]; -- float64x2_t ln2; -- uint64x2_t sign_exp_mask; -+ float64x2_t c0, c2; -+ double c1, c3, ln2, c4; - } data = { -- /* Worst-case error: 1.17 + 0.5 ulp. -- Rel error: 0x1.6272e588p-56 in [ -0x1.fc1p-9 0x1.009p-8 ]. */ -- .poly = { V2 (-0x1.ffffffffffff7p-2), V2 (0x1.55555555170d4p-2), -- V2 (-0x1.0000000399c27p-2), V2 (0x1.999b2e90e94cap-3), -- V2 (-0x1.554e550bd501ep-3) }, -- .ln2 = V2 (0x1.62e42fefa39efp-1), -- .min_norm = V2 (0x0010000000000000), -- .special_bound = V4 (0x7fe00000), /* asuint64(inf) - min_norm. */ -- .sign_exp_mask = V2 (0xfff0000000000000) -+ /* Rel error: 0x1.6272e588p-56 in [ -0x1.fc1p-9 0x1.009p-8 ]. */ -+ .c0 = V2 (-0x1.ffffffffffff7p-2), -+ .c1 = 0x1.55555555170d4p-2, -+ .c2 = V2 (-0x1.0000000399c27p-2), -+ .c3 = 0x1.999b2e90e94cap-3, -+ .c4 = -0x1.554e550bd501ep-3, -+ .ln2 = 0x1.62e42fefa39efp-1, -+ .sign_exp_mask = V2 (0xfff0000000000000), -+ .off = V2 (0x3fe6900900000000), -+ /* Lower bound is 0x0010000000000000. For -+ optimised register use subnormals are detected after offset has been -+ subtracted, so lower bound - offset (which wraps around). */ -+ .offset_lower_bound = V2 (0x0010000000000000 - 0x3fe6900900000000), -+ .special_bound = V4 (0x7fe00000), /* asuint64(inf) - asuint64(0x1p-126). */ - }; - --#define A(i) d->poly[i] - #define N (1 << V_LOG_TABLE_BITS) - #define IndexMask (N - 1) --#define Off v_u64 (0x3fe6900900000000) - - struct entry - { -@@ -64,48 +66,56 @@ lookup (uint64x2_t i) - } - - static float64x2_t VPCS_ATTR NOINLINE --special_case (float64x2_t x, float64x2_t y, float64x2_t hi, float64x2_t r2, -- uint32x2_t cmp) -+special_case (float64x2_t hi, uint64x2_t u_off, float64x2_t y, float64x2_t r2, -+ uint32x2_t special, const struct data *d) - { -- return v_call_f64 (log, x, vfmaq_f64 (hi, y, r2), vmovl_u32 (cmp)); -+ float64x2_t x = vreinterpretq_f64_u64 (vaddq_u64 (u_off, d->off)); -+ return v_call_f64 (log, x, vfmaq_f64 (hi, y, r2), vmovl_u32 (special)); - } - -+/* Double-precision vector log routine. -+ The maximum observed error is 2.17 ULP: -+ _ZGVnN2v_log(0x1.a6129884398a3p+0) got 0x1.ffffff1cca043p-2 -+ want 0x1.ffffff1cca045p-2. */ - float64x2_t VPCS_ATTR V_NAME_D1 (log) (float64x2_t x) - { - const struct data *d = ptr_barrier (&data); -- float64x2_t z, r, r2, p, y, kd, hi; -- uint64x2_t ix, iz, tmp; -- uint32x2_t cmp; -- int64x2_t k; -- struct entry e; - -- ix = vreinterpretq_u64_f64 (x); -- cmp = vcge_u32 (vsubhn_u64 (ix, d->min_norm), -- vget_low_u32 (d->special_bound)); -+ /* To avoid having to mov x out of the way, keep u after offset has been -+ applied, and recover x by adding the offset back in the special-case -+ handler. */ -+ uint64x2_t u = vreinterpretq_u64_f64 (x); -+ uint64x2_t u_off = vsubq_u64 (u, d->off); - - /* x = 2^k z; where z is in range [Off,2*Off) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- tmp = vsubq_u64 (ix, Off); -- k = vshrq_n_s64 (vreinterpretq_s64_u64 (tmp), 52); /* arithmetic shift. */ -- iz = vsubq_u64 (ix, vandq_u64 (tmp, d->sign_exp_mask)); -- z = vreinterpretq_f64_u64 (iz); -- e = lookup (tmp); -+ int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (u_off), 52); -+ uint64x2_t iz = vsubq_u64 (u, vandq_u64 (u_off, d->sign_exp_mask)); -+ float64x2_t z = vreinterpretq_f64_u64 (iz); -+ -+ struct entry e = lookup (u_off); -+ -+ uint32x2_t special = vcge_u32 (vsubhn_u64 (u_off, d->offset_lower_bound), -+ vget_low_u32 (d->special_bound)); - - /* log(x) = log1p(z/c-1) + log(c) + k*Ln2. */ -- r = vfmaq_f64 (v_f64 (-1.0), z, e.invc); -- kd = vcvtq_f64_s64 (k); -+ float64x2_t r = vfmaq_f64 (v_f64 (-1.0), z, e.invc); -+ float64x2_t kd = vcvtq_f64_s64 (k); - - /* hi = r + log(c) + k*Ln2. */ -- hi = vfmaq_f64 (vaddq_f64 (e.logc, r), kd, d->ln2); -+ float64x2_t ln2_and_c4 = vld1q_f64 (&d->ln2); -+ float64x2_t hi = vfmaq_laneq_f64 (vaddq_f64 (e.logc, r), kd, ln2_and_c4, 0); -+ - /* y = r2*(A0 + r*A1 + r2*(A2 + r*A3 + r2*A4)) + hi. */ -- r2 = vmulq_f64 (r, r); -- y = vfmaq_f64 (A (2), A (3), r); -- p = vfmaq_f64 (A (0), A (1), r); -- y = vfmaq_f64 (y, A (4), r2); -- y = vfmaq_f64 (p, y, r2); -- -- if (__glibc_unlikely (v_any_u32h (cmp))) -- return special_case (x, y, hi, r2, cmp); -+ float64x2_t odd_coeffs = vld1q_f64 (&d->c1); -+ float64x2_t r2 = vmulq_f64 (r, r); -+ float64x2_t y = vfmaq_laneq_f64 (d->c2, r, odd_coeffs, 1); -+ float64x2_t p = vfmaq_laneq_f64 (d->c0, r, odd_coeffs, 0); -+ y = vfmaq_laneq_f64 (y, r2, ln2_and_c4, 1); -+ y = vfmaq_f64 (p, r2, y); -+ -+ if (__glibc_unlikely (v_any_u32h (special))) -+ return special_case (hi, u_off, y, r2, special, d); - return vfmaq_f64 (hi, y, r2); - } - -commit 2aed9796bfb17b257e63b12cefdb7ff60be09626 -Author: Pierre Blanchard -Date: Mon Dec 9 15:55:39 2024 +0000 - - AArch64: Improve codegen in users of ADVSIMD log1p helper - - Add inline helper for log1p and rearrange operations so MOV - is not necessary in reduction or around the special-case handler. - Reduce memory access by using more indexed MLAs in polynomial. - Speedup on Neoverse V1 for log1p (3.5%), acosh (7.5%) and atanh (10%). - - (cherry picked from commit ca0c0d0f26fbf75b9cacc65122b457e8fdec40b8) - -diff --git a/sysdeps/aarch64/fpu/acosh_advsimd.c b/sysdeps/aarch64/fpu/acosh_advsimd.c -index c88283cf11..a98f4a2e4d 100644 ---- a/sysdeps/aarch64/fpu/acosh_advsimd.c -+++ b/sysdeps/aarch64/fpu/acosh_advsimd.c -@@ -54,9 +54,8 @@ VPCS_ATTR float64x2_t V_NAME_D1 (acosh) (float64x2_t x) - x = vbslq_f64 (special, vreinterpretq_f64_u64 (d->one), x); - #endif - -- float64x2_t xm1 = vsubq_f64 (x, v_f64 (1)); -- float64x2_t y; -- y = vaddq_f64 (x, v_f64 (1)); -+ float64x2_t xm1 = vsubq_f64 (x, v_f64 (1.0)); -+ float64x2_t y = vaddq_f64 (x, v_f64 (1.0)); - y = vmulq_f64 (y, xm1); - y = vsqrtq_f64 (y); - y = vaddq_f64 (xm1, y); -diff --git a/sysdeps/aarch64/fpu/atanh_advsimd.c b/sysdeps/aarch64/fpu/atanh_advsimd.c -index 3c3d0bd6ad..eb9769aeac 100644 ---- a/sysdeps/aarch64/fpu/atanh_advsimd.c -+++ b/sysdeps/aarch64/fpu/atanh_advsimd.c -@@ -23,15 +23,19 @@ - const static struct data - { - struct v_log1p_data log1p_consts; -- uint64x2_t one, half; -+ uint64x2_t one; -+ uint64x2_t sign_mask; - } data = { .log1p_consts = V_LOG1P_CONSTANTS_TABLE, - .one = V2 (0x3ff0000000000000), -- .half = V2 (0x3fe0000000000000) }; -+ .sign_mask = V2 (0x8000000000000000) }; - - static float64x2_t VPCS_ATTR NOINLINE --special_case (float64x2_t x, float64x2_t y, uint64x2_t special) -+special_case (float64x2_t x, float64x2_t halfsign, float64x2_t y, -+ uint64x2_t special, const struct data *d) - { -- return v_call_f64 (atanh, x, y, special); -+ y = log1p_inline (y, &d->log1p_consts); -+ return v_call_f64 (atanh, vbslq_f64 (d->sign_mask, halfsign, x), -+ vmulq_f64 (halfsign, y), special); - } - - /* Approximation for vector double-precision atanh(x) using modified log1p. -@@ -43,11 +47,10 @@ float64x2_t V_NAME_D1 (atanh) (float64x2_t x) - { - const struct data *d = ptr_barrier (&data); - -+ float64x2_t halfsign = vbslq_f64 (d->sign_mask, x, v_f64 (0.5)); - float64x2_t ax = vabsq_f64 (x); - uint64x2_t ia = vreinterpretq_u64_f64 (ax); -- uint64x2_t sign = veorq_u64 (vreinterpretq_u64_f64 (x), ia); - uint64x2_t special = vcgeq_u64 (ia, d->one); -- float64x2_t halfsign = vreinterpretq_f64_u64 (vorrq_u64 (sign, d->half)); - - #if WANT_SIMD_EXCEPT - ax = v_zerofy_f64 (ax, special); -@@ -55,10 +58,15 @@ float64x2_t V_NAME_D1 (atanh) (float64x2_t x) - - float64x2_t y; - y = vaddq_f64 (ax, ax); -- y = vdivq_f64 (y, vsubq_f64 (v_f64 (1), ax)); -- y = log1p_inline (y, &d->log1p_consts); -+ y = vdivq_f64 (y, vsubq_f64 (vreinterpretq_f64_u64 (d->one), ax)); - - if (__glibc_unlikely (v_any_u64 (special))) -- return special_case (x, vmulq_f64 (y, halfsign), special); -+#if WANT_SIMD_EXCEPT -+ return special_case (x, halfsign, y, special, d); -+#else -+ return special_case (ax, halfsign, y, special, d); -+#endif -+ -+ y = log1p_inline (y, &d->log1p_consts); - return vmulq_f64 (y, halfsign); - } -diff --git a/sysdeps/aarch64/fpu/log1p_advsimd.c b/sysdeps/aarch64/fpu/log1p_advsimd.c -index 114064c696..1263587201 100644 ---- a/sysdeps/aarch64/fpu/log1p_advsimd.c -+++ b/sysdeps/aarch64/fpu/log1p_advsimd.c -@@ -17,43 +17,26 @@ - License along with the GNU C Library; if not, see - . */ - --#include "v_math.h" --#include "poly_advsimd_f64.h" -+#define WANT_V_LOG1P_K0_SHORTCUT 0 -+#include "v_log1p_inline.h" - - const static struct data - { -- float64x2_t poly[19], ln2[2]; -- uint64x2_t hf_rt2_top, one_m_hf_rt2_top, umask, inf, minus_one; -- int64x2_t one_top; --} data = { -- /* Generated using Remez, deg=20, in [sqrt(2)/2-1, sqrt(2)-1]. */ -- .poly = { V2 (-0x1.ffffffffffffbp-2), V2 (0x1.55555555551a9p-2), -- V2 (-0x1.00000000008e3p-2), V2 (0x1.9999999a32797p-3), -- V2 (-0x1.555555552fecfp-3), V2 (0x1.249248e071e5ap-3), -- V2 (-0x1.ffffff8bf8482p-4), V2 (0x1.c71c8f07da57ap-4), -- V2 (-0x1.9999ca4ccb617p-4), V2 (0x1.7459ad2e1dfa3p-4), -- V2 (-0x1.554d2680a3ff2p-4), V2 (0x1.3b4c54d487455p-4), -- V2 (-0x1.2548a9ffe80e6p-4), V2 (0x1.0f389a24b2e07p-4), -- V2 (-0x1.eee4db15db335p-5), V2 (0x1.e95b494d4a5ddp-5), -- V2 (-0x1.15fdf07cb7c73p-4), V2 (0x1.0310b70800fcfp-4), -- V2 (-0x1.cfa7385bdb37ep-6) }, -- .ln2 = { V2 (0x1.62e42fefa3800p-1), V2 (0x1.ef35793c76730p-45) }, -- /* top32(asuint64(sqrt(2)/2)) << 32. */ -- .hf_rt2_top = V2 (0x3fe6a09e00000000), -- /* (top32(asuint64(1)) - top32(asuint64(sqrt(2)/2))) << 32. */ -- .one_m_hf_rt2_top = V2 (0x00095f6200000000), -- .umask = V2 (0x000fffff00000000), -- .one_top = V2 (0x3ff), -- .inf = V2 (0x7ff0000000000000), -- .minus_one = V2 (0xbff0000000000000) --}; -+ struct v_log1p_data d; -+ uint64x2_t inf, minus_one; -+} data = { .d = V_LOG1P_CONSTANTS_TABLE, -+ .inf = V2 (0x7ff0000000000000), -+ .minus_one = V2 (0xbff0000000000000) }; - - #define BottomMask v_u64 (0xffffffff) - --static float64x2_t VPCS_ATTR NOINLINE --special_case (float64x2_t x, float64x2_t y, uint64x2_t special) -+static float64x2_t NOINLINE VPCS_ATTR -+special_case (float64x2_t x, uint64x2_t cmp, const struct data *d) - { -- return v_call_f64 (log1p, x, y, special); -+ /* Side-step special lanes so fenv exceptions are not triggered -+ inadvertently. */ -+ float64x2_t x_nospecial = v_zerofy_f64 (x, cmp); -+ return v_call_f64 (log1p, x, log1p_inline (x_nospecial, &d->d), cmp); - } - - /* Vector log1p approximation using polynomial on reduced interval. Routine is -@@ -66,66 +49,14 @@ VPCS_ATTR float64x2_t V_NAME_D1 (log1p) (float64x2_t x) - const struct data *d = ptr_barrier (&data); - uint64x2_t ix = vreinterpretq_u64_f64 (x); - uint64x2_t ia = vreinterpretq_u64_f64 (vabsq_f64 (x)); -- uint64x2_t special = vcgeq_u64 (ia, d->inf); - --#if WANT_SIMD_EXCEPT -- special = vorrq_u64 (special, -- vcgeq_u64 (ix, vreinterpretq_u64_f64 (v_f64 (-1)))); -- if (__glibc_unlikely (v_any_u64 (special))) -- x = v_zerofy_f64 (x, special); --#else -- special = vorrq_u64 (special, vcleq_f64 (x, v_f64 (-1))); --#endif -+ uint64x2_t special_cases -+ = vorrq_u64 (vcgeq_u64 (ia, d->inf), vcgeq_u64 (ix, d->minus_one)); - -- /* With x + 1 = t * 2^k (where t = f + 1 and k is chosen such that f -- is in [sqrt(2)/2, sqrt(2)]): -- log1p(x) = k*log(2) + log1p(f). -+ if (__glibc_unlikely (v_any_u64 (special_cases))) -+ return special_case (x, special_cases, d); - -- f may not be representable exactly, so we need a correction term: -- let m = round(1 + x), c = (1 + x) - m. -- c << m: at very small x, log1p(x) ~ x, hence: -- log(1+x) - log(m) ~ c/m. -- -- We therefore calculate log1p(x) by k*log2 + log1p(f) + c/m. */ -- -- /* Obtain correctly scaled k by manipulation in the exponent. -- The scalar algorithm casts down to 32-bit at this point to calculate k and -- u_red. We stay in double-width to obtain f and k, using the same constants -- as the scalar algorithm but shifted left by 32. */ -- float64x2_t m = vaddq_f64 (x, v_f64 (1)); -- uint64x2_t mi = vreinterpretq_u64_f64 (m); -- uint64x2_t u = vaddq_u64 (mi, d->one_m_hf_rt2_top); -- -- int64x2_t ki -- = vsubq_s64 (vreinterpretq_s64_u64 (vshrq_n_u64 (u, 52)), d->one_top); -- float64x2_t k = vcvtq_f64_s64 (ki); -- -- /* Reduce x to f in [sqrt(2)/2, sqrt(2)]. */ -- uint64x2_t utop = vaddq_u64 (vandq_u64 (u, d->umask), d->hf_rt2_top); -- uint64x2_t u_red = vorrq_u64 (utop, vandq_u64 (mi, BottomMask)); -- float64x2_t f = vsubq_f64 (vreinterpretq_f64_u64 (u_red), v_f64 (1)); -- -- /* Correction term c/m. */ -- float64x2_t cm = vdivq_f64 (vsubq_f64 (x, vsubq_f64 (m, v_f64 (1))), m); -- -- /* Approximate log1p(x) on the reduced input using a polynomial. Because -- log1p(0)=0 we choose an approximation of the form: -- x + C0*x^2 + C1*x^3 + C2x^4 + ... -- Hence approximation has the form f + f^2 * P(f) -- where P(x) = C0 + C1*x + C2x^2 + ... -- Assembling this all correctly is dealt with at the final step. */ -- float64x2_t f2 = vmulq_f64 (f, f); -- float64x2_t p = v_pw_horner_18_f64 (f, f2, d->poly); -- -- float64x2_t ylo = vfmaq_f64 (cm, k, d->ln2[1]); -- float64x2_t yhi = vfmaq_f64 (f, k, d->ln2[0]); -- float64x2_t y = vaddq_f64 (ylo, yhi); -- -- if (__glibc_unlikely (v_any_u64 (special))) -- return special_case (vreinterpretq_f64_u64 (ix), vfmaq_f64 (y, f2, p), -- special); -- -- return vfmaq_f64 (y, f2, p); -+ return log1p_inline (x, &d->d); - } - - strong_alias (V_NAME_D1 (log1p), V_NAME_D1 (logp1)) -diff --git a/sysdeps/aarch64/fpu/v_log1p_inline.h b/sysdeps/aarch64/fpu/v_log1p_inline.h -index 242e43b6ee..834ff65adf 100644 ---- a/sysdeps/aarch64/fpu/v_log1p_inline.h -+++ b/sysdeps/aarch64/fpu/v_log1p_inline.h -@@ -21,29 +21,30 @@ - #define AARCH64_FPU_V_LOG1P_INLINE_H - - #include "v_math.h" --#include "poly_advsimd_f64.h" - - struct v_log1p_data - { -- float64x2_t poly[19], ln2[2]; -+ float64x2_t c0, c2, c4, c6, c8, c10, c12, c14, c16; - uint64x2_t hf_rt2_top, one_m_hf_rt2_top, umask; - int64x2_t one_top; -+ double c1, c3, c5, c7, c9, c11, c13, c15, c17, c18; -+ double ln2[2]; - }; - - /* Coefficients generated using Remez, deg=20, in [sqrt(2)/2-1, sqrt(2)-1]. */ - #define V_LOG1P_CONSTANTS_TABLE \ - { \ -- .poly = { V2 (-0x1.ffffffffffffbp-2), V2 (0x1.55555555551a9p-2), \ -- V2 (-0x1.00000000008e3p-2), V2 (0x1.9999999a32797p-3), \ -- V2 (-0x1.555555552fecfp-3), V2 (0x1.249248e071e5ap-3), \ -- V2 (-0x1.ffffff8bf8482p-4), V2 (0x1.c71c8f07da57ap-4), \ -- V2 (-0x1.9999ca4ccb617p-4), V2 (0x1.7459ad2e1dfa3p-4), \ -- V2 (-0x1.554d2680a3ff2p-4), V2 (0x1.3b4c54d487455p-4), \ -- V2 (-0x1.2548a9ffe80e6p-4), V2 (0x1.0f389a24b2e07p-4), \ -- V2 (-0x1.eee4db15db335p-5), V2 (0x1.e95b494d4a5ddp-5), \ -- V2 (-0x1.15fdf07cb7c73p-4), V2 (0x1.0310b70800fcfp-4), \ -- V2 (-0x1.cfa7385bdb37ep-6) }, \ -- .ln2 = { V2 (0x1.62e42fefa3800p-1), V2 (0x1.ef35793c76730p-45) }, \ -+ .c0 = V2 (-0x1.ffffffffffffbp-2), .c1 = 0x1.55555555551a9p-2, \ -+ .c2 = V2 (-0x1.00000000008e3p-2), .c3 = 0x1.9999999a32797p-3, \ -+ .c4 = V2 (-0x1.555555552fecfp-3), .c5 = 0x1.249248e071e5ap-3, \ -+ .c6 = V2 (-0x1.ffffff8bf8482p-4), .c7 = 0x1.c71c8f07da57ap-4, \ -+ .c8 = V2 (-0x1.9999ca4ccb617p-4), .c9 = 0x1.7459ad2e1dfa3p-4, \ -+ .c10 = V2 (-0x1.554d2680a3ff2p-4), .c11 = 0x1.3b4c54d487455p-4, \ -+ .c12 = V2 (-0x1.2548a9ffe80e6p-4), .c13 = 0x1.0f389a24b2e07p-4, \ -+ .c14 = V2 (-0x1.eee4db15db335p-5), .c15 = 0x1.e95b494d4a5ddp-5, \ -+ .c16 = V2 (-0x1.15fdf07cb7c73p-4), .c17 = 0x1.0310b70800fcfp-4, \ -+ .c18 = -0x1.cfa7385bdb37ep-6, \ -+ .ln2 = { 0x1.62e42fefa3800p-1, 0x1.ef35793c76730p-45 }, \ - .hf_rt2_top = V2 (0x3fe6a09e00000000), \ - .one_m_hf_rt2_top = V2 (0x00095f6200000000), \ - .umask = V2 (0x000fffff00000000), .one_top = V2 (0x3ff) \ -@@ -51,19 +52,45 @@ struct v_log1p_data - - #define BottomMask v_u64 (0xffffffff) - -+static inline float64x2_t -+eval_poly (float64x2_t m, float64x2_t m2, const struct v_log1p_data *d) -+{ -+ /* Approximate log(1+m) on [-0.25, 0.5] using pairwise Horner. */ -+ float64x2_t c13 = vld1q_f64 (&d->c1); -+ float64x2_t c57 = vld1q_f64 (&d->c5); -+ float64x2_t c911 = vld1q_f64 (&d->c9); -+ float64x2_t c1315 = vld1q_f64 (&d->c13); -+ float64x2_t c1718 = vld1q_f64 (&d->c17); -+ float64x2_t p1617 = vfmaq_laneq_f64 (d->c16, m, c1718, 0); -+ float64x2_t p1415 = vfmaq_laneq_f64 (d->c14, m, c1315, 1); -+ float64x2_t p1213 = vfmaq_laneq_f64 (d->c12, m, c1315, 0); -+ float64x2_t p1011 = vfmaq_laneq_f64 (d->c10, m, c911, 1); -+ float64x2_t p89 = vfmaq_laneq_f64 (d->c8, m, c911, 0); -+ float64x2_t p67 = vfmaq_laneq_f64 (d->c6, m, c57, 1); -+ float64x2_t p45 = vfmaq_laneq_f64 (d->c4, m, c57, 0); -+ float64x2_t p23 = vfmaq_laneq_f64 (d->c2, m, c13, 1); -+ float64x2_t p01 = vfmaq_laneq_f64 (d->c0, m, c13, 0); -+ float64x2_t p = vfmaq_laneq_f64 (p1617, m2, c1718, 1); -+ p = vfmaq_f64 (p1415, m2, p); -+ p = vfmaq_f64 (p1213, m2, p); -+ p = vfmaq_f64 (p1011, m2, p); -+ p = vfmaq_f64 (p89, m2, p); -+ p = vfmaq_f64 (p67, m2, p); -+ p = vfmaq_f64 (p45, m2, p); -+ p = vfmaq_f64 (p23, m2, p); -+ return vfmaq_f64 (p01, m2, p); -+} -+ - static inline float64x2_t - log1p_inline (float64x2_t x, const struct v_log1p_data *d) - { -- /* Helper for calculating log(x + 1). Copied from v_log1p_2u5.c, with several -- modifications: -+ /* Helper for calculating log(x + 1): - - No special-case handling - this should be dealt with by the caller. -- - Pairwise Horner polynomial evaluation for improved accuracy. - - Optionally simulate the shortcut for k=0, used in the scalar routine, -- using v_sel, for improved accuracy when the argument to log1p is close to -- 0. This feature is enabled by defining WANT_V_LOG1P_K0_SHORTCUT as 1 in -- the source of the caller before including this file. -- See v_log1pf_2u1.c for details of the algorithm. */ -- float64x2_t m = vaddq_f64 (x, v_f64 (1)); -+ using v_sel, for improved accuracy when the argument to log1p is close -+ to 0. This feature is enabled by defining WANT_V_LOG1P_K0_SHORTCUT as 1 -+ in the source of the caller before including this file. */ -+ float64x2_t m = vaddq_f64 (x, v_f64 (1.0)); - uint64x2_t mi = vreinterpretq_u64_f64 (m); - uint64x2_t u = vaddq_u64 (mi, d->one_m_hf_rt2_top); - -@@ -74,14 +101,14 @@ log1p_inline (float64x2_t x, const struct v_log1p_data *d) - /* Reduce x to f in [sqrt(2)/2, sqrt(2)]. */ - uint64x2_t utop = vaddq_u64 (vandq_u64 (u, d->umask), d->hf_rt2_top); - uint64x2_t u_red = vorrq_u64 (utop, vandq_u64 (mi, BottomMask)); -- float64x2_t f = vsubq_f64 (vreinterpretq_f64_u64 (u_red), v_f64 (1)); -+ float64x2_t f = vsubq_f64 (vreinterpretq_f64_u64 (u_red), v_f64 (1.0)); - - /* Correction term c/m. */ -- float64x2_t cm = vdivq_f64 (vsubq_f64 (x, vsubq_f64 (m, v_f64 (1))), m); -+ float64x2_t cm = vdivq_f64 (vsubq_f64 (x, vsubq_f64 (m, v_f64 (1.0))), m); - - #ifndef WANT_V_LOG1P_K0_SHORTCUT --#error \ -- "Cannot use v_log1p_inline.h without specifying whether you need the k0 shortcut for greater accuracy close to 0" -+# error \ -+ "Cannot use v_log1p_inline.h without specifying whether you need the k0 shortcut for greater accuracy close to 0" - #elif WANT_V_LOG1P_K0_SHORTCUT - /* Shortcut if k is 0 - set correction term to 0 and f to x. The result is - that the approximation is solely the polynomial. */ -@@ -92,11 +119,12 @@ log1p_inline (float64x2_t x, const struct v_log1p_data *d) - - /* Approximate log1p(f) on the reduced input using a polynomial. */ - float64x2_t f2 = vmulq_f64 (f, f); -- float64x2_t p = v_pw_horner_18_f64 (f, f2, d->poly); -+ float64x2_t p = eval_poly (f, f2, d); - - /* Assemble log1p(x) = k * log2 + log1p(f) + c/m. */ -- float64x2_t ylo = vfmaq_f64 (cm, k, d->ln2[1]); -- float64x2_t yhi = vfmaq_f64 (f, k, d->ln2[0]); -+ float64x2_t ln2 = vld1q_f64 (&d->ln2[0]); -+ float64x2_t ylo = vfmaq_laneq_f64 (cm, k, ln2, 1); -+ float64x2_t yhi = vfmaq_laneq_f64 (f, k, ln2, 0); - return vfmaq_f64 (vaddq_f64 (ylo, yhi), f2, p); - } - - -commit 9170b921fa49d2ef37141506837baaae92c7d3f8 -Author: Joana Cruz -Date: Tue Dec 17 14:47:31 2024 +0000 - - AArch64: Improve codegen of AdvSIMD logf function family - - Load the polynomial evaluation coefficients into 2 vectors and use lanewise MLAs. - 8% improvement in throughput microbenchmark on Neoverse V1 for log2 and log, - and 2% for log10. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit d6e034f5b222a9ed1aeb5de0c0c7d0dda8b63da3) - -diff --git a/sysdeps/aarch64/fpu/log10f_advsimd.c b/sysdeps/aarch64/fpu/log10f_advsimd.c -index 82228b599a..0d792c3df9 100644 ---- a/sysdeps/aarch64/fpu/log10f_advsimd.c -+++ b/sysdeps/aarch64/fpu/log10f_advsimd.c -@@ -18,21 +18,25 @@ - . */ - - #include "v_math.h" --#include "poly_advsimd_f32.h" - - static const struct data - { -+ float32x4_t c0, c2, c4, c6, inv_ln10, ln2; - uint32x4_t off, offset_lower_bound; - uint16x8_t special_bound; - uint32x4_t mantissa_mask; -- float32x4_t poly[8]; -- float32x4_t inv_ln10, ln2; -+ float c1, c3, c5, c7; - } data = { - /* Use order 9 for log10(1+x), i.e. order 8 for log10(1+x)/x, with x in - [-1/3, 1/3] (offset=2/3). Max. relative error: 0x1.068ee468p-25. */ -- .poly = { V4 (-0x1.bcb79cp-3f), V4 (0x1.2879c8p-3f), V4 (-0x1.bcd472p-4f), -- V4 (0x1.6408f8p-4f), V4 (-0x1.246f8p-4f), V4 (0x1.f0e514p-5f), -- V4 (-0x1.0fc92cp-4f), V4 (0x1.f5f76ap-5f) }, -+ .c0 = V4 (-0x1.bcb79cp-3f), -+ .c1 = 0x1.2879c8p-3f, -+ .c2 = V4 (-0x1.bcd472p-4f), -+ .c3 = 0x1.6408f8p-4f, -+ .c4 = V4 (-0x1.246f8p-4f), -+ .c5 = 0x1.f0e514p-5f, -+ .c6 = V4 (-0x1.0fc92cp-4f), -+ .c7 = 0x1.f5f76ap-5f, - .ln2 = V4 (0x1.62e43p-1f), - .inv_ln10 = V4 (0x1.bcb7b2p-2f), - /* Lower bound is the smallest positive normal float 0x00800000. For -@@ -62,7 +66,7 @@ special_case (float32x4_t y, uint32x4_t u_off, float32x4_t p, float32x4_t r2, - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log10) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- -+ float32x4_t c1357 = vld1q_f32 (&d->c1); - /* To avoid having to mov x out of the way, keep u after offset has been - applied, and recover x by adding the offset back in the special-case - handler. */ -@@ -81,7 +85,16 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log10) (float32x4_t x) - - /* y = log10(1+r) + n * log10(2). */ - float32x4_t r2 = vmulq_f32 (r, r); -- float32x4_t poly = v_pw_horner_7_f32 (r, r2, d->poly); -+ -+ float32x4_t c01 = vfmaq_laneq_f32 (d->c0, r, c1357, 0); -+ float32x4_t c23 = vfmaq_laneq_f32 (d->c2, r, c1357, 1); -+ float32x4_t c45 = vfmaq_laneq_f32 (d->c4, r, c1357, 2); -+ float32x4_t c67 = vfmaq_laneq_f32 (d->c6, r, c1357, 3); -+ -+ float32x4_t p47 = vfmaq_f32 (c45, r2, c67); -+ float32x4_t p27 = vfmaq_f32 (c23, r2, p47); -+ float32x4_t poly = vfmaq_f32 (c01, r2, p27); -+ - /* y = Log10(2) * n + poly * InvLn(10). */ - float32x4_t y = vfmaq_f32 (r, d->ln2, n); - y = vmulq_f32 (y, d->inv_ln10); -diff --git a/sysdeps/aarch64/fpu/log2f_advsimd.c b/sysdeps/aarch64/fpu/log2f_advsimd.c -index 84effe4fe9..116c36c8e2 100644 ---- a/sysdeps/aarch64/fpu/log2f_advsimd.c -+++ b/sysdeps/aarch64/fpu/log2f_advsimd.c -@@ -18,22 +18,27 @@ - . */ - - #include "v_math.h" --#include "poly_advsimd_f32.h" - - static const struct data - { -+ float32x4_t c0, c2, c4, c6, c8; - uint32x4_t off, offset_lower_bound; - uint16x8_t special_bound; - uint32x4_t mantissa_mask; -- float32x4_t poly[9]; -+ float c1, c3, c5, c7; - } data = { - /* Coefficients generated using Remez algorithm approximate - log2(1+r)/r for r in [ -1/3, 1/3 ]. - rel error: 0x1.c4c4b0cp-26. */ -- .poly = { V4 (0x1.715476p0f), /* (float)(1 / ln(2)). */ -- V4 (-0x1.715458p-1f), V4 (0x1.ec701cp-2f), V4 (-0x1.7171a4p-2f), -- V4 (0x1.27a0b8p-2f), V4 (-0x1.e5143ep-3f), V4 (0x1.9d8ecap-3f), -- V4 (-0x1.c675bp-3f), V4 (0x1.9e495p-3f) }, -+ .c0 = V4 (0x1.715476p0f), /* (float)(1 / ln(2)). */ -+ .c1 = -0x1.715458p-1f, -+ .c2 = V4 (0x1.ec701cp-2f), -+ .c3 = -0x1.7171a4p-2f, -+ .c4 = V4 (0x1.27a0b8p-2f), -+ .c5 = -0x1.e5143ep-3f, -+ .c6 = V4 (0x1.9d8ecap-3f), -+ .c7 = -0x1.c675bp-3f, -+ .c8 = V4 (0x1.9e495p-3f), - /* Lower bound is the smallest positive normal float 0x00800000. For - optimised register use subnormals are detected after offset has been - subtracted, so lower bound is 0x0080000 - offset (which wraps around). */ -@@ -79,11 +84,21 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log2) (float32x4_t x) - - /* y = log2(1+r) + n. */ - float32x4_t r2 = vmulq_f32 (r, r); -- float32x4_t p = v_pw_horner_8_f32 (r, r2, d->poly); -+ -+ float32x4_t c1357 = vld1q_f32 (&d->c1); -+ float32x4_t c01 = vfmaq_laneq_f32 (d->c0, r, c1357, 0); -+ float32x4_t c23 = vfmaq_laneq_f32 (d->c2, r, c1357, 1); -+ float32x4_t c45 = vfmaq_laneq_f32 (d->c4, r, c1357, 2); -+ float32x4_t c67 = vfmaq_laneq_f32 (d->c6, r, c1357, 3); -+ float32x4_t p68 = vfmaq_f32 (c67, r2, d->c8); -+ float32x4_t p48 = vfmaq_f32 (c45, r2, p68); -+ float32x4_t p28 = vfmaq_f32 (c23, r2, p48); -+ float32x4_t p = vfmaq_f32 (c01, r2, p28); - - if (__glibc_unlikely (v_any_u16h (special))) - return special_case (n, u_off, p, r, special, d); - return vfmaq_f32 (n, p, r); - } -+ - libmvec_hidden_def (V_NAME_F1 (log2)) - HALF_WIDTH_ALIAS_F1 (log2) -diff --git a/sysdeps/aarch64/fpu/logf_advsimd.c b/sysdeps/aarch64/fpu/logf_advsimd.c -index c20dbfd6c0..d9e64c732d 100644 ---- a/sysdeps/aarch64/fpu/logf_advsimd.c -+++ b/sysdeps/aarch64/fpu/logf_advsimd.c -@@ -21,16 +21,19 @@ - - static const struct data - { -- uint32x4_t off, offset_lower_bound; -+ float32x4_t c2, c4, c6, ln2; -+ uint32x4_t off, offset_lower_bound, mantissa_mask; - uint16x8_t special_bound; -- uint32x4_t mantissa_mask; -- float32x4_t poly[7]; -- float32x4_t ln2; -+ float c1, c3, c5, c0; - } data = { - /* 3.34 ulp error. */ -- .poly = { V4 (-0x1.3e737cp-3f), V4 (0x1.5a9aa2p-3f), V4 (-0x1.4f9934p-3f), -- V4 (0x1.961348p-3f), V4 (-0x1.00187cp-2f), V4 (0x1.555d7cp-2f), -- V4 (-0x1.ffffc8p-2f) }, -+ .c0 = -0x1.3e737cp-3f, -+ .c1 = 0x1.5a9aa2p-3f, -+ .c2 = V4 (-0x1.4f9934p-3f), -+ .c3 = 0x1.961348p-3f, -+ .c4 = V4 (-0x1.00187cp-2f), -+ .c5 = 0x1.555d7cp-2f, -+ .c6 = V4 (-0x1.ffffc8p-2f), - .ln2 = V4 (0x1.62e43p-1f), - /* Lower bound is the smallest positive normal float 0x00800000. For - optimised register use subnormals are detected after offset has been -@@ -41,8 +44,6 @@ static const struct data - .mantissa_mask = V4 (0x007fffff) - }; - --#define P(i) d->poly[7 - i] -- - static float32x4_t VPCS_ATTR NOINLINE - special_case (float32x4_t p, uint32x4_t u_off, float32x4_t y, float32x4_t r2, - uint16x4_t cmp, const struct data *d) -@@ -55,33 +56,30 @@ special_case (float32x4_t p, uint32x4_t u_off, float32x4_t y, float32x4_t r2, - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (log) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- float32x4_t n, p, q, r, r2, y; -- uint32x4_t u, u_off; -- uint16x4_t cmp; -+ float32x4_t c1350 = vld1q_f32 (&d->c1); - - /* To avoid having to mov x out of the way, keep u after offset has been - applied, and recover x by adding the offset back in the special-case - handler. */ -- u_off = vreinterpretq_u32_f32 (x); -+ uint32x4_t u_off = vsubq_u32 (vreinterpretq_u32_f32 (x), d->off); - - /* x = 2^n * (1+r), where 2/3 < 1+r < 4/3. */ -- u_off = vsubq_u32 (u_off, d->off); -- n = vcvtq_f32_s32 ( -+ float32x4_t n = vcvtq_f32_s32 ( - vshrq_n_s32 (vreinterpretq_s32_u32 (u_off), 23)); /* signextend. */ -- u = vandq_u32 (u_off, d->mantissa_mask); -- u = vaddq_u32 (u, d->off); -- r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f)); -+ uint16x4_t cmp = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound), -+ vget_low_u16 (d->special_bound)); - -- cmp = vcge_u16 (vsubhn_u32 (u_off, d->offset_lower_bound), -- vget_low_u16 (d->special_bound)); -+ uint32x4_t u = vaddq_u32 (vandq_u32 (u_off, d->mantissa_mask), d->off); -+ float32x4_t r = vsubq_f32 (vreinterpretq_f32_u32 (u), v_f32 (1.0f)); - - /* y = log(1+r) + n*ln2. */ -- r2 = vmulq_f32 (r, r); -+ float32x4_t r2 = vmulq_f32 (r, r); - /* n*ln2 + r + r2*(P1 + r*P2 + r2*(P3 + r*P4 + r2*(P5 + r*P6 + r2*P7))). */ -- p = vfmaq_f32 (P (5), P (6), r); -- q = vfmaq_f32 (P (3), P (4), r); -- y = vfmaq_f32 (P (1), P (2), r); -- p = vfmaq_f32 (p, P (7), r2); -+ float32x4_t p = vfmaq_laneq_f32 (d->c2, r, c1350, 0); -+ float32x4_t q = vfmaq_laneq_f32 (d->c4, r, c1350, 1); -+ float32x4_t y = vfmaq_laneq_f32 (d->c6, r, c1350, 2); -+ p = vfmaq_laneq_f32 (p, r2, c1350, 3); -+ - q = vfmaq_f32 (q, p, r2); - y = vfmaq_f32 (y, q, r2); - p = vfmaq_f32 (r, d->ln2, n); - -commit 41dc9e7c2d80bc5e886950b8a7bd21f77c9793b3 -Author: Joana Cruz -Date: Tue Dec 17 14:49:30 2024 +0000 - - AArch64: Improve codegen of AdvSIMD atan(2)(f) - - Load the polynomial evaluation coefficients into 2 vectors and use lanewise MLAs. - 8% improvement in throughput microbenchmark on Neoverse V1. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 6914774b9d3460876d9ad4482782213ec01a752e) - -diff --git a/sysdeps/aarch64/fpu/atan2_advsimd.c b/sysdeps/aarch64/fpu/atan2_advsimd.c -index b1e7a9b8fc..1a8f02109f 100644 ---- a/sysdeps/aarch64/fpu/atan2_advsimd.c -+++ b/sysdeps/aarch64/fpu/atan2_advsimd.c -@@ -23,40 +23,57 @@ - - static const struct data - { -+ float64x2_t c0, c2, c4, c6, c8, c10, c12, c14, c16, c18; - float64x2_t pi_over_2; -- float64x2_t poly[20]; -+ double c1, c3, c5, c7, c9, c11, c13, c15, c17, c19; -+ uint64x2_t zeroinfnan, minustwo; - } data = { - /* Coefficients of polynomial P such that atan(x)~x+x*P(x^2) on -- the interval [2**-1022, 1.0]. */ -- .poly = { V2 (-0x1.5555555555555p-2), V2 (0x1.99999999996c1p-3), -- V2 (-0x1.2492492478f88p-3), V2 (0x1.c71c71bc3951cp-4), -- V2 (-0x1.745d160a7e368p-4), V2 (0x1.3b139b6a88ba1p-4), -- V2 (-0x1.11100ee084227p-4), V2 (0x1.e1d0f9696f63bp-5), -- V2 (-0x1.aebfe7b418581p-5), V2 (0x1.842dbe9b0d916p-5), -- V2 (-0x1.5d30140ae5e99p-5), V2 (0x1.338e31eb2fbbcp-5), -- V2 (-0x1.00e6eece7de8p-5), V2 (0x1.860897b29e5efp-6), -- V2 (-0x1.0051381722a59p-6), V2 (0x1.14e9dc19a4a4ep-7), -- V2 (-0x1.d0062b42fe3bfp-9), V2 (0x1.17739e210171ap-10), -- V2 (-0x1.ab24da7be7402p-13), V2 (0x1.358851160a528p-16), }, -+ [2**-1022, 1.0]. */ -+ .c0 = V2 (-0x1.5555555555555p-2), -+ .c1 = 0x1.99999999996c1p-3, -+ .c2 = V2 (-0x1.2492492478f88p-3), -+ .c3 = 0x1.c71c71bc3951cp-4, -+ .c4 = V2 (-0x1.745d160a7e368p-4), -+ .c5 = 0x1.3b139b6a88ba1p-4, -+ .c6 = V2 (-0x1.11100ee084227p-4), -+ .c7 = 0x1.e1d0f9696f63bp-5, -+ .c8 = V2 (-0x1.aebfe7b418581p-5), -+ .c9 = 0x1.842dbe9b0d916p-5, -+ .c10 = V2 (-0x1.5d30140ae5e99p-5), -+ .c11 = 0x1.338e31eb2fbbcp-5, -+ .c12 = V2 (-0x1.00e6eece7de8p-5), -+ .c13 = 0x1.860897b29e5efp-6, -+ .c14 = V2 (-0x1.0051381722a59p-6), -+ .c15 = 0x1.14e9dc19a4a4ep-7, -+ .c16 = V2 (-0x1.d0062b42fe3bfp-9), -+ .c17 = 0x1.17739e210171ap-10, -+ .c18 = V2 (-0x1.ab24da7be7402p-13), -+ .c19 = 0x1.358851160a528p-16, - .pi_over_2 = V2 (0x1.921fb54442d18p+0), -+ .zeroinfnan = V2 (2 * 0x7ff0000000000000ul - 1), -+ .minustwo = V2 (0xc000000000000000), - }; - - #define SignMask v_u64 (0x8000000000000000) - - /* Special cases i.e. 0, infinity, NaN (fall back to scalar calls). */ - static float64x2_t VPCS_ATTR NOINLINE --special_case (float64x2_t y, float64x2_t x, float64x2_t ret, uint64x2_t cmp) -+special_case (float64x2_t y, float64x2_t x, float64x2_t ret, -+ uint64x2_t sign_xy, uint64x2_t cmp) - { -+ /* Account for the sign of x and y. */ -+ ret = vreinterpretq_f64_u64 ( -+ veorq_u64 (vreinterpretq_u64_f64 (ret), sign_xy)); - return v_call2_f64 (atan2, y, x, ret, cmp); - } - - /* Returns 1 if input is the bit representation of 0, infinity or nan. */ - static inline uint64x2_t --zeroinfnan (uint64x2_t i) -+zeroinfnan (uint64x2_t i, const struct data *d) - { - /* (2 * i - 1) >= (2 * asuint64 (INFINITY) - 1). */ -- return vcgeq_u64 (vsubq_u64 (vaddq_u64 (i, i), v_u64 (1)), -- v_u64 (2 * asuint64 (INFINITY) - 1)); -+ return vcgeq_u64 (vsubq_u64 (vaddq_u64 (i, i), v_u64 (1)), d->zeroinfnan); - } - - /* Fast implementation of vector atan2. -@@ -66,12 +83,13 @@ zeroinfnan (uint64x2_t i) - want 0x1.92d628ab678cfp-1. */ - float64x2_t VPCS_ATTR V_NAME_D2 (atan2) (float64x2_t y, float64x2_t x) - { -- const struct data *data_ptr = ptr_barrier (&data); -+ const struct data *d = ptr_barrier (&data); - - uint64x2_t ix = vreinterpretq_u64_f64 (x); - uint64x2_t iy = vreinterpretq_u64_f64 (y); - -- uint64x2_t special_cases = vorrq_u64 (zeroinfnan (ix), zeroinfnan (iy)); -+ uint64x2_t special_cases -+ = vorrq_u64 (zeroinfnan (ix, d), zeroinfnan (iy, d)); - - uint64x2_t sign_x = vandq_u64 (ix, SignMask); - uint64x2_t sign_y = vandq_u64 (iy, SignMask); -@@ -81,18 +99,18 @@ float64x2_t VPCS_ATTR V_NAME_D2 (atan2) (float64x2_t y, float64x2_t x) - float64x2_t ay = vabsq_f64 (y); - - uint64x2_t pred_xlt0 = vcltzq_f64 (x); -- uint64x2_t pred_aygtax = vcgtq_f64 (ay, ax); -+ uint64x2_t pred_aygtax = vcagtq_f64 (y, x); - - /* Set up z for call to atan. */ - float64x2_t n = vbslq_f64 (pred_aygtax, vnegq_f64 (ax), ay); -- float64x2_t d = vbslq_f64 (pred_aygtax, ay, ax); -- float64x2_t z = vdivq_f64 (n, d); -+ float64x2_t q = vbslq_f64 (pred_aygtax, ay, ax); -+ float64x2_t z = vdivq_f64 (n, q); - - /* Work out the correct shift. */ -- float64x2_t shift = vreinterpretq_f64_u64 ( -- vandq_u64 (pred_xlt0, vreinterpretq_u64_f64 (v_f64 (-2.0)))); -+ float64x2_t shift -+ = vreinterpretq_f64_u64 (vandq_u64 (pred_xlt0, d->minustwo)); - shift = vbslq_f64 (pred_aygtax, vaddq_f64 (shift, v_f64 (1.0)), shift); -- shift = vmulq_f64 (shift, data_ptr->pi_over_2); -+ shift = vmulq_f64 (shift, d->pi_over_2); - - /* Calculate the polynomial approximation. - Use split Estrin scheme for P(z^2) with deg(P)=19. Use split instead of -@@ -103,20 +121,52 @@ float64x2_t VPCS_ATTR V_NAME_D2 (atan2) (float64x2_t y, float64x2_t x) - float64x2_t x2 = vmulq_f64 (z2, z2); - float64x2_t x4 = vmulq_f64 (x2, x2); - float64x2_t x8 = vmulq_f64 (x4, x4); -- float64x2_t ret -- = vfmaq_f64 (v_estrin_7_f64 (z2, x2, x4, data_ptr->poly), -- v_estrin_11_f64 (z2, x2, x4, x8, data_ptr->poly + 8), x8); -+ -+ float64x2_t c13 = vld1q_f64 (&d->c1); -+ float64x2_t c57 = vld1q_f64 (&d->c5); -+ float64x2_t c911 = vld1q_f64 (&d->c9); -+ float64x2_t c1315 = vld1q_f64 (&d->c13); -+ float64x2_t c1719 = vld1q_f64 (&d->c17); -+ -+ /* estrin_7. */ -+ float64x2_t p01 = vfmaq_laneq_f64 (d->c0, z2, c13, 0); -+ float64x2_t p23 = vfmaq_laneq_f64 (d->c2, z2, c13, 1); -+ float64x2_t p03 = vfmaq_f64 (p01, x2, p23); -+ -+ float64x2_t p45 = vfmaq_laneq_f64 (d->c4, z2, c57, 0); -+ float64x2_t p67 = vfmaq_laneq_f64 (d->c6, z2, c57, 1); -+ float64x2_t p47 = vfmaq_f64 (p45, x2, p67); -+ -+ float64x2_t p07 = vfmaq_f64 (p03, x4, p47); -+ -+ /* estrin_11. */ -+ float64x2_t p89 = vfmaq_laneq_f64 (d->c8, z2, c911, 0); -+ float64x2_t p1011 = vfmaq_laneq_f64 (d->c10, z2, c911, 1); -+ float64x2_t p811 = vfmaq_f64 (p89, x2, p1011); -+ -+ float64x2_t p1213 = vfmaq_laneq_f64 (d->c12, z2, c1315, 0); -+ float64x2_t p1415 = vfmaq_laneq_f64 (d->c14, z2, c1315, 1); -+ float64x2_t p1215 = vfmaq_f64 (p1213, x2, p1415); -+ -+ float64x2_t p1617 = vfmaq_laneq_f64 (d->c16, z2, c1719, 0); -+ float64x2_t p1819 = vfmaq_laneq_f64 (d->c18, z2, c1719, 1); -+ float64x2_t p1619 = vfmaq_f64 (p1617, x2, p1819); -+ -+ float64x2_t p815 = vfmaq_f64 (p811, x4, p1215); -+ float64x2_t p819 = vfmaq_f64 (p815, x8, p1619); -+ -+ float64x2_t ret = vfmaq_f64 (p07, p819, x8); - - /* Finalize. y = shift + z + z^3 * P(z^2). */ - ret = vfmaq_f64 (z, ret, vmulq_f64 (z2, z)); - ret = vaddq_f64 (ret, shift); - -+ if (__glibc_unlikely (v_any_u64 (special_cases))) -+ return special_case (y, x, ret, sign_xy, special_cases); -+ - /* Account for the sign of x and y. */ - ret = vreinterpretq_f64_u64 ( - veorq_u64 (vreinterpretq_u64_f64 (ret), sign_xy)); - -- if (__glibc_unlikely (v_any_u64 (special_cases))) -- return special_case (y, x, ret, special_cases); -- - return ret; - } -diff --git a/sysdeps/aarch64/fpu/atan2f_advsimd.c b/sysdeps/aarch64/fpu/atan2f_advsimd.c -index 56e610caf1..88daacd76c 100644 ---- a/sysdeps/aarch64/fpu/atan2f_advsimd.c -+++ b/sysdeps/aarch64/fpu/atan2f_advsimd.c -@@ -22,34 +22,39 @@ - - static const struct data - { -- float32x4_t poly[8]; -- float32x4_t pi_over_2; -+ float32x4_t c0, pi_over_2, c4, c6, c2; -+ float c1, c3, c5, c7; -+ uint32x4_t comp_const; - } data = { - /* Coefficients of polynomial P such that atan(x)~x+x*P(x^2) on - [2**-128, 1.0]. - Generated using fpminimax between FLT_MIN and 1. */ -- .poly = { V4 (-0x1.55555p-2f), V4 (0x1.99935ep-3f), V4 (-0x1.24051ep-3f), -- V4 (0x1.bd7368p-4f), V4 (-0x1.491f0ep-4f), V4 (0x1.93a2c0p-5f), -- V4 (-0x1.4c3c60p-6f), V4 (0x1.01fd88p-8f) }, -- .pi_over_2 = V4 (0x1.921fb6p+0f), -+ .c0 = V4 (-0x1.55555p-2f), .c1 = 0x1.99935ep-3f, -+ .c2 = V4 (-0x1.24051ep-3f), .c3 = 0x1.bd7368p-4f, -+ .c4 = V4 (-0x1.491f0ep-4f), .c5 = 0x1.93a2c0p-5f, -+ .c6 = V4 (-0x1.4c3c60p-6f), .c7 = 0x1.01fd88p-8f, -+ .pi_over_2 = V4 (0x1.921fb6p+0f), .comp_const = V4 (2 * 0x7f800000lu - 1), - }; - - #define SignMask v_u32 (0x80000000) - - /* Special cases i.e. 0, infinity and nan (fall back to scalar calls). */ - static float32x4_t VPCS_ATTR NOINLINE --special_case (float32x4_t y, float32x4_t x, float32x4_t ret, uint32x4_t cmp) -+special_case (float32x4_t y, float32x4_t x, float32x4_t ret, -+ uint32x4_t sign_xy, uint32x4_t cmp) - { -+ /* Account for the sign of y. */ -+ ret = vreinterpretq_f32_u32 ( -+ veorq_u32 (vreinterpretq_u32_f32 (ret), sign_xy)); - return v_call2_f32 (atan2f, y, x, ret, cmp); - } - - /* Returns 1 if input is the bit representation of 0, infinity or nan. */ - static inline uint32x4_t --zeroinfnan (uint32x4_t i) -+zeroinfnan (uint32x4_t i, const struct data *d) - { - /* 2 * i - 1 >= 2 * 0x7f800000lu - 1. */ -- return vcgeq_u32 (vsubq_u32 (vmulq_n_u32 (i, 2), v_u32 (1)), -- v_u32 (2 * 0x7f800000lu - 1)); -+ return vcgeq_u32 (vsubq_u32 (vmulq_n_u32 (i, 2), v_u32 (1)), d->comp_const); - } - - /* Fast implementation of vector atan2f. Maximum observed error is -@@ -58,12 +63,13 @@ zeroinfnan (uint32x4_t i) - want 0x1.967f00p-1. */ - float32x4_t VPCS_ATTR NOINLINE V_NAME_F2 (atan2) (float32x4_t y, float32x4_t x) - { -- const struct data *data_ptr = ptr_barrier (&data); -+ const struct data *d = ptr_barrier (&data); - - uint32x4_t ix = vreinterpretq_u32_f32 (x); - uint32x4_t iy = vreinterpretq_u32_f32 (y); - -- uint32x4_t special_cases = vorrq_u32 (zeroinfnan (ix), zeroinfnan (iy)); -+ uint32x4_t special_cases -+ = vorrq_u32 (zeroinfnan (ix, d), zeroinfnan (iy, d)); - - uint32x4_t sign_x = vandq_u32 (ix, SignMask); - uint32x4_t sign_y = vandq_u32 (iy, SignMask); -@@ -77,14 +83,14 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F2 (atan2) (float32x4_t y, float32x4_t x) - - /* Set up z for call to atanf. */ - float32x4_t n = vbslq_f32 (pred_aygtax, vnegq_f32 (ax), ay); -- float32x4_t d = vbslq_f32 (pred_aygtax, ay, ax); -- float32x4_t z = vdivq_f32 (n, d); -+ float32x4_t q = vbslq_f32 (pred_aygtax, ay, ax); -+ float32x4_t z = vdivq_f32 (n, q); - - /* Work out the correct shift. */ - float32x4_t shift = vreinterpretq_f32_u32 ( - vandq_u32 (pred_xlt0, vreinterpretq_u32_f32 (v_f32 (-2.0f)))); - shift = vbslq_f32 (pred_aygtax, vaddq_f32 (shift, v_f32 (1.0f)), shift); -- shift = vmulq_f32 (shift, data_ptr->pi_over_2); -+ shift = vmulq_f32 (shift, d->pi_over_2); - - /* Calculate the polynomial approximation. - Use 2-level Estrin scheme for P(z^2) with deg(P)=7. However, -@@ -96,23 +102,27 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F2 (atan2) (float32x4_t y, float32x4_t x) - float32x4_t z2 = vmulq_f32 (z, z); - float32x4_t z4 = vmulq_f32 (z2, z2); - -- float32x4_t ret = vfmaq_f32 ( -- v_pairwise_poly_3_f32 (z2, z4, data_ptr->poly), z4, -- vmulq_f32 (z4, v_pairwise_poly_3_f32 (z2, z4, data_ptr->poly + 4))); -+ float32x4_t c1357 = vld1q_f32 (&d->c1); -+ float32x4_t p01 = vfmaq_laneq_f32 (d->c0, z2, c1357, 0); -+ float32x4_t p23 = vfmaq_laneq_f32 (d->c2, z2, c1357, 1); -+ float32x4_t p45 = vfmaq_laneq_f32 (d->c4, z2, c1357, 2); -+ float32x4_t p67 = vfmaq_laneq_f32 (d->c6, z2, c1357, 3); -+ float32x4_t p03 = vfmaq_f32 (p01, z4, p23); -+ float32x4_t p47 = vfmaq_f32 (p45, z4, p67); -+ -+ float32x4_t ret = vfmaq_f32 (p03, z4, vmulq_f32 (z4, p47)); - - /* y = shift + z * P(z^2). */ - ret = vaddq_f32 (vfmaq_f32 (z, ret, vmulq_f32 (z2, z)), shift); - -- /* Account for the sign of y. */ -- ret = vreinterpretq_f32_u32 ( -- veorq_u32 (vreinterpretq_u32_f32 (ret), sign_xy)); -- - if (__glibc_unlikely (v_any_u32 (special_cases))) - { -- return special_case (y, x, ret, special_cases); -+ return special_case (y, x, ret, sign_xy, special_cases); - } - -- return ret; -+ /* Account for the sign of y. */ -+ return vreinterpretq_f32_u32 ( -+ veorq_u32 (vreinterpretq_u32_f32 (ret), sign_xy)); - } - libmvec_hidden_def (V_NAME_F2 (atan2)) - HALF_WIDTH_ALIAS_F2(atan2) -diff --git a/sysdeps/aarch64/fpu/atan_advsimd.c b/sysdeps/aarch64/fpu/atan_advsimd.c -index a962be0f78..14f1809796 100644 ---- a/sysdeps/aarch64/fpu/atan_advsimd.c -+++ b/sysdeps/aarch64/fpu/atan_advsimd.c -@@ -22,21 +22,22 @@ - - static const struct data - { -+ float64x2_t c0, c2, c4, c6, c8, c10, c12, c14, c16, c18; - float64x2_t pi_over_2; -- float64x2_t poly[20]; -+ double c1, c3, c5, c7, c9, c11, c13, c15, c17, c19; - } data = { - /* Coefficients of polynomial P such that atan(x)~x+x*P(x^2) on - [2**-1022, 1.0]. */ -- .poly = { V2 (-0x1.5555555555555p-2), V2 (0x1.99999999996c1p-3), -- V2 (-0x1.2492492478f88p-3), V2 (0x1.c71c71bc3951cp-4), -- V2 (-0x1.745d160a7e368p-4), V2 (0x1.3b139b6a88ba1p-4), -- V2 (-0x1.11100ee084227p-4), V2 (0x1.e1d0f9696f63bp-5), -- V2 (-0x1.aebfe7b418581p-5), V2 (0x1.842dbe9b0d916p-5), -- V2 (-0x1.5d30140ae5e99p-5), V2 (0x1.338e31eb2fbbcp-5), -- V2 (-0x1.00e6eece7de8p-5), V2 (0x1.860897b29e5efp-6), -- V2 (-0x1.0051381722a59p-6), V2 (0x1.14e9dc19a4a4ep-7), -- V2 (-0x1.d0062b42fe3bfp-9), V2 (0x1.17739e210171ap-10), -- V2 (-0x1.ab24da7be7402p-13), V2 (0x1.358851160a528p-16), }, -+ .c0 = V2 (-0x1.5555555555555p-2), .c1 = 0x1.99999999996c1p-3, -+ .c2 = V2 (-0x1.2492492478f88p-3), .c3 = 0x1.c71c71bc3951cp-4, -+ .c4 = V2 (-0x1.745d160a7e368p-4), .c5 = 0x1.3b139b6a88ba1p-4, -+ .c6 = V2 (-0x1.11100ee084227p-4), .c7 = 0x1.e1d0f9696f63bp-5, -+ .c8 = V2 (-0x1.aebfe7b418581p-5), .c9 = 0x1.842dbe9b0d916p-5, -+ .c10 = V2 (-0x1.5d30140ae5e99p-5), .c11 = 0x1.338e31eb2fbbcp-5, -+ .c12 = V2 (-0x1.00e6eece7de8p-5), .c13 = 0x1.860897b29e5efp-6, -+ .c14 = V2 (-0x1.0051381722a59p-6), .c15 = 0x1.14e9dc19a4a4ep-7, -+ .c16 = V2 (-0x1.d0062b42fe3bfp-9), .c17 = 0x1.17739e210171ap-10, -+ .c18 = V2 (-0x1.ab24da7be7402p-13), .c19 = 0x1.358851160a528p-16, - .pi_over_2 = V2 (0x1.921fb54442d18p+0), - }; - -@@ -52,6 +53,11 @@ static const struct data - float64x2_t VPCS_ATTR V_NAME_D1 (atan) (float64x2_t x) - { - const struct data *d = ptr_barrier (&data); -+ float64x2_t c13 = vld1q_f64 (&d->c1); -+ float64x2_t c57 = vld1q_f64 (&d->c5); -+ float64x2_t c911 = vld1q_f64 (&d->c9); -+ float64x2_t c1315 = vld1q_f64 (&d->c13); -+ float64x2_t c1719 = vld1q_f64 (&d->c17); - - /* Small cases, infs and nans are supported by our approximation technique, - but do not set fenv flags correctly. Only trigger special case if we need -@@ -90,9 +96,35 @@ float64x2_t VPCS_ATTR V_NAME_D1 (atan) (float64x2_t x) - float64x2_t x2 = vmulq_f64 (z2, z2); - float64x2_t x4 = vmulq_f64 (x2, x2); - float64x2_t x8 = vmulq_f64 (x4, x4); -- float64x2_t y -- = vfmaq_f64 (v_estrin_7_f64 (z2, x2, x4, d->poly), -- v_estrin_11_f64 (z2, x2, x4, x8, d->poly + 8), x8); -+ -+ /* estrin_7. */ -+ float64x2_t p01 = vfmaq_laneq_f64 (d->c0, z2, c13, 0); -+ float64x2_t p23 = vfmaq_laneq_f64 (d->c2, z2, c13, 1); -+ float64x2_t p03 = vfmaq_f64 (p01, x2, p23); -+ -+ float64x2_t p45 = vfmaq_laneq_f64 (d->c4, z2, c57, 0); -+ float64x2_t p67 = vfmaq_laneq_f64 (d->c6, z2, c57, 1); -+ float64x2_t p47 = vfmaq_f64 (p45, x2, p67); -+ -+ float64x2_t p07 = vfmaq_f64 (p03, x4, p47); -+ -+ /* estrin_11. */ -+ float64x2_t p89 = vfmaq_laneq_f64 (d->c8, z2, c911, 0); -+ float64x2_t p1011 = vfmaq_laneq_f64 (d->c10, z2, c911, 1); -+ float64x2_t p811 = vfmaq_f64 (p89, x2, p1011); -+ -+ float64x2_t p1213 = vfmaq_laneq_f64 (d->c12, z2, c1315, 0); -+ float64x2_t p1415 = vfmaq_laneq_f64 (d->c14, z2, c1315, 1); -+ float64x2_t p1215 = vfmaq_f64 (p1213, x2, p1415); -+ -+ float64x2_t p1617 = vfmaq_laneq_f64 (d->c16, z2, c1719, 0); -+ float64x2_t p1819 = vfmaq_laneq_f64 (d->c18, z2, c1719, 1); -+ float64x2_t p1619 = vfmaq_f64 (p1617, x2, p1819); -+ -+ float64x2_t p815 = vfmaq_f64 (p811, x4, p1215); -+ float64x2_t p819 = vfmaq_f64 (p815, x8, p1619); -+ -+ float64x2_t y = vfmaq_f64 (p07, p819, x8); - - /* Finalize. y = shift + z + z^3 * P(z^2). */ - y = vfmaq_f64 (az, y, vmulq_f64 (z2, az)); - -commit bf2b60a56036c951a798845223a2e04cc48507e4 -Author: Joana Cruz -Date: Tue Dec 17 14:50:33 2024 +0000 - - AArch64: Improve codegen of AdvSIMD expf family - - Load the polynomial evaluation coefficients into 2 vectors and use lanewise MLAs. - Also use intrinsics instead of native operations. - expf: 3% improvement in throughput microbenchmark on Neoverse V1, exp2f: 5%, - exp10f: 13%, coshf: 14%. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit cff9648d0b50d19cdaf685f6767add040d4e1a8e) - -diff --git a/sysdeps/aarch64/fpu/coshf_advsimd.c b/sysdeps/aarch64/fpu/coshf_advsimd.c -index c1ab4923b8..cd5c866521 100644 ---- a/sysdeps/aarch64/fpu/coshf_advsimd.c -+++ b/sysdeps/aarch64/fpu/coshf_advsimd.c -@@ -23,19 +23,27 @@ - static const struct data - { - struct v_expf_data expf_consts; -- uint32x4_t tiny_bound, special_bound; -+ uint32x4_t tiny_bound; -+ float32x4_t bound; -+#if WANT_SIMD_EXCEPT -+ uint32x4_t special_bound; -+#endif - } data = { - .expf_consts = V_EXPF_DATA, - .tiny_bound = V4 (0x20000000), /* 0x1p-63: Round to 1 below this. */ - /* 0x1.5a92d8p+6: expf overflows above this, so have to use special case. */ -+ .bound = V4 (0x1.5a92d8p+6), -+#if WANT_SIMD_EXCEPT - .special_bound = V4 (0x42ad496c), -+#endif - }; - - #if !WANT_SIMD_EXCEPT - static float32x4_t NOINLINE VPCS_ATTR --special_case (float32x4_t x, float32x4_t y, uint32x4_t special) -+special_case (float32x4_t x, float32x4_t half_t, float32x4_t half_over_t, -+ uint32x4_t special) - { -- return v_call_f32 (coshf, x, y, special); -+ return v_call_f32 (coshf, x, vaddq_f32 (half_t, half_over_t), special); - } - #endif - -@@ -47,14 +55,13 @@ float32x4_t VPCS_ATTR V_NAME_F1 (cosh) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); - -- float32x4_t ax = vabsq_f32 (x); -- uint32x4_t iax = vreinterpretq_u32_f32 (ax); -- uint32x4_t special = vcgeq_u32 (iax, d->special_bound); -- - #if WANT_SIMD_EXCEPT - /* If fp exceptions are to be triggered correctly, fall back to the scalar - variant for all inputs if any input is a special value or above the bound - at which expf overflows. */ -+ float32x4_t ax = vabsq_f32 (x); -+ uint32x4_t iax = vreinterpretq_u32_f32 (ax); -+ uint32x4_t special = vcgeq_u32 (iax, d->special_bound); - if (__glibc_unlikely (v_any_u32 (special))) - return v_call_f32 (coshf, x, x, v_u32 (-1)); - -@@ -63,10 +70,13 @@ float32x4_t VPCS_ATTR V_NAME_F1 (cosh) (float32x4_t x) - input to 0, which will generate no exceptions. */ - if (__glibc_unlikely (v_any_u32 (tiny))) - ax = v_zerofy_f32 (ax, tiny); -+ float32x4_t t = v_expf_inline (ax, &d->expf_consts); -+#else -+ uint32x4_t special = vcageq_f32 (x, d->bound); -+ float32x4_t t = v_expf_inline (x, &d->expf_consts); - #endif - - /* Calculate cosh by exp(x) / 2 + exp(-x) / 2. */ -- float32x4_t t = v_expf_inline (ax, &d->expf_consts); - float32x4_t half_t = vmulq_n_f32 (t, 0.5); - float32x4_t half_over_t = vdivq_f32 (v_f32 (0.5), t); - -@@ -75,7 +85,7 @@ float32x4_t VPCS_ATTR V_NAME_F1 (cosh) (float32x4_t x) - return vbslq_f32 (tiny, v_f32 (1), vaddq_f32 (half_t, half_over_t)); - #else - if (__glibc_unlikely (v_any_u32 (special))) -- return special_case (x, vaddq_f32 (half_t, half_over_t), special); -+ return special_case (x, half_t, half_over_t, special); - #endif - - return vaddq_f32 (half_t, half_over_t); -diff --git a/sysdeps/aarch64/fpu/exp10f_advsimd.c b/sysdeps/aarch64/fpu/exp10f_advsimd.c -index cf53e73290..55d9cd83f2 100644 ---- a/sysdeps/aarch64/fpu/exp10f_advsimd.c -+++ b/sysdeps/aarch64/fpu/exp10f_advsimd.c -@@ -18,16 +18,15 @@ - . */ - - #include "v_math.h" --#include "poly_advsimd_f32.h" - - #define ScaleBound 192.0f - - static const struct data - { -- float32x4_t poly[5]; -- float log10_2_and_inv[4]; -- float32x4_t shift; -- -+ float32x4_t c0, c1, c3; -+ float log10_2_high, log10_2_low, c2, c4; -+ float32x4_t inv_log10_2, special_bound; -+ uint32x4_t exponent_bias, special_offset, special_bias; - #if !WANT_SIMD_EXCEPT - float32x4_t scale_thresh; - #endif -@@ -37,19 +36,24 @@ static const struct data - rel error: 0x1.89dafa3p-24 - abs error: 0x1.167d55p-23 in [-log10(2)/2, log10(2)/2] - maxerr: 1.85943 +0.5 ulp. */ -- .poly = { V4 (0x1.26bb16p+1f), V4 (0x1.5350d2p+1f), V4 (0x1.04744ap+1f), -- V4 (0x1.2d8176p+0f), V4 (0x1.12b41ap-1f) }, -- .shift = V4 (0x1.8p23f), -- -- /* Stores constants 1/log10(2), log10(2)_high, log10(2)_low, 0. */ -- .log10_2_and_inv = { 0x1.a934fp+1, 0x1.344136p-2, -0x1.ec10cp-27, 0 }, -+ .c0 = V4 (0x1.26bb16p+1f), -+ .c1 = V4 (0x1.5350d2p+1f), -+ .c2 = 0x1.04744ap+1f, -+ .c3 = V4 (0x1.2d8176p+0f), -+ .c4 = 0x1.12b41ap-1f, -+ .inv_log10_2 = V4 (0x1.a934fp+1), -+ .log10_2_high = 0x1.344136p-2, -+ .log10_2_low = 0x1.ec10cp-27, -+ /* rint (log2 (2^127 / (1 + sqrt (2)))). */ -+ .special_bound = V4 (126.0f), -+ .exponent_bias = V4 (0x3f800000), -+ .special_offset = V4 (0x82000000), -+ .special_bias = V4 (0x7f000000), - #if !WANT_SIMD_EXCEPT - .scale_thresh = V4 (ScaleBound) - #endif - }; - --#define ExponentBias v_u32 (0x3f800000) -- - #if WANT_SIMD_EXCEPT - - # define SpecialBound 38.0f /* rint(log10(2^127)). */ -@@ -67,17 +71,15 @@ special_case (float32x4_t x, float32x4_t y, uint32x4_t cmp) - - #else - --# define SpecialBound 126.0f /* rint (log2 (2^127 / (1 + sqrt (2)))). */ --# define SpecialOffset v_u32 (0x82000000) --# define SpecialBias v_u32 (0x7f000000) -+# define SpecialBound 126.0f - - static float32x4_t VPCS_ATTR NOINLINE - special_case (float32x4_t poly, float32x4_t n, uint32x4_t e, uint32x4_t cmp1, - float32x4_t scale, const struct data *d) - { - /* 2^n may overflow, break it up into s1*s2. */ -- uint32x4_t b = vandq_u32 (vclezq_f32 (n), SpecialOffset); -- float32x4_t s1 = vreinterpretq_f32_u32 (vaddq_u32 (b, SpecialBias)); -+ uint32x4_t b = vandq_u32 (vclezq_f32 (n), d->special_offset); -+ float32x4_t s1 = vreinterpretq_f32_u32 (vaddq_u32 (b, d->special_bias)); - float32x4_t s2 = vreinterpretq_f32_u32 (vsubq_u32 (e, b)); - uint32x4_t cmp2 = vcagtq_f32 (n, d->scale_thresh); - float32x4_t r2 = vmulq_f32 (s1, s1); -@@ -112,23 +114,23 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp10) (float32x4_t x) - /* exp10(x) = 2^n * 10^r = 2^n * (1 + poly (r)), - with poly(r) in [1/sqrt(2), sqrt(2)] and - x = r + n * log10 (2), with r in [-log10(2)/2, log10(2)/2]. */ -- float32x4_t log10_2_and_inv = vld1q_f32 (d->log10_2_and_inv); -- float32x4_t z = vfmaq_laneq_f32 (d->shift, x, log10_2_and_inv, 0); -- float32x4_t n = vsubq_f32 (z, d->shift); -- float32x4_t r = vfmsq_laneq_f32 (x, n, log10_2_and_inv, 1); -- r = vfmsq_laneq_f32 (r, n, log10_2_and_inv, 2); -- uint32x4_t e = vshlq_n_u32 (vreinterpretq_u32_f32 (z), 23); -+ float32x4_t log10_2_c24 = vld1q_f32 (&d->log10_2_high); -+ float32x4_t n = vrndaq_f32 (vmulq_f32 (x, d->inv_log10_2)); -+ float32x4_t r = vfmsq_laneq_f32 (x, n, log10_2_c24, 0); -+ r = vfmaq_laneq_f32 (r, n, log10_2_c24, 1); -+ uint32x4_t e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtaq_s32_f32 (n)), 23); - -- float32x4_t scale = vreinterpretq_f32_u32 (vaddq_u32 (e, ExponentBias)); -+ float32x4_t scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias)); - - #if !WANT_SIMD_EXCEPT -- uint32x4_t cmp = vcagtq_f32 (n, v_f32 (SpecialBound)); -+ uint32x4_t cmp = vcagtq_f32 (n, d->special_bound); - #endif - - float32x4_t r2 = vmulq_f32 (r, r); -- float32x4_t poly -- = vfmaq_f32 (vmulq_f32 (r, d->poly[0]), -- v_pairwise_poly_3_f32 (r, r2, d->poly + 1), r2); -+ float32x4_t p12 = vfmaq_laneq_f32 (d->c1, r, log10_2_c24, 2); -+ float32x4_t p34 = vfmaq_laneq_f32 (d->c3, r, log10_2_c24, 3); -+ float32x4_t p14 = vfmaq_f32 (p12, r2, p34); -+ float32x4_t poly = vfmaq_f32 (vmulq_f32 (r, d->c0), p14, r2); - - if (__glibc_unlikely (v_any_u32 (cmp))) - #if WANT_SIMD_EXCEPT -diff --git a/sysdeps/aarch64/fpu/exp2f_advsimd.c b/sysdeps/aarch64/fpu/exp2f_advsimd.c -index 69e0b193a1..a4220da63c 100644 ---- a/sysdeps/aarch64/fpu/exp2f_advsimd.c -+++ b/sysdeps/aarch64/fpu/exp2f_advsimd.c -@@ -21,24 +21,28 @@ - - static const struct data - { -- float32x4_t poly[5]; -- uint32x4_t exponent_bias; -+ float32x4_t c1, c3; -+ uint32x4_t exponent_bias, special_offset, special_bias; - #if !WANT_SIMD_EXCEPT -- float32x4_t special_bound, scale_thresh; -+ float32x4_t scale_thresh, special_bound; - #endif -+ float c0, c2, c4, zero; - } data = { - /* maxerr: 1.962 ulp. */ -- .poly = { V4 (0x1.59977ap-10f), V4 (0x1.3ce9e4p-7f), V4 (0x1.c6bd32p-5f), -- V4 (0x1.ebf9bcp-3f), V4 (0x1.62e422p-1f) }, -+ .c0 = 0x1.59977ap-10f, -+ .c1 = V4 (0x1.3ce9e4p-7f), -+ .c2 = 0x1.c6bd32p-5f, -+ .c3 = V4 (0x1.ebf9bcp-3f), -+ .c4 = 0x1.62e422p-1f, - .exponent_bias = V4 (0x3f800000), -+ .special_offset = V4 (0x82000000), -+ .special_bias = V4 (0x7f000000), - #if !WANT_SIMD_EXCEPT - .special_bound = V4 (126.0f), - .scale_thresh = V4 (192.0f), - #endif - }; - --#define C(i) d->poly[i] -- - #if WANT_SIMD_EXCEPT - - # define TinyBound v_u32 (0x20000000) /* asuint (0x1p-63). */ -@@ -55,16 +59,13 @@ special_case (float32x4_t x, float32x4_t y, uint32x4_t cmp) - - #else - --# define SpecialOffset v_u32 (0x82000000) --# define SpecialBias v_u32 (0x7f000000) -- - static float32x4_t VPCS_ATTR NOINLINE - special_case (float32x4_t poly, float32x4_t n, uint32x4_t e, uint32x4_t cmp1, - float32x4_t scale, const struct data *d) - { - /* 2^n may overflow, break it up into s1*s2. */ -- uint32x4_t b = vandq_u32 (vclezq_f32 (n), SpecialOffset); -- float32x4_t s1 = vreinterpretq_f32_u32 (vaddq_u32 (b, SpecialBias)); -+ uint32x4_t b = vandq_u32 (vclezq_f32 (n), d->special_offset); -+ float32x4_t s1 = vreinterpretq_f32_u32 (vaddq_u32 (b, d->special_bias)); - float32x4_t s2 = vreinterpretq_f32_u32 (vsubq_u32 (e, b)); - uint32x4_t cmp2 = vcagtq_f32 (n, d->scale_thresh); - float32x4_t r2 = vmulq_f32 (s1, s1); -@@ -80,13 +81,11 @@ special_case (float32x4_t poly, float32x4_t n, uint32x4_t e, uint32x4_t cmp1, - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp2) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- float32x4_t n, r, r2, scale, p, q, poly; -- uint32x4_t cmp, e; - - #if WANT_SIMD_EXCEPT - /* asuint(|x|) - TinyBound >= BigBound - TinyBound. */ - uint32x4_t ia = vreinterpretq_u32_f32 (vabsq_f32 (x)); -- cmp = vcgeq_u32 (vsubq_u32 (ia, TinyBound), SpecialBound); -+ uint32x4_t cmp = vcgeq_u32 (vsubq_u32 (ia, TinyBound), SpecialBound); - float32x4_t xm = x; - /* If any lanes are special, mask them with 1 and retain a copy of x to allow - special_case to fix special lanes later. This is only necessary if fenv -@@ -95,23 +94,24 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp2) (float32x4_t x) - x = vbslq_f32 (cmp, v_f32 (1), x); - #endif - -- /* exp2(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] -- x = n + r, with r in [-1/2, 1/2]. */ -- n = vrndaq_f32 (x); -- r = vsubq_f32 (x, n); -- e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtaq_s32_f32 (x)), 23); -- scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias)); -+ /* exp2(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] -+ x = n + r, with r in [-1/2, 1/2]. */ -+ float32x4_t n = vrndaq_f32 (x); -+ float32x4_t r = vsubq_f32 (x, n); -+ uint32x4_t e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtaq_s32_f32 (x)), 23); -+ float32x4_t scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias)); - - #if !WANT_SIMD_EXCEPT -- cmp = vcagtq_f32 (n, d->special_bound); -+ uint32x4_t cmp = vcagtq_f32 (n, d->special_bound); - #endif - -- r2 = vmulq_f32 (r, r); -- p = vfmaq_f32 (C (1), C (0), r); -- q = vfmaq_f32 (C (3), C (2), r); -+ float32x4_t c024 = vld1q_f32 (&d->c0); -+ float32x4_t r2 = vmulq_f32 (r, r); -+ float32x4_t p = vfmaq_laneq_f32 (d->c1, r, c024, 0); -+ float32x4_t q = vfmaq_laneq_f32 (d->c3, r, c024, 1); - q = vfmaq_f32 (q, p, r2); -- p = vmulq_f32 (C (4), r); -- poly = vfmaq_f32 (p, q, r2); -+ p = vmulq_laneq_f32 (r, c024, 2); -+ float32x4_t poly = vfmaq_f32 (p, q, r2); - - if (__glibc_unlikely (v_any_u32 (cmp))) - #if WANT_SIMD_EXCEPT -diff --git a/sysdeps/aarch64/fpu/expf_advsimd.c b/sysdeps/aarch64/fpu/expf_advsimd.c -index 5c9cb72620..70f137e2e5 100644 ---- a/sysdeps/aarch64/fpu/expf_advsimd.c -+++ b/sysdeps/aarch64/fpu/expf_advsimd.c -@@ -21,20 +21,25 @@ - - static const struct data - { -- float32x4_t poly[5]; -- float32x4_t inv_ln2, ln2_hi, ln2_lo; -- uint32x4_t exponent_bias; -+ float32x4_t c1, c3, c4, inv_ln2; -+ float ln2_hi, ln2_lo, c0, c2; -+ uint32x4_t exponent_bias, special_offset, special_bias; - #if !WANT_SIMD_EXCEPT - float32x4_t special_bound, scale_thresh; - #endif - } data = { - /* maxerr: 1.45358 +0.5 ulp. */ -- .poly = { V4 (0x1.0e4020p-7f), V4 (0x1.573e2ep-5f), V4 (0x1.555e66p-3f), -- V4 (0x1.fffdb6p-2f), V4 (0x1.ffffecp-1f) }, -+ .c0 = 0x1.0e4020p-7f, -+ .c1 = V4 (0x1.573e2ep-5f), -+ .c2 = 0x1.555e66p-3f, -+ .c3 = V4 (0x1.fffdb6p-2f), -+ .c4 = V4 (0x1.ffffecp-1f), - .inv_ln2 = V4 (0x1.715476p+0f), -- .ln2_hi = V4 (0x1.62e4p-1f), -- .ln2_lo = V4 (0x1.7f7d1cp-20f), -+ .ln2_hi = 0x1.62e4p-1f, -+ .ln2_lo = 0x1.7f7d1cp-20f, - .exponent_bias = V4 (0x3f800000), -+ .special_offset = V4 (0x82000000), -+ .special_bias = V4 (0x7f000000), - #if !WANT_SIMD_EXCEPT - .special_bound = V4 (126.0f), - .scale_thresh = V4 (192.0f), -@@ -59,19 +64,17 @@ special_case (float32x4_t x, float32x4_t y, uint32x4_t cmp) - - #else - --# define SpecialOffset v_u32 (0x82000000) --# define SpecialBias v_u32 (0x7f000000) -- - static float32x4_t VPCS_ATTR NOINLINE - special_case (float32x4_t poly, float32x4_t n, uint32x4_t e, uint32x4_t cmp1, - float32x4_t scale, const struct data *d) - { - /* 2^n may overflow, break it up into s1*s2. */ -- uint32x4_t b = vandq_u32 (vclezq_f32 (n), SpecialOffset); -- float32x4_t s1 = vreinterpretq_f32_u32 (vaddq_u32 (b, SpecialBias)); -+ uint32x4_t b = vandq_u32 (vclezq_f32 (n), d->special_offset); -+ float32x4_t s1 = vreinterpretq_f32_u32 (vaddq_u32 (b, d->special_bias)); - float32x4_t s2 = vreinterpretq_f32_u32 (vsubq_u32 (e, b)); - uint32x4_t cmp2 = vcagtq_f32 (n, d->scale_thresh); - float32x4_t r2 = vmulq_f32 (s1, s1); -+ // (s2 + p*s2)*s1 = s2(p+1)s1 - float32x4_t r1 = vmulq_f32 (vfmaq_f32 (s2, poly, s2), s1); - /* Similar to r1 but avoids double rounding in the subnormal range. */ - float32x4_t r0 = vfmaq_f32 (scale, poly, scale); -@@ -84,12 +87,11 @@ special_case (float32x4_t poly, float32x4_t n, uint32x4_t e, uint32x4_t cmp1, - float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp) (float32x4_t x) - { - const struct data *d = ptr_barrier (&data); -- float32x4_t n, r, r2, scale, p, q, poly; -- uint32x4_t cmp, e; -+ float32x4_t ln2_c02 = vld1q_f32 (&d->ln2_hi); - - #if WANT_SIMD_EXCEPT - /* asuint(x) - TinyBound >= BigBound - TinyBound. */ -- cmp = vcgeq_u32 ( -+ uint32x4_t cmp = vcgeq_u32 ( - vsubq_u32 (vandq_u32 (vreinterpretq_u32_f32 (x), v_u32 (0x7fffffff)), - TinyBound), - SpecialBound); -@@ -103,22 +105,22 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp) (float32x4_t x) - - /* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] - x = ln2*n + r, with r in [-ln2/2, ln2/2]. */ -- n = vrndaq_f32 (vmulq_f32 (x, d->inv_ln2)); -- r = vfmsq_f32 (x, n, d->ln2_hi); -- r = vfmsq_f32 (r, n, d->ln2_lo); -- e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 23); -- scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias)); -+ float32x4_t n = vrndaq_f32 (vmulq_f32 (x, d->inv_ln2)); -+ float32x4_t r = vfmsq_laneq_f32 (x, n, ln2_c02, 0); -+ r = vfmsq_laneq_f32 (r, n, ln2_c02, 1); -+ uint32x4_t e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 23); -+ float32x4_t scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias)); - - #if !WANT_SIMD_EXCEPT -- cmp = vcagtq_f32 (n, d->special_bound); -+ uint32x4_t cmp = vcagtq_f32 (n, d->special_bound); - #endif - -- r2 = vmulq_f32 (r, r); -- p = vfmaq_f32 (C (1), C (0), r); -- q = vfmaq_f32 (C (3), C (2), r); -+ float32x4_t r2 = vmulq_f32 (r, r); -+ float32x4_t p = vfmaq_laneq_f32 (d->c1, r, ln2_c02, 2); -+ float32x4_t q = vfmaq_laneq_f32 (d->c3, r, ln2_c02, 3); - q = vfmaq_f32 (q, p, r2); -- p = vmulq_f32 (C (4), r); -- poly = vfmaq_f32 (p, q, r2); -+ p = vmulq_f32 (d->c4, r); -+ float32x4_t poly = vfmaq_f32 (p, q, r2); - - if (__glibc_unlikely (v_any_u32 (cmp))) - #if WANT_SIMD_EXCEPT -diff --git a/sysdeps/aarch64/fpu/v_expf_inline.h b/sysdeps/aarch64/fpu/v_expf_inline.h -index 08b06e0a6b..eacd2af241 100644 ---- a/sysdeps/aarch64/fpu/v_expf_inline.h -+++ b/sysdeps/aarch64/fpu/v_expf_inline.h -@@ -24,50 +24,45 @@ - - struct v_expf_data - { -- float32x4_t poly[5]; -- float32x4_t shift; -- float invln2_and_ln2[4]; -+ float ln2_hi, ln2_lo, c0, c2; -+ float32x4_t inv_ln2, c1, c3, c4; -+ /* asuint(1.0f). */ -+ uint32x4_t exponent_bias; - }; - - /* maxerr: 1.45358 +0.5 ulp. */ - #define V_EXPF_DATA \ - { \ -- .poly = { V4 (0x1.0e4020p-7f), V4 (0x1.573e2ep-5f), V4 (0x1.555e66p-3f), \ -- V4 (0x1.fffdb6p-2f), V4 (0x1.ffffecp-1f) }, \ -- .shift = V4 (0x1.8p23f), \ -- .invln2_and_ln2 = { 0x1.715476p+0f, 0x1.62e4p-1f, 0x1.7f7d1cp-20f, 0 }, \ -+ .c0 = 0x1.0e4020p-7f, .c1 = V4 (0x1.573e2ep-5f), .c2 = 0x1.555e66p-3f, \ -+ .c3 = V4 (0x1.fffdb6p-2f), .c4 = V4 (0x1.ffffecp-1f), \ -+ .ln2_hi = 0x1.62e4p-1f, .ln2_lo = 0x1.7f7d1cp-20f, \ -+ .inv_ln2 = V4 (0x1.715476p+0f), .exponent_bias = V4 (0x3f800000), \ - } - --#define ExponentBias v_u32 (0x3f800000) /* asuint(1.0f). */ --#define C(i) d->poly[i] -- - static inline float32x4_t - v_expf_inline (float32x4_t x, const struct v_expf_data *d) - { -- /* Helper routine for calculating exp(x). -+ /* Helper routine for calculating exp(ax). - Copied from v_expf.c, with all special-case handling removed - the - calling routine should handle special values if required. */ - -- /* exp(x) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] -- x = ln2*n + r, with r in [-ln2/2, ln2/2]. */ -- float32x4_t n, r, z; -- float32x4_t invln2_and_ln2 = vld1q_f32 (d->invln2_and_ln2); -- z = vfmaq_laneq_f32 (d->shift, x, invln2_and_ln2, 0); -- n = vsubq_f32 (z, d->shift); -- r = vfmsq_laneq_f32 (x, n, invln2_and_ln2, 1); -- r = vfmsq_laneq_f32 (r, n, invln2_and_ln2, 2); -- uint32x4_t e = vshlq_n_u32 (vreinterpretq_u32_f32 (z), 23); -- float32x4_t scale = vreinterpretq_f32_u32 (vaddq_u32 (e, ExponentBias)); -+ /* exp(ax) = 2^n (1 + poly(r)), with 1 + poly(r) in [1/sqrt(2),sqrt(2)] -+ ax = ln2*n + r, with r in [-ln2/2, ln2/2]. */ -+ float32x4_t ax = vabsq_f32 (x); -+ float32x4_t ln2_c02 = vld1q_f32 (&d->ln2_hi); -+ float32x4_t n = vrndaq_f32 (vmulq_f32 (ax, d->inv_ln2)); -+ float32x4_t r = vfmsq_laneq_f32 (ax, n, ln2_c02, 0); -+ r = vfmsq_laneq_f32 (r, n, ln2_c02, 1); -+ uint32x4_t e = vshlq_n_u32 (vreinterpretq_u32_s32 (vcvtq_s32_f32 (n)), 23); -+ float32x4_t scale = vreinterpretq_f32_u32 (vaddq_u32 (e, d->exponent_bias)); - - /* Custom order-4 Estrin avoids building high order monomial. */ - float32x4_t r2 = vmulq_f32 (r, r); -- float32x4_t p, q, poly; -- p = vfmaq_f32 (C (1), C (0), r); -- q = vfmaq_f32 (C (3), C (2), r); -+ float32x4_t p = vfmaq_laneq_f32 (d->c1, r, ln2_c02, 2); -+ float32x4_t q = vfmaq_laneq_f32 (d->c3, r, ln2_c02, 3); - q = vfmaq_f32 (q, p, r2); -- p = vmulq_f32 (C (4), r); -- poly = vfmaq_f32 (p, q, r2); -+ p = vmulq_f32 (d->c4, r); -+ float32x4_t poly = vfmaq_f32 (p, q, r2); - return vfmaq_f32 (scale, poly, scale); - } -- - #endif - -commit abfd20ebbd2883f2c6e5f16709f7b9781c3c8068 -Author: Luna Lamb -Date: Fri Jan 3 19:00:12 2025 +0000 - - AArch64: Improve codegen in AdvSIMD asinh - - Improves memory access and removes spills. - Load the polynomial evaluation coefficients into 2 vectors and use lanewise - MLAs. Reduces MOVs 6->3 , LDR 11->5, STR/STP 2->0, ADRP 3->2. - - (cherry picked from commit 140b985e5a2071000122b3cb63ebfe88cf21dd29) - -diff --git a/sysdeps/aarch64/fpu/asinh_advsimd.c b/sysdeps/aarch64/fpu/asinh_advsimd.c -index 6207e7da95..2739f98b39 100644 ---- a/sysdeps/aarch64/fpu/asinh_advsimd.c -+++ b/sysdeps/aarch64/fpu/asinh_advsimd.c -@@ -20,41 +20,71 @@ - #include "v_math.h" - #include "poly_advsimd_f64.h" - --#define A(i) v_f64 (__v_log_data.poly[i]) --#define N (1 << V_LOG_TABLE_BITS) --#define IndexMask (N - 1) -- - const static struct data - { -- float64x2_t poly[18]; -- uint64x2_t off, huge_bound, abs_mask; -- float64x2_t ln2, tiny_bound; -+ uint64x2_t huge_bound, abs_mask, off, mask; -+#if WANT_SIMD_EXCEPT -+ float64x2_t tiny_bound; -+#endif -+ float64x2_t lc0, lc2; -+ double lc1, lc3, ln2, lc4; -+ -+ float64x2_t c0, c2, c4, c6, c8, c10, c12, c14, c16, c17; -+ double c1, c3, c5, c7, c9, c11, c13, c15; -+ - } data = { -- .off = V2 (0x3fe6900900000000), -- .ln2 = V2 (0x1.62e42fefa39efp-1), -- .huge_bound = V2 (0x5fe0000000000000), -+ -+#if WANT_SIMD_EXCEPT - .tiny_bound = V2 (0x1p-26), -- .abs_mask = V2 (0x7fffffffffffffff), -+#endif - /* Even terms of polynomial s.t. asinh(x) is approximated by - asinh(x) ~= x + x^3 * (C0 + C1 * x + C2 * x^2 + C3 * x^3 + ...). - Generated using Remez, f = (asinh(sqrt(x)) - sqrt(x))/x^(3/2). */ -- .poly = { V2 (-0x1.55555555554a7p-3), V2 (0x1.3333333326c7p-4), -- V2 (-0x1.6db6db68332e6p-5), V2 (0x1.f1c71b26fb40dp-6), -- V2 (-0x1.6e8b8b654a621p-6), V2 (0x1.1c4daa9e67871p-6), -- V2 (-0x1.c9871d10885afp-7), V2 (0x1.7a16e8d9d2ecfp-7), -- V2 (-0x1.3ddca533e9f54p-7), V2 (0x1.0becef748dafcp-7), -- V2 (-0x1.b90c7099dd397p-8), V2 (0x1.541f2bb1ffe51p-8), -- V2 (-0x1.d217026a669ecp-9), V2 (0x1.0b5c7977aaf7p-9), -- V2 (-0x1.e0f37daef9127p-11), V2 (0x1.388b5fe542a6p-12), -- V2 (-0x1.021a48685e287p-14), V2 (0x1.93d4ba83d34dap-18) }, -+ -+ .c0 = V2 (-0x1.55555555554a7p-3), -+ .c1 = 0x1.3333333326c7p-4, -+ .c2 = V2 (-0x1.6db6db68332e6p-5), -+ .c3 = 0x1.f1c71b26fb40dp-6, -+ .c4 = V2 (-0x1.6e8b8b654a621p-6), -+ .c5 = 0x1.1c4daa9e67871p-6, -+ .c6 = V2 (-0x1.c9871d10885afp-7), -+ .c7 = 0x1.7a16e8d9d2ecfp-7, -+ .c8 = V2 (-0x1.3ddca533e9f54p-7), -+ .c9 = 0x1.0becef748dafcp-7, -+ .c10 = V2 (-0x1.b90c7099dd397p-8), -+ .c11 = 0x1.541f2bb1ffe51p-8, -+ .c12 = V2 (-0x1.d217026a669ecp-9), -+ .c13 = 0x1.0b5c7977aaf7p-9, -+ .c14 = V2 (-0x1.e0f37daef9127p-11), -+ .c15 = 0x1.388b5fe542a6p-12, -+ .c16 = V2 (-0x1.021a48685e287p-14), -+ .c17 = V2 (0x1.93d4ba83d34dap-18), -+ -+ .lc0 = V2 (-0x1.ffffffffffff7p-2), -+ .lc1 = 0x1.55555555170d4p-2, -+ .lc2 = V2 (-0x1.0000000399c27p-2), -+ .lc3 = 0x1.999b2e90e94cap-3, -+ .lc4 = -0x1.554e550bd501ep-3, -+ .ln2 = 0x1.62e42fefa39efp-1, -+ -+ .off = V2 (0x3fe6900900000000), -+ .huge_bound = V2 (0x5fe0000000000000), -+ .abs_mask = V2 (0x7fffffffffffffff), -+ .mask = V2 (0xfffULL << 52), - }; - - static float64x2_t NOINLINE VPCS_ATTR --special_case (float64x2_t x, float64x2_t y, uint64x2_t special) -+special_case (float64x2_t x, float64x2_t y, uint64x2_t abs_mask, -+ uint64x2_t special) - { -+ /* Copy sign. */ -+ y = vbslq_f64 (abs_mask, y, x); - return v_call_f64 (asinh, x, y, special); - } - -+#define N (1 << V_LOG_TABLE_BITS) -+#define IndexMask (N - 1) -+ - struct entry - { - float64x2_t invc; -@@ -76,27 +106,34 @@ lookup (uint64x2_t i) - } - - static inline float64x2_t --log_inline (float64x2_t x, const struct data *d) -+log_inline (float64x2_t xm, const struct data *d) - { -- /* Double-precision vector log, copied from ordinary vector log with some -- cosmetic modification and special-cases removed. */ -- uint64x2_t ix = vreinterpretq_u64_f64 (x); -- uint64x2_t tmp = vsubq_u64 (ix, d->off); -- int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (tmp), 52); -- uint64x2_t iz -- = vsubq_u64 (ix, vandq_u64 (tmp, vdupq_n_u64 (0xfffULL << 52))); -+ -+ uint64x2_t u = vreinterpretq_u64_f64 (xm); -+ uint64x2_t u_off = vsubq_u64 (u, d->off); -+ -+ int64x2_t k = vshrq_n_s64 (vreinterpretq_s64_u64 (u_off), 52); -+ uint64x2_t iz = vsubq_u64 (u, vandq_u64 (u_off, d->mask)); - float64x2_t z = vreinterpretq_f64_u64 (iz); -- struct entry e = lookup (tmp); -+ -+ struct entry e = lookup (u_off); -+ -+ /* log(x) = log1p(z/c-1) + log(c) + k*Ln2. */ - float64x2_t r = vfmaq_f64 (v_f64 (-1.0), z, e.invc); - float64x2_t kd = vcvtq_f64_s64 (k); -- float64x2_t hi = vfmaq_f64 (vaddq_f64 (e.logc, r), kd, d->ln2); -+ -+ /* hi = r + log(c) + k*Ln2. */ -+ float64x2_t ln2_and_lc4 = vld1q_f64 (&d->ln2); -+ float64x2_t hi = vfmaq_laneq_f64 (vaddq_f64 (e.logc, r), kd, ln2_and_lc4, 0); -+ -+ /* y = r2*(A0 + r*A1 + r2*(A2 + r*A3 + r2*A4)) + hi. */ -+ float64x2_t odd_coeffs = vld1q_f64 (&d->lc1); - float64x2_t r2 = vmulq_f64 (r, r); -- float64x2_t y = vfmaq_f64 (A (2), A (3), r); -- float64x2_t p = vfmaq_f64 (A (0), A (1), r); -- y = vfmaq_f64 (y, A (4), r2); -- y = vfmaq_f64 (p, y, r2); -- y = vfmaq_f64 (hi, y, r2); -- return y; -+ float64x2_t y = vfmaq_laneq_f64 (d->lc2, r, odd_coeffs, 1); -+ float64x2_t p = vfmaq_laneq_f64 (d->lc0, r, odd_coeffs, 0); -+ y = vfmaq_laneq_f64 (y, r2, ln2_and_lc4, 1); -+ y = vfmaq_f64 (p, r2, y); -+ return vfmaq_f64 (hi, y, r2); - } - - /* Double-precision implementation of vector asinh(x). -@@ -106,23 +143,24 @@ log_inline (float64x2_t x, const struct data *d) - asinh(x) = sign(x) * log(|x| + sqrt(x^2 + 1) if |x| >= 1 - = sign(x) * (|x| + |x|^3 * P(x^2)) otherwise - where log(x) is an optimized log approximation, and P(x) is a polynomial -- shared with the scalar routine. The greatest observed error 3.29 ULP, in -+ shared with the scalar routine. The greatest observed error 2.79 ULP, in - |x| >= 1: -- __v_asinh(0x1.2cd9d717e2c9bp+0) got 0x1.ffffcfd0e234fp-1 -- want 0x1.ffffcfd0e2352p-1. */ -+ _ZGVnN2v_asinh(0x1.2cd9d73ea76a6p+0) got 0x1.ffffd003219dap-1 -+ want 0x1.ffffd003219ddp-1. */ - VPCS_ATTR float64x2_t V_NAME_D1 (asinh) (float64x2_t x) - { - const struct data *d = ptr_barrier (&data); -- - float64x2_t ax = vabsq_f64 (x); -- uint64x2_t iax = vreinterpretq_u64_f64 (ax); - - uint64x2_t gt1 = vcgeq_f64 (ax, v_f64 (1)); -- uint64x2_t special = vcgeq_u64 (iax, d->huge_bound); - - #if WANT_SIMD_EXCEPT -+ uint64x2_t iax = vreinterpretq_u64_f64 (ax); -+ uint64x2_t special = vcgeq_u64 (iax, (d->huge_bound)); - uint64x2_t tiny = vcltq_f64 (ax, d->tiny_bound); - special = vorrq_u64 (special, tiny); -+#else -+ uint64x2_t special = vcgeq_f64 (ax, vreinterpretq_f64_u64 (d->huge_bound)); - #endif - - /* Option 1: |x| >= 1. -@@ -147,19 +185,45 @@ VPCS_ATTR float64x2_t V_NAME_D1 (asinh) (float64x2_t x) - overflow, and tiny lanes, which will underflow, by setting them to 0. They - will be fixed later, either by selecting x or falling back to the scalar - special-case. The largest observed error in this region is 1.47 ULPs: -- __v_asinh(0x1.fdfcd00cc1e6ap-1) got 0x1.c1d6bf874019bp-1 -- want 0x1.c1d6bf874019cp-1. */ -+ _ZGVnN2v_asinh(0x1.fdfcd00cc1e6ap-1) got 0x1.c1d6bf874019bp-1 -+ want 0x1.c1d6bf874019cp-1. */ - float64x2_t option_2 = v_f64 (0); -+ - if (__glibc_likely (v_any_u64 (vceqzq_u64 (gt1)))) - { -+ - #if WANT_SIMD_EXCEPT - ax = v_zerofy_f64 (ax, vorrq_u64 (tiny, gt1)); - #endif -- float64x2_t x2 = vmulq_f64 (ax, ax), x3 = vmulq_f64 (ax, x2), -- z2 = vmulq_f64 (x2, x2), z4 = vmulq_f64 (z2, z2), -- z8 = vmulq_f64 (z4, z4), z16 = vmulq_f64 (z8, z8); -- float64x2_t p = v_estrin_17_f64 (x2, z2, z4, z8, z16, d->poly); -- option_2 = vfmaq_f64 (ax, p, x3); -+ float64x2_t x2 = vmulq_f64 (ax, ax), z2 = vmulq_f64 (x2, x2); -+ /* Order-17 Pairwise Horner scheme. */ -+ float64x2_t c13 = vld1q_f64 (&d->c1); -+ float64x2_t c57 = vld1q_f64 (&d->c5); -+ float64x2_t c911 = vld1q_f64 (&d->c9); -+ float64x2_t c1315 = vld1q_f64 (&d->c13); -+ -+ float64x2_t p01 = vfmaq_laneq_f64 (d->c0, x2, c13, 0); -+ float64x2_t p23 = vfmaq_laneq_f64 (d->c2, x2, c13, 1); -+ float64x2_t p45 = vfmaq_laneq_f64 (d->c4, x2, c57, 0); -+ float64x2_t p67 = vfmaq_laneq_f64 (d->c6, x2, c57, 1); -+ float64x2_t p89 = vfmaq_laneq_f64 (d->c8, x2, c911, 0); -+ float64x2_t p1011 = vfmaq_laneq_f64 (d->c10, x2, c911, 1); -+ float64x2_t p1213 = vfmaq_laneq_f64 (d->c12, x2, c1315, 0); -+ float64x2_t p1415 = vfmaq_laneq_f64 (d->c14, x2, c1315, 1); -+ float64x2_t p1617 = vfmaq_f64 (d->c16, x2, d->c17); -+ -+ float64x2_t p = vfmaq_f64 (p1415, z2, p1617); -+ p = vfmaq_f64 (p1213, z2, p); -+ p = vfmaq_f64 (p1011, z2, p); -+ p = vfmaq_f64 (p89, z2, p); -+ -+ p = vfmaq_f64 (p67, z2, p); -+ p = vfmaq_f64 (p45, z2, p); -+ -+ p = vfmaq_f64 (p23, z2, p); -+ -+ p = vfmaq_f64 (p01, z2, p); -+ option_2 = vfmaq_f64 (ax, p, vmulq_f64 (ax, x2)); - #if WANT_SIMD_EXCEPT - option_2 = vbslq_f64 (tiny, x, option_2); - #endif -@@ -167,10 +231,10 @@ VPCS_ATTR float64x2_t V_NAME_D1 (asinh) (float64x2_t x) - - /* Choose the right option for each lane. */ - float64x2_t y = vbslq_f64 (gt1, option_1, option_2); -- /* Copy sign. */ -- y = vbslq_f64 (d->abs_mask, y, x); -- - if (__glibc_unlikely (v_any_u64 (special))) -- return special_case (x, y, special); -- return y; -+ { -+ return special_case (x, y, d->abs_mask, special); -+ } -+ /* Copy sign. */ -+ return vbslq_f64 (d->abs_mask, y, x); - } - -commit 5f45c0f91eae99b7d49f5c63b900441eb3491213 -Author: Luna Lamb -Date: Fri Jan 3 19:02:52 2025 +0000 - - AArch64: Improve codegen in SVE tans - - Improves memory access. - Tan: MOVPRFX 7 -> 2, LD1RD 12 -> 5, move MOV away from return. - Tanf: MOV 2 -> 1, MOVPRFX 6 -> 3, LD1RW 5 -> 4, move mov away from return. - - (cherry picked from commit aa6609feb20ebf8653db639dabe2a6afc77b02cc) - -diff --git a/sysdeps/aarch64/fpu/tan_sve.c b/sysdeps/aarch64/fpu/tan_sve.c -index b2e4447316..a7318fd417 100644 ---- a/sysdeps/aarch64/fpu/tan_sve.c -+++ b/sysdeps/aarch64/fpu/tan_sve.c -@@ -22,24 +22,38 @@ - - static const struct data - { -- double poly[9]; -- double half_pi_hi, half_pi_lo, inv_half_pi, range_val, shift; -+ double c2, c4, c6, c8; -+ double poly_1357[4]; -+ double c0, inv_half_pi; -+ double half_pi_hi, half_pi_lo, range_val; - } data = { - /* Polynomial generated with FPMinimax. */ -- .poly = { 0x1.5555555555556p-2, 0x1.1111111110a63p-3, 0x1.ba1ba1bb46414p-5, -- 0x1.664f47e5b5445p-6, 0x1.226e5e5ecdfa3p-7, 0x1.d6c7ddbf87047p-9, -- 0x1.7ea75d05b583ep-10, 0x1.289f22964a03cp-11, -- 0x1.4e4fd14147622p-12, }, -+ .c2 = 0x1.ba1ba1bb46414p-5, -+ .c4 = 0x1.226e5e5ecdfa3p-7, -+ .c6 = 0x1.7ea75d05b583ep-10, -+ .c8 = 0x1.4e4fd14147622p-12, -+ .poly_1357 = { 0x1.1111111110a63p-3, 0x1.664f47e5b5445p-6, -+ 0x1.d6c7ddbf87047p-9, 0x1.289f22964a03cp-11 }, -+ .c0 = 0x1.5555555555556p-2, -+ .inv_half_pi = 0x1.45f306dc9c883p-1, - .half_pi_hi = 0x1.921fb54442d18p0, - .half_pi_lo = 0x1.1a62633145c07p-54, -- .inv_half_pi = 0x1.45f306dc9c883p-1, - .range_val = 0x1p23, -- .shift = 0x1.8p52, - }; - - static svfloat64_t NOINLINE --special_case (svfloat64_t x, svfloat64_t y, svbool_t special) -+special_case (svfloat64_t x, svfloat64_t p, svfloat64_t q, svbool_t pg, -+ svbool_t special) - { -+ svbool_t use_recip = svcmpeq ( -+ pg, svand_x (pg, svreinterpret_u64 (svcvt_s64_x (pg, q)), 1), 0); -+ -+ svfloat64_t n = svmad_x (pg, p, p, -1); -+ svfloat64_t d = svmul_x (svptrue_b64 (), p, 2); -+ svfloat64_t swap = n; -+ n = svneg_m (n, use_recip, d); -+ d = svsel (use_recip, swap, d); -+ svfloat64_t y = svdiv_x (svnot_z (pg, special), n, d); - return sv_call_f64 (tan, x, y, special); - } - -@@ -50,15 +64,10 @@ special_case (svfloat64_t x, svfloat64_t y, svbool_t special) - svfloat64_t SV_NAME_D1 (tan) (svfloat64_t x, svbool_t pg) - { - const struct data *dat = ptr_barrier (&data); -- -- /* Invert condition to catch NaNs and Infs as well as large values. */ -- svbool_t special = svnot_z (pg, svaclt (pg, x, dat->range_val)); -- -+ svfloat64_t half_pi_c0 = svld1rq (svptrue_b64 (), &dat->c0); - /* q = nearest integer to 2 * x / pi. */ -- svfloat64_t shift = sv_f64 (dat->shift); -- svfloat64_t q = svmla_x (pg, shift, x, dat->inv_half_pi); -- q = svsub_x (pg, q, shift); -- svint64_t qi = svcvt_s64_x (pg, q); -+ svfloat64_t q = svmul_lane (x, half_pi_c0, 1); -+ q = svrinta_x (pg, q); - - /* Use q to reduce x to r in [-pi/4, pi/4], by: - r = x - q * pi/2, in extended precision. */ -@@ -68,7 +77,7 @@ svfloat64_t SV_NAME_D1 (tan) (svfloat64_t x, svbool_t pg) - r = svmls_lane (r, q, half_pi, 1); - /* Further reduce r to [-pi/8, pi/8], to be reconstructed using double angle - formula. */ -- r = svmul_x (pg, r, 0.5); -+ r = svmul_x (svptrue_b64 (), r, 0.5); - - /* Approximate tan(r) using order 8 polynomial. - tan(x) is odd, so polynomial has the form: -@@ -76,29 +85,51 @@ svfloat64_t SV_NAME_D1 (tan) (svfloat64_t x, svbool_t pg) - Hence we first approximate P(r) = C1 + C2 * r^2 + C3 * r^4 + ... - Then compute the approximation by: - tan(r) ~= r + r^3 * (C0 + r^2 * P(r)). */ -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t r4 = svmul_x (pg, r2, r2); -- svfloat64_t r8 = svmul_x (pg, r4, r4); -+ -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ svfloat64_t r4 = svmul_x (svptrue_b64 (), r2, r2); -+ svfloat64_t r8 = svmul_x (svptrue_b64 (), r4, r4); - /* Use offset version coeff array by 1 to evaluate from C1 onwards. */ -- svfloat64_t p = sv_estrin_7_f64_x (pg, r2, r4, r8, dat->poly + 1); -- p = svmad_x (pg, p, r2, dat->poly[0]); -- p = svmla_x (pg, r, r2, svmul_x (pg, p, r)); -+ svfloat64_t C_24 = svld1rq (svptrue_b64 (), &dat->c2); -+ svfloat64_t C_68 = svld1rq (svptrue_b64 (), &dat->c6); -+ -+ /* Use offset version coeff array by 1 to evaluate from C1 onwards. */ -+ svfloat64_t p01 = svmla_lane (sv_f64 (dat->poly_1357[0]), r2, C_24, 0); -+ svfloat64_t p23 = svmla_lane_f64 (sv_f64 (dat->poly_1357[1]), r2, C_24, 1); -+ svfloat64_t p03 = svmla_x (pg, p01, p23, r4); -+ -+ svfloat64_t p45 = svmla_lane (sv_f64 (dat->poly_1357[2]), r2, C_68, 0); -+ svfloat64_t p67 = svmla_lane (sv_f64 (dat->poly_1357[3]), r2, C_68, 1); -+ svfloat64_t p47 = svmla_x (pg, p45, p67, r4); -+ -+ svfloat64_t p = svmla_x (pg, p03, p47, r8); -+ -+ svfloat64_t z = svmul_x (svptrue_b64 (), p, r); -+ z = svmul_x (svptrue_b64 (), r2, z); -+ z = svmla_lane (z, r, half_pi_c0, 0); -+ p = svmla_x (pg, r, r2, z); - - /* Recombination uses double-angle formula: - tan(2x) = 2 * tan(x) / (1 - (tan(x))^2) - and reciprocity around pi/2: - tan(x) = 1 / (tan(pi/2 - x)) - to assemble result using change-of-sign and conditional selection of -- numerator/denominator dependent on odd/even-ness of q (hence quadrant). */ -- svbool_t use_recip -- = svcmpeq (pg, svand_x (pg, svreinterpret_u64 (qi), 1), 0); -+ numerator/denominator dependent on odd/even-ness of q (quadrant). */ -+ -+ /* Invert condition to catch NaNs and Infs as well as large values. */ -+ svbool_t special = svnot_z (pg, svaclt (pg, x, dat->range_val)); -+ -+ if (__glibc_unlikely (svptest_any (pg, special))) -+ { -+ return special_case (x, p, q, pg, special); -+ } -+ svbool_t use_recip = svcmpeq ( -+ pg, svand_x (pg, svreinterpret_u64 (svcvt_s64_x (pg, q)), 1), 0); - - svfloat64_t n = svmad_x (pg, p, p, -1); -- svfloat64_t d = svmul_x (pg, p, 2); -+ svfloat64_t d = svmul_x (svptrue_b64 (), p, 2); - svfloat64_t swap = n; - n = svneg_m (n, use_recip, d); - d = svsel (use_recip, swap, d); -- if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svdiv_x (svnot_z (pg, special), n, d), special); - return svdiv_x (pg, n, d); - } -diff --git a/sysdeps/aarch64/fpu/tanf_sve.c b/sysdeps/aarch64/fpu/tanf_sve.c -index f342583241..e850fb4882 100644 ---- a/sysdeps/aarch64/fpu/tanf_sve.c -+++ b/sysdeps/aarch64/fpu/tanf_sve.c -@@ -60,21 +60,16 @@ svfloat32_t SV_NAME_F1 (tan) (svfloat32_t x, const svbool_t pg) - { - const struct data *d = ptr_barrier (&data); - -- /* Determine whether input is too large to perform fast regression. */ -- svbool_t cmp = svacge (pg, x, d->range_val); -- - svfloat32_t odd_coeffs = svld1rq (svptrue_b32 (), &d->c1); - svfloat32_t pi_vals = svld1rq (svptrue_b32 (), &d->pio2_1); - - /* n = rint(x/(pi/2)). */ -- svfloat32_t q = svmla_lane (sv_f32 (d->shift), x, pi_vals, 3); -- svfloat32_t n = svsub_x (pg, q, d->shift); -+ svfloat32_t n = svrintn_x (pg, svmul_lane (x, pi_vals, 3)); - /* n is already a signed integer, simply convert it. */ - svint32_t in = svcvt_s32_x (pg, n); - /* Determine if x lives in an interval, where |tan(x)| grows to infinity. */ - svint32_t alt = svand_x (pg, in, 1); - svbool_t pred_alt = svcmpne (pg, alt, 0); -- - /* r = x - n * (pi/2) (range reduction into 0 .. pi/4). */ - svfloat32_t r; - r = svmls_lane (x, n, pi_vals, 0); -@@ -93,7 +88,7 @@ svfloat32_t SV_NAME_F1 (tan) (svfloat32_t x, const svbool_t pg) - - /* Evaluate polynomial approximation of tangent on [-pi/4, pi/4], - using Estrin on z^2. */ -- svfloat32_t z2 = svmul_x (pg, z, z); -+ svfloat32_t z2 = svmul_x (svptrue_b32 (), r, r); - svfloat32_t p01 = svmla_lane (sv_f32 (d->c0), z2, odd_coeffs, 0); - svfloat32_t p23 = svmla_lane (sv_f32 (d->c2), z2, odd_coeffs, 1); - svfloat32_t p45 = svmla_lane (sv_f32 (d->c4), z2, odd_coeffs, 2); -@@ -106,13 +101,14 @@ svfloat32_t SV_NAME_F1 (tan) (svfloat32_t x, const svbool_t pg) - - svfloat32_t y = svmla_x (pg, z, p, svmul_x (pg, z, z2)); - -- /* Transform result back, if necessary. */ -- svfloat32_t inv_y = svdivr_x (pg, y, 1.0f); -- - /* No need to pass pg to specialcase here since cmp is a strict subset, - guaranteed by the cmpge above. */ -+ -+ /* Determine whether input is too large to perform fast regression. */ -+ svbool_t cmp = svacge (pg, x, d->range_val); - if (__glibc_unlikely (svptest_any (pg, cmp))) -- return special_case (x, svsel (pred_alt, inv_y, y), cmp); -+ return special_case (x, svdivr_x (pg, y, 1.0f), cmp); - -+ svfloat32_t inv_y = svdivr_x (pg, y, 1.0f); - return svsel (pred_alt, inv_y, y); - } - -commit ab5ba6c188159bb5e12be95cd90458924c2fe592 -Author: Yat Long Poon -Date: Fri Jan 3 19:07:30 2025 +0000 - - AArch64: Improve codegen for SVE logs - - Reduce memory access by using lanewise MLA and moving constants to struct - and reduce number of MOVPRFXs. - Update maximum ULP error for double log_sve from 1 to 2. - Speedup on Neoverse V1 for log (3%), log2 (5%), and log10 (4%). - - (cherry picked from commit 32d193a372feb28f9da247bb7283d404b84429c6) - -diff --git a/sysdeps/aarch64/fpu/log10_sve.c b/sysdeps/aarch64/fpu/log10_sve.c -index ab7362128d..f1cad2759a 100644 ---- a/sysdeps/aarch64/fpu/log10_sve.c -+++ b/sysdeps/aarch64/fpu/log10_sve.c -@@ -23,28 +23,49 @@ - #define Min 0x0010000000000000 - #define Max 0x7ff0000000000000 - #define Thres 0x7fe0000000000000 /* Max - Min. */ --#define Off 0x3fe6900900000000 - #define N (1 << V_LOG10_TABLE_BITS) - -+static const struct data -+{ -+ double c0, c2; -+ double c1, c3; -+ double invln10, log10_2; -+ double c4; -+ uint64_t off; -+} data = { -+ .c0 = -0x1.bcb7b1526e506p-3, -+ .c1 = 0x1.287a7636be1d1p-3, -+ .c2 = -0x1.bcb7b158af938p-4, -+ .c3 = 0x1.63c78734e6d07p-4, -+ .c4 = -0x1.287461742fee4p-4, -+ .invln10 = 0x1.bcb7b1526e50ep-2, -+ .log10_2 = 0x1.34413509f79ffp-2, -+ .off = 0x3fe6900900000000, -+}; -+ - static svfloat64_t NOINLINE --special_case (svfloat64_t x, svfloat64_t y, svbool_t special) -+special_case (svfloat64_t hi, svuint64_t tmp, svfloat64_t y, svfloat64_t r2, -+ svbool_t special, const struct data *d) - { -- return sv_call_f64 (log10, x, y, special); -+ svfloat64_t x = svreinterpret_f64 (svadd_x (svptrue_b64 (), tmp, d->off)); -+ return sv_call_f64 (log10, x, svmla_x (svptrue_b64 (), hi, r2, y), special); - } - --/* SVE log10 algorithm. -+/* Double-precision SVE log10 routine. - Maximum measured error is 2.46 ulps. - SV_NAME_D1 (log10)(0x1.131956cd4b627p+0) got 0x1.fffbdf6eaa669p-6 - want 0x1.fffbdf6eaa667p-6. */ - svfloat64_t SV_NAME_D1 (log10) (svfloat64_t x, const svbool_t pg) - { -+ const struct data *d = ptr_barrier (&data); -+ - svuint64_t ix = svreinterpret_u64 (x); - svbool_t special = svcmpge (pg, svsub_x (pg, ix, Min), Thres); - - /* x = 2^k z; where z is in range [Off,2*Off) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- svuint64_t tmp = svsub_x (pg, ix, Off); -+ svuint64_t tmp = svsub_x (pg, ix, d->off); - svuint64_t i = svlsr_x (pg, tmp, 51 - V_LOG10_TABLE_BITS); - i = svand_x (pg, i, (N - 1) << 1); - svfloat64_t k = svcvt_f64_x (pg, svasr_x (pg, svreinterpret_s64 (tmp), 52)); -@@ -62,15 +83,19 @@ svfloat64_t SV_NAME_D1 (log10) (svfloat64_t x, const svbool_t pg) - svfloat64_t r = svmad_x (pg, invc, z, -1.0); - - /* hi = log(c) + k*log(2). */ -- svfloat64_t w = svmla_x (pg, logc, r, __v_log10_data.invln10); -- svfloat64_t hi = svmla_x (pg, w, k, __v_log10_data.log10_2); -+ svfloat64_t invln10_log10_2 = svld1rq_f64 (svptrue_b64 (), &d->invln10); -+ svfloat64_t w = svmla_lane_f64 (logc, r, invln10_log10_2, 0); -+ svfloat64_t hi = svmla_lane_f64 (w, k, invln10_log10_2, 1); - - /* y = r2*(A0 + r*A1 + r2*(A2 + r*A3 + r2*A4)) + hi. */ -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t y = sv_pw_horner_4_f64_x (pg, r, r2, __v_log10_data.poly); -+ svfloat64_t odd_coeffs = svld1rq_f64 (svptrue_b64 (), &d->c1); -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ svfloat64_t y = svmla_lane_f64 (sv_f64 (d->c2), r, odd_coeffs, 1); -+ svfloat64_t p = svmla_lane_f64 (sv_f64 (d->c0), r, odd_coeffs, 0); -+ y = svmla_x (pg, y, r2, d->c4); -+ y = svmla_x (pg, p, r2, y); - - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svmla_x (svnot_z (pg, special), hi, r2, y), -- special); -+ return special_case (hi, tmp, y, r2, special, d); - return svmla_x (pg, hi, r2, y); - } -diff --git a/sysdeps/aarch64/fpu/log2_sve.c b/sysdeps/aarch64/fpu/log2_sve.c -index 743fa2a913..908e638246 100644 ---- a/sysdeps/aarch64/fpu/log2_sve.c -+++ b/sysdeps/aarch64/fpu/log2_sve.c -@@ -21,15 +21,32 @@ - #include "poly_sve_f64.h" - - #define N (1 << V_LOG2_TABLE_BITS) --#define Off 0x3fe6900900000000 - #define Max (0x7ff0000000000000) - #define Min (0x0010000000000000) - #define Thresh (0x7fe0000000000000) /* Max - Min. */ - -+static const struct data -+{ -+ double c0, c2; -+ double c1, c3; -+ double invln2, c4; -+ uint64_t off; -+} data = { -+ .c0 = -0x1.71547652b83p-1, -+ .c1 = 0x1.ec709dc340953p-2, -+ .c2 = -0x1.71547651c8f35p-2, -+ .c3 = 0x1.2777ebe12dda5p-2, -+ .c4 = -0x1.ec738d616fe26p-3, -+ .invln2 = 0x1.71547652b82fep0, -+ .off = 0x3fe6900900000000, -+}; -+ - static svfloat64_t NOINLINE --special_case (svfloat64_t x, svfloat64_t y, svbool_t cmp) -+special_case (svfloat64_t w, svuint64_t tmp, svfloat64_t y, svfloat64_t r2, -+ svbool_t special, const struct data *d) - { -- return sv_call_f64 (log2, x, y, cmp); -+ svfloat64_t x = svreinterpret_f64 (svadd_x (svptrue_b64 (), tmp, d->off)); -+ return sv_call_f64 (log2, x, svmla_x (svptrue_b64 (), w, r2, y), special); - } - - /* Double-precision SVE log2 routine. -@@ -40,13 +57,15 @@ special_case (svfloat64_t x, svfloat64_t y, svbool_t cmp) - want 0x1.fffb34198d9ddp-5. */ - svfloat64_t SV_NAME_D1 (log2) (svfloat64_t x, const svbool_t pg) - { -+ const struct data *d = ptr_barrier (&data); -+ - svuint64_t ix = svreinterpret_u64 (x); - svbool_t special = svcmpge (pg, svsub_x (pg, ix, Min), Thresh); - - /* x = 2^k z; where z is in range [Off,2*Off) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- svuint64_t tmp = svsub_x (pg, ix, Off); -+ svuint64_t tmp = svsub_x (pg, ix, d->off); - svuint64_t i = svlsr_x (pg, tmp, 51 - V_LOG2_TABLE_BITS); - i = svand_x (pg, i, (N - 1) << 1); - svfloat64_t k = svcvt_f64_x (pg, svasr_x (pg, svreinterpret_s64 (tmp), 52)); -@@ -59,15 +78,19 @@ svfloat64_t SV_NAME_D1 (log2) (svfloat64_t x, const svbool_t pg) - - /* log2(x) = log1p(z/c-1)/log(2) + log2(c) + k. */ - -+ svfloat64_t invln2_and_c4 = svld1rq_f64 (svptrue_b64 (), &d->invln2); - svfloat64_t r = svmad_x (pg, invc, z, -1.0); -- svfloat64_t w = svmla_x (pg, log2c, r, __v_log2_data.invln2); -- -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t y = sv_pw_horner_4_f64_x (pg, r, r2, __v_log2_data.poly); -+ svfloat64_t w = svmla_lane_f64 (log2c, r, invln2_and_c4, 0); - w = svadd_x (pg, k, w); - -+ svfloat64_t odd_coeffs = svld1rq_f64 (svptrue_b64 (), &d->c1); -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ svfloat64_t y = svmla_lane_f64 (sv_f64 (d->c2), r, odd_coeffs, 1); -+ svfloat64_t p = svmla_lane_f64 (sv_f64 (d->c0), r, odd_coeffs, 0); -+ y = svmla_lane_f64 (y, r2, invln2_and_c4, 1); -+ y = svmla_x (pg, p, r2, y); -+ - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svmla_x (svnot_z (pg, special), w, r2, y), -- special); -+ return special_case (w, tmp, y, r2, special, d); - return svmla_x (pg, w, r2, y); - } -diff --git a/sysdeps/aarch64/fpu/log_sve.c b/sysdeps/aarch64/fpu/log_sve.c -index 9b689f2ec7..044223400b 100644 ---- a/sysdeps/aarch64/fpu/log_sve.c -+++ b/sysdeps/aarch64/fpu/log_sve.c -@@ -19,39 +19,54 @@ - - #include "sv_math.h" - --#define P(i) sv_f64 (__v_log_data.poly[i]) - #define N (1 << V_LOG_TABLE_BITS) --#define Off (0x3fe6900900000000) --#define MaxTop (0x7ff) --#define MinTop (0x001) --#define ThreshTop (0x7fe) /* MaxTop - MinTop. */ -+#define Max (0x7ff0000000000000) -+#define Min (0x0010000000000000) -+#define Thresh (0x7fe0000000000000) /* Max - Min. */ -+ -+static const struct data -+{ -+ double c0, c2; -+ double c1, c3; -+ double ln2, c4; -+ uint64_t off; -+} data = { -+ .c0 = -0x1.ffffffffffff7p-2, -+ .c1 = 0x1.55555555170d4p-2, -+ .c2 = -0x1.0000000399c27p-2, -+ .c3 = 0x1.999b2e90e94cap-3, -+ .c4 = -0x1.554e550bd501ep-3, -+ .ln2 = 0x1.62e42fefa39efp-1, -+ .off = 0x3fe6900900000000, -+}; - - static svfloat64_t NOINLINE --special_case (svfloat64_t x, svfloat64_t y, svbool_t cmp) -+special_case (svfloat64_t hi, svuint64_t tmp, svfloat64_t y, svfloat64_t r2, -+ svbool_t special, const struct data *d) - { -- return sv_call_f64 (log, x, y, cmp); -+ svfloat64_t x = svreinterpret_f64 (svadd_x (svptrue_b64 (), tmp, d->off)); -+ return sv_call_f64 (log, x, svmla_x (svptrue_b64 (), hi, r2, y), special); - } - --/* SVE port of AdvSIMD log algorithm. -- Maximum measured error is 2.17 ulp: -- SV_NAME_D1 (log)(0x1.a6129884398a3p+0) got 0x1.ffffff1cca043p-2 -- want 0x1.ffffff1cca045p-2. */ -+/* Double-precision SVE log routine. -+ Maximum measured error is 2.64 ulp: -+ SV_NAME_D1 (log)(0x1.95e54bc91a5e2p+184) got 0x1.fffffffe88cacp+6 -+ want 0x1.fffffffe88cafp+6. */ - svfloat64_t SV_NAME_D1 (log) (svfloat64_t x, const svbool_t pg) - { -+ const struct data *d = ptr_barrier (&data); -+ - svuint64_t ix = svreinterpret_u64 (x); -- svuint64_t top = svlsr_x (pg, ix, 52); -- svbool_t cmp = svcmpge (pg, svsub_x (pg, top, MinTop), sv_u64 (ThreshTop)); -+ svbool_t special = svcmpge (pg, svsub_x (pg, ix, Min), Thresh); - - /* x = 2^k z; where z is in range [Off,2*Off) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- svuint64_t tmp = svsub_x (pg, ix, Off); -+ svuint64_t tmp = svsub_x (pg, ix, d->off); - /* Calculate table index = (tmp >> (52 - V_LOG_TABLE_BITS)) % N. - The actual value of i is double this due to table layout. */ - svuint64_t i - = svand_x (pg, svlsr_x (pg, tmp, (51 - V_LOG_TABLE_BITS)), (N - 1) << 1); -- svint64_t k -- = svasr_x (pg, svreinterpret_s64 (tmp), 52); /* Arithmetic shift. */ - svuint64_t iz = svsub_x (pg, ix, svand_x (pg, tmp, 0xfffULL << 52)); - svfloat64_t z = svreinterpret_f64 (iz); - /* Lookup in 2 global lists (length N). */ -@@ -59,18 +74,22 @@ svfloat64_t SV_NAME_D1 (log) (svfloat64_t x, const svbool_t pg) - svfloat64_t logc = svld1_gather_index (pg, &__v_log_data.table[0].logc, i); - - /* log(x) = log1p(z/c-1) + log(c) + k*Ln2. */ -- svfloat64_t r = svmad_x (pg, invc, z, -1); -- svfloat64_t kd = svcvt_f64_x (pg, k); -+ svfloat64_t kd = svcvt_f64_x (pg, svasr_x (pg, svreinterpret_s64 (tmp), 52)); - /* hi = r + log(c) + k*Ln2. */ -- svfloat64_t hi = svmla_x (pg, svadd_x (pg, logc, r), kd, __v_log_data.ln2); -+ svfloat64_t ln2_and_c4 = svld1rq_f64 (svptrue_b64 (), &d->ln2); -+ svfloat64_t r = svmad_x (pg, invc, z, -1); -+ svfloat64_t hi = svmla_lane_f64 (logc, kd, ln2_and_c4, 0); -+ hi = svadd_x (pg, r, hi); -+ - /* y = r2*(A0 + r*A1 + r2*(A2 + r*A3 + r2*A4)) + hi. */ -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t y = svmla_x (pg, P (2), r, P (3)); -- svfloat64_t p = svmla_x (pg, P (0), r, P (1)); -- y = svmla_x (pg, y, r2, P (4)); -+ svfloat64_t odd_coeffs = svld1rq_f64 (svptrue_b64 (), &d->c1); -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ svfloat64_t y = svmla_lane_f64 (sv_f64 (d->c2), r, odd_coeffs, 1); -+ svfloat64_t p = svmla_lane_f64 (sv_f64 (d->c0), r, odd_coeffs, 0); -+ y = svmla_lane_f64 (y, r2, ln2_and_c4, 1); - y = svmla_x (pg, p, r2, y); - -- if (__glibc_unlikely (svptest_any (pg, cmp))) -- return special_case (x, svmla_x (svnot_z (pg, cmp), hi, r2, y), cmp); -+ if (__glibc_unlikely (svptest_any (pg, special))) -+ return special_case (hi, tmp, y, r2, special, d); - return svmla_x (pg, hi, r2, y); - } -diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps -index 6c96304611..b76c38dac2 100644 ---- a/sysdeps/aarch64/libm-test-ulps -+++ b/sysdeps/aarch64/libm-test-ulps -@@ -1460,7 +1460,7 @@ float: 2 - ldouble: 1 - - Function: "log_sve": --double: 1 -+double: 2 - float: 3 - - Function: "log_towardzero": - -commit aa7c61ea15e27ae14717e065a5d4c50baa472851 -Author: Yat Long Poon -Date: Fri Jan 3 19:09:05 2025 +0000 - - AArch64: Improve codegen for SVE log1pf users - - Reduce memory access by using lanewise MLA and reduce number of MOVPRFXs. - Move log1pf implementation to inline helper function. - Speedup on Neoverse V1 for log1pf (10%), acoshf (-1%), atanhf (2%), asinhf (2%). - - (cherry picked from commit 91c1fadba338752bf514cd4cca057b27b1b10eed) - -diff --git a/sysdeps/aarch64/fpu/acoshf_sve.c b/sysdeps/aarch64/fpu/acoshf_sve.c -index 2110894e62..491365e24d 100644 ---- a/sysdeps/aarch64/fpu/acoshf_sve.c -+++ b/sysdeps/aarch64/fpu/acoshf_sve.c -@@ -17,23 +17,26 @@ - License along with the GNU C Library; if not, see - . */ - -+#include "sv_math.h" -+#include "sv_log1pf_inline.h" -+ - #define One 0x3f800000 - #define Thres 0x20000000 /* asuint(0x1p64) - One. */ - --#include "sv_log1pf_inline.h" -- - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+special_case (svfloat32_t xm1, svfloat32_t tmp, svbool_t special) - { -+ svfloat32_t x = svadd_x (svptrue_b32 (), xm1, 1.0f); -+ svfloat32_t y = sv_log1pf_inline (tmp, svptrue_b32 ()); - return sv_call_f32 (acoshf, x, y, special); - } - - /* Single-precision SVE acosh(x) routine. Implements the same algorithm as - vector acoshf and log1p. - -- Maximum error is 2.78 ULPs: -- SV_NAME_F1 (acosh) (0x1.01e996p+0) got 0x1.f45b42p-4 -- want 0x1.f45b3cp-4. */ -+ Maximum error is 2.47 ULPs: -+ SV_NAME_F1 (acosh) (0x1.01ca76p+0) got 0x1.e435a6p-4 -+ want 0x1.e435a2p-4. */ - svfloat32_t SV_NAME_F1 (acosh) (svfloat32_t x, const svbool_t pg) - { - svuint32_t ix = svreinterpret_u32 (x); -@@ -41,9 +44,9 @@ svfloat32_t SV_NAME_F1 (acosh) (svfloat32_t x, const svbool_t pg) - - svfloat32_t xm1 = svsub_x (pg, x, 1.0f); - svfloat32_t u = svmul_x (pg, xm1, svadd_x (pg, x, 1.0f)); -- svfloat32_t y = sv_log1pf_inline (svadd_x (pg, xm1, svsqrt_x (pg, u)), pg); -+ svfloat32_t tmp = svadd_x (pg, xm1, svsqrt_x (pg, u)); - - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, y, special); -- return y; -+ return special_case (xm1, tmp, special); -+ return sv_log1pf_inline (tmp, pg); - } -diff --git a/sysdeps/aarch64/fpu/asinhf_sve.c b/sysdeps/aarch64/fpu/asinhf_sve.c -index d85c3a685c..b7f253bf32 100644 ---- a/sysdeps/aarch64/fpu/asinhf_sve.c -+++ b/sysdeps/aarch64/fpu/asinhf_sve.c -@@ -20,20 +20,23 @@ - #include "sv_math.h" - #include "sv_log1pf_inline.h" - --#define BigBound (0x5f800000) /* asuint(0x1p64). */ -+#define BigBound 0x5f800000 /* asuint(0x1p64). */ - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+special_case (svuint32_t iax, svuint32_t sign, svfloat32_t y, svbool_t special) - { -+ svfloat32_t x = svreinterpret_f32 (sveor_x (svptrue_b32 (), iax, sign)); -+ y = svreinterpret_f32 ( -+ svorr_x (svptrue_b32 (), sign, svreinterpret_u32 (y))); - return sv_call_f32 (asinhf, x, y, special); - } - - /* Single-precision SVE asinh(x) routine. Implements the same algorithm as - vector asinhf and log1p. - -- Maximum error is 2.48 ULPs: -- SV_NAME_F1 (asinh) (0x1.008864p-3) got 0x1.ffbbbcp-4 -- want 0x1.ffbbb8p-4. */ -+ Maximum error is 1.92 ULPs: -+ SV_NAME_F1 (asinh) (-0x1.0922ecp-1) got -0x1.fd0bccp-2 -+ want -0x1.fd0bc8p-2. */ - svfloat32_t SV_NAME_F1 (asinh) (svfloat32_t x, const svbool_t pg) - { - svfloat32_t ax = svabs_x (pg, x); -@@ -49,8 +52,6 @@ svfloat32_t SV_NAME_F1 (asinh) (svfloat32_t x, const svbool_t pg) - = sv_log1pf_inline (svadd_x (pg, ax, svdiv_x (pg, ax2, d)), pg); - - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case ( -- x, svreinterpret_f32 (svorr_x (pg, sign, svreinterpret_u32 (y))), -- special); -+ return special_case (iax, sign, y, special); - return svreinterpret_f32 (svorr_x (pg, sign, svreinterpret_u32 (y))); - } -diff --git a/sysdeps/aarch64/fpu/atanhf_sve.c b/sysdeps/aarch64/fpu/atanhf_sve.c -index dae83041ef..2d3005bbc8 100644 ---- a/sysdeps/aarch64/fpu/atanhf_sve.c -+++ b/sysdeps/aarch64/fpu/atanhf_sve.c -@@ -17,21 +17,25 @@ - License along with the GNU C Library; if not, see - . */ - -+#include "sv_math.h" - #include "sv_log1pf_inline.h" - - #define One (0x3f800000) - #define Half (0x3f000000) - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+special_case (svuint32_t iax, svuint32_t sign, svfloat32_t halfsign, -+ svfloat32_t y, svbool_t special) - { -+ svfloat32_t x = svreinterpret_f32 (sveor_x (svptrue_b32 (), iax, sign)); -+ y = svmul_x (svptrue_b32 (), halfsign, y); - return sv_call_f32 (atanhf, x, y, special); - } - - /* Approximation for vector single-precision atanh(x) using modified log1p. -- The maximum error is 2.28 ULP: -- _ZGVsMxv_atanhf(0x1.ff1194p-5) got 0x1.ffbbbcp-5 -- want 0x1.ffbbb6p-5. */ -+ The maximum error is 1.99 ULP: -+ _ZGVsMxv_atanhf(0x1.f1583p-5) got 0x1.f1f4fap-5 -+ want 0x1.f1f4f6p-5. */ - svfloat32_t SV_NAME_F1 (atanh) (svfloat32_t x, const svbool_t pg) - { - svfloat32_t ax = svabs_x (pg, x); -@@ -48,7 +52,7 @@ svfloat32_t SV_NAME_F1 (atanh) (svfloat32_t x, const svbool_t pg) - y = sv_log1pf_inline (y, pg); - - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svmul_x (pg, halfsign, y), special); -+ return special_case (iax, sign, halfsign, y, special); - - return svmul_x (pg, halfsign, y); - } -diff --git a/sysdeps/aarch64/fpu/log1pf_sve.c b/sysdeps/aarch64/fpu/log1pf_sve.c -index 5256d5e94c..18a185c838 100644 ---- a/sysdeps/aarch64/fpu/log1pf_sve.c -+++ b/sysdeps/aarch64/fpu/log1pf_sve.c -@@ -18,30 +18,13 @@ - . */ - - #include "sv_math.h" --#include "poly_sve_f32.h" -- --static const struct data --{ -- float poly[8]; -- float ln2, exp_bias; -- uint32_t four, three_quarters; --} data = {.poly = {/* Do not store first term of polynomial, which is -0.5, as -- this can be fmov-ed directly instead of including it in -- the main load-and-mla polynomial schedule. */ -- 0x1.5555aap-2f, -0x1.000038p-2f, 0x1.99675cp-3f, -- -0x1.54ef78p-3f, 0x1.28a1f4p-3f, -0x1.0da91p-3f, -- 0x1.abcb6p-4f, -0x1.6f0d5ep-5f}, -- .ln2 = 0x1.62e43p-1f, -- .exp_bias = 0x1p-23f, -- .four = 0x40800000, -- .three_quarters = 0x3f400000}; -- --#define SignExponentMask 0xff800000 -+#include "sv_log1pf_inline.h" - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+special_case (svfloat32_t x, svbool_t special) - { -- return sv_call_f32 (log1pf, x, y, special); -+ return sv_call_f32 (log1pf, x, sv_log1pf_inline (x, svptrue_b32 ()), -+ special); - } - - /* Vector log1pf approximation using polynomial on reduced interval. Worst-case -@@ -50,53 +33,14 @@ special_case (svfloat32_t x, svfloat32_t y, svbool_t special) - want 0x1.9f323ep-2. */ - svfloat32_t SV_NAME_F1 (log1p) (svfloat32_t x, svbool_t pg) - { -- const struct data *d = ptr_barrier (&data); - /* x < -1, Inf/Nan. */ - svbool_t special = svcmpeq (pg, svreinterpret_u32 (x), 0x7f800000); - special = svorn_z (pg, special, svcmpge (pg, x, -1)); - -- /* With x + 1 = t * 2^k (where t = m + 1 and k is chosen such that m -- is in [-0.25, 0.5]): -- log1p(x) = log(t) + log(2^k) = log1p(m) + k*log(2). -- -- We approximate log1p(m) with a polynomial, then scale by -- k*log(2). Instead of doing this directly, we use an intermediate -- scale factor s = 4*k*log(2) to ensure the scale is representable -- as a normalised fp32 number. */ -- svfloat32_t m = svadd_x (pg, x, 1); -- -- /* Choose k to scale x to the range [-1/4, 1/2]. */ -- svint32_t k -- = svand_x (pg, svsub_x (pg, svreinterpret_s32 (m), d->three_quarters), -- sv_s32 (SignExponentMask)); -- -- /* Scale x by exponent manipulation. */ -- svfloat32_t m_scale = svreinterpret_f32 ( -- svsub_x (pg, svreinterpret_u32 (x), svreinterpret_u32 (k))); -- -- /* Scale up to ensure that the scale factor is representable as normalised -- fp32 number, and scale m down accordingly. */ -- svfloat32_t s = svreinterpret_f32 (svsubr_x (pg, k, d->four)); -- m_scale = svadd_x (pg, m_scale, svmla_x (pg, sv_f32 (-1), s, 0.25)); -- -- /* Evaluate polynomial on reduced interval. */ -- svfloat32_t ms2 = svmul_x (pg, m_scale, m_scale), -- ms4 = svmul_x (pg, ms2, ms2); -- svfloat32_t p = sv_estrin_7_f32_x (pg, m_scale, ms2, ms4, d->poly); -- p = svmad_x (pg, m_scale, p, -0.5); -- p = svmla_x (pg, m_scale, m_scale, svmul_x (pg, m_scale, p)); -- -- /* The scale factor to be applied back at the end - by multiplying float(k) -- by 2^-23 we get the unbiased exponent of k. */ -- svfloat32_t scale_back = svmul_x (pg, svcvt_f32_x (pg, k), d->exp_bias); -- -- /* Apply the scaling back. */ -- svfloat32_t y = svmla_x (pg, p, scale_back, d->ln2); -- - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, y, special); -+ return special_case (x, special); - -- return y; -+ return sv_log1pf_inline (x, pg); - } - - strong_alias (SV_NAME_F1 (log1p), SV_NAME_F1 (logp1)) -diff --git a/sysdeps/aarch64/fpu/sv_log1pf_inline.h b/sysdeps/aarch64/fpu/sv_log1pf_inline.h -index b94b2da055..850297d615 100644 ---- a/sysdeps/aarch64/fpu/sv_log1pf_inline.h -+++ b/sysdeps/aarch64/fpu/sv_log1pf_inline.h -@@ -22,55 +22,76 @@ - - #include "sv_math.h" - #include "vecmath_config.h" --#include "poly_sve_f32.h" -+ -+#define SignExponentMask 0xff800000 - - static const struct sv_log1pf_data - { -- float32_t poly[9]; -- float32_t ln2; -- float32_t scale_back; -+ float c0, c2, c4, c6; -+ float c1, c3, c5, c7; -+ float ln2, exp_bias, quarter; -+ uint32_t four, three_quarters; - } sv_log1pf_data = { -- /* Polynomial generated using FPMinimax in [-0.25, 0.5]. */ -- .poly = { -0x1p-1f, 0x1.5555aap-2f, -0x1.000038p-2f, 0x1.99675cp-3f, -- -0x1.54ef78p-3f, 0x1.28a1f4p-3f, -0x1.0da91p-3f, 0x1.abcb6p-4f, -- -0x1.6f0d5ep-5f }, -- .scale_back = 0x1.0p-23f, -- .ln2 = 0x1.62e43p-1f, -+ /* Do not store first term of polynomial, which is -0.5, as -+ this can be fmov-ed directly instead of including it in -+ the main load-and-mla polynomial schedule. */ -+ .c0 = 0x1.5555aap-2f, .c1 = -0x1.000038p-2f, .c2 = 0x1.99675cp-3f, -+ .c3 = -0x1.54ef78p-3f, .c4 = 0x1.28a1f4p-3f, .c5 = -0x1.0da91p-3f, -+ .c6 = 0x1.abcb6p-4f, .c7 = -0x1.6f0d5ep-5f, .ln2 = 0x1.62e43p-1f, -+ .exp_bias = 0x1p-23f, .quarter = 0x1p-2f, .four = 0x40800000, -+ .three_quarters = 0x3f400000, - }; - --static inline svfloat32_t --eval_poly (svfloat32_t m, const float32_t *c, svbool_t pg) --{ -- svfloat32_t p_12 = svmla_x (pg, sv_f32 (c[0]), m, sv_f32 (c[1])); -- svfloat32_t m2 = svmul_x (pg, m, m); -- svfloat32_t q = svmla_x (pg, m, m2, p_12); -- svfloat32_t p = sv_pw_horner_6_f32_x (pg, m, m2, c + 2); -- p = svmul_x (pg, m2, p); -- -- return svmla_x (pg, q, m2, p); --} -- - static inline svfloat32_t - sv_log1pf_inline (svfloat32_t x, svbool_t pg) - { - const struct sv_log1pf_data *d = ptr_barrier (&sv_log1pf_data); - -- svfloat32_t m = svadd_x (pg, x, 1.0f); -- -- svint32_t ks = svsub_x (pg, svreinterpret_s32 (m), -- svreinterpret_s32 (svdup_f32 (0.75f))); -- ks = svand_x (pg, ks, 0xff800000); -- svuint32_t k = svreinterpret_u32 (ks); -- svfloat32_t s = svreinterpret_f32 ( -- svsub_x (pg, svreinterpret_u32 (svdup_f32 (4.0f)), k)); -- -- svfloat32_t m_scale -- = svreinterpret_f32 (svsub_x (pg, svreinterpret_u32 (x), k)); -- m_scale -- = svadd_x (pg, m_scale, svmla_x (pg, sv_f32 (-1.0f), sv_f32 (0.25f), s)); -- svfloat32_t p = eval_poly (m_scale, d->poly, pg); -- svfloat32_t scale_back = svmul_x (pg, svcvt_f32_x (pg, k), d->scale_back); -- return svmla_x (pg, p, scale_back, d->ln2); -+ /* With x + 1 = t * 2^k (where t = m + 1 and k is chosen such that m -+ is in [-0.25, 0.5]): -+ log1p(x) = log(t) + log(2^k) = log1p(m) + k*log(2). -+ -+ We approximate log1p(m) with a polynomial, then scale by -+ k*log(2). Instead of doing this directly, we use an intermediate -+ scale factor s = 4*k*log(2) to ensure the scale is representable -+ as a normalised fp32 number. */ -+ svfloat32_t m = svadd_x (pg, x, 1); -+ -+ /* Choose k to scale x to the range [-1/4, 1/2]. */ -+ svint32_t k -+ = svand_x (pg, svsub_x (pg, svreinterpret_s32 (m), d->three_quarters), -+ sv_s32 (SignExponentMask)); -+ -+ /* Scale x by exponent manipulation. */ -+ svfloat32_t m_scale = svreinterpret_f32 ( -+ svsub_x (pg, svreinterpret_u32 (x), svreinterpret_u32 (k))); -+ -+ /* Scale up to ensure that the scale factor is representable as normalised -+ fp32 number, and scale m down accordingly. */ -+ svfloat32_t s = svreinterpret_f32 (svsubr_x (pg, k, d->four)); -+ svfloat32_t fconst = svld1rq_f32 (svptrue_b32 (), &d->ln2); -+ m_scale = svadd_x (pg, m_scale, svmla_lane_f32 (sv_f32 (-1), s, fconst, 2)); -+ -+ /* Evaluate polynomial on reduced interval. */ -+ svfloat32_t ms2 = svmul_x (svptrue_b32 (), m_scale, m_scale); -+ -+ svfloat32_t c1357 = svld1rq_f32 (svptrue_b32 (), &d->c1); -+ svfloat32_t p01 = svmla_lane_f32 (sv_f32 (d->c0), m_scale, c1357, 0); -+ svfloat32_t p23 = svmla_lane_f32 (sv_f32 (d->c2), m_scale, c1357, 1); -+ svfloat32_t p45 = svmla_lane_f32 (sv_f32 (d->c4), m_scale, c1357, 2); -+ svfloat32_t p67 = svmla_lane_f32 (sv_f32 (d->c6), m_scale, c1357, 3); -+ -+ svfloat32_t p = svmla_x (pg, p45, p67, ms2); -+ p = svmla_x (pg, p23, p, ms2); -+ p = svmla_x (pg, p01, p, ms2); -+ -+ p = svmad_x (pg, m_scale, p, -0.5); -+ p = svmla_x (pg, m_scale, m_scale, svmul_x (pg, m_scale, p)); -+ -+ /* The scale factor to be applied back at the end - by multiplying float(k) -+ by 2^-23 we get the unbiased exponent of k. */ -+ svfloat32_t scale_back = svmul_lane_f32 (svcvt_f32_x (pg, k), fconst, 1); -+ return svmla_lane_f32 (p, scale_back, fconst, 0); - } - - #endif - -commit d983f14c304df2d880c7b01e904e4a889064b9b3 -Author: Luna Lamb -Date: Fri Jan 3 20:15:17 2025 +0000 - - AArch64: Improve codegen in SVE expm1f and users - - Use unpredicated muls, use absolute compare and improve memory access. - Expm1f, sinhf and tanhf show 7%, 5% and 1% improvement in throughput - microbenchmark on Neoverse V1. - - (cherry picked from commit f86b4cf87581cf1e45702b07880679ffa0b1f47a) - -diff --git a/sysdeps/aarch64/fpu/expm1f_sve.c b/sysdeps/aarch64/fpu/expm1f_sve.c -index 7c852125cd..05a66400d4 100644 ---- a/sysdeps/aarch64/fpu/expm1f_sve.c -+++ b/sysdeps/aarch64/fpu/expm1f_sve.c -@@ -18,7 +18,6 @@ - . */ - - #include "sv_math.h" --#include "poly_sve_f32.h" - - /* Largest value of x for which expm1(x) should round to -1. */ - #define SpecialBound 0x1.5ebc4p+6f -@@ -28,20 +27,17 @@ static const struct data - /* These 4 are grouped together so they can be loaded as one quadword, then - used with _lane forms of svmla/svmls. */ - float c2, c4, ln2_hi, ln2_lo; -- float c0, c1, c3, inv_ln2, special_bound, shift; -+ float c0, inv_ln2, c1, c3, special_bound; - } data = { - /* Generated using fpminimax. */ - .c0 = 0x1.fffffep-2, .c1 = 0x1.5554aep-3, - .c2 = 0x1.555736p-5, .c3 = 0x1.12287cp-7, -- .c4 = 0x1.6b55a2p-10, -+ .c4 = 0x1.6b55a2p-10, .inv_ln2 = 0x1.715476p+0f, -+ .special_bound = SpecialBound, .ln2_lo = 0x1.7f7d1cp-20f, -+ .ln2_hi = 0x1.62e4p-1f, - -- .special_bound = SpecialBound, .shift = 0x1.8p23f, -- .inv_ln2 = 0x1.715476p+0f, .ln2_hi = 0x1.62e4p-1f, -- .ln2_lo = 0x1.7f7d1cp-20f, - }; - --#define C(i) sv_f32 (d->c##i) -- - static svfloat32_t NOINLINE - special_case (svfloat32_t x, svbool_t pg) - { -@@ -71,9 +67,8 @@ svfloat32_t SV_NAME_F1 (expm1) (svfloat32_t x, svbool_t pg) - and f = x - i * ln2, then f is in [-ln2/2, ln2/2]. - exp(x) - 1 = 2^i * (expm1(f) + 1) - 1 - where 2^i is exact because i is an integer. */ -- svfloat32_t j = svmla_x (pg, sv_f32 (d->shift), x, d->inv_ln2); -- j = svsub_x (pg, j, d->shift); -- svint32_t i = svcvt_s32_x (pg, j); -+ svfloat32_t j = svmul_x (svptrue_b32 (), x, d->inv_ln2); -+ j = svrinta_x (pg, j); - - svfloat32_t f = svmls_lane (x, j, lane_constants, 2); - f = svmls_lane (f, j, lane_constants, 3); -@@ -83,17 +78,17 @@ svfloat32_t SV_NAME_F1 (expm1) (svfloat32_t x, svbool_t pg) - x + ax^2 + bx^3 + cx^4 .... - So we calculate the polynomial P(f) = a + bf + cf^2 + ... - and assemble the approximation expm1(f) ~= f + f^2 * P(f). */ -- svfloat32_t p12 = svmla_lane (C (1), f, lane_constants, 0); -- svfloat32_t p34 = svmla_lane (C (3), f, lane_constants, 1); -- svfloat32_t f2 = svmul_x (pg, f, f); -+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), f, lane_constants, 0); -+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), f, lane_constants, 1); -+ svfloat32_t f2 = svmul_x (svptrue_b32 (), f, f); - svfloat32_t p = svmla_x (pg, p12, f2, p34); -- p = svmla_x (pg, C (0), f, p); -+ -+ p = svmla_x (pg, sv_f32 (d->c0), f, p); - p = svmla_x (pg, f, f2, p); - - /* Assemble the result. - expm1(x) ~= 2^i * (p + 1) - 1 - Let t = 2^i. */ -- svfloat32_t t = svreinterpret_f32 ( -- svadd_x (pg, svreinterpret_u32 (svlsl_x (pg, i, 23)), 0x3f800000)); -- return svmla_x (pg, svsub_x (pg, t, 1), p, t); -+ svfloat32_t t = svscale_x (pg, sv_f32 (1.0f), svcvt_s32_x (pg, j)); -+ return svmla_x (pg, svsub_x (pg, t, 1.0f), p, t); - } -diff --git a/sysdeps/aarch64/fpu/sinhf_sve.c b/sysdeps/aarch64/fpu/sinhf_sve.c -index 6c204b57a2..50dd386774 100644 ---- a/sysdeps/aarch64/fpu/sinhf_sve.c -+++ b/sysdeps/aarch64/fpu/sinhf_sve.c -@@ -63,5 +63,5 @@ svfloat32_t SV_NAME_F1 (sinh) (svfloat32_t x, const svbool_t pg) - if (__glibc_unlikely (svptest_any (pg, special))) - return special_case (x, svmul_x (pg, t, halfsign), special); - -- return svmul_x (pg, t, halfsign); -+ return svmul_x (svptrue_b32 (), t, halfsign); - } -diff --git a/sysdeps/aarch64/fpu/sv_expm1f_inline.h b/sysdeps/aarch64/fpu/sv_expm1f_inline.h -index 5b72451222..e46ddda543 100644 ---- a/sysdeps/aarch64/fpu/sv_expm1f_inline.h -+++ b/sysdeps/aarch64/fpu/sv_expm1f_inline.h -@@ -27,21 +27,18 @@ struct sv_expm1f_data - /* These 4 are grouped together so they can be loaded as one quadword, then - used with _lane forms of svmla/svmls. */ - float32_t c2, c4, ln2_hi, ln2_lo; -- float32_t c0, c1, c3, inv_ln2, shift; -+ float c0, inv_ln2, c1, c3, special_bound; - }; - - /* Coefficients generated using fpminimax. */ - #define SV_EXPM1F_DATA \ - { \ -- .c0 = 0x1.fffffep-2, .c1 = 0x1.5554aep-3, .c2 = 0x1.555736p-5, \ -- .c3 = 0x1.12287cp-7, .c4 = 0x1.6b55a2p-10, \ -+ .c0 = 0x1.fffffep-2, .c1 = 0x1.5554aep-3, .inv_ln2 = 0x1.715476p+0f, \ -+ .c2 = 0x1.555736p-5, .c3 = 0x1.12287cp-7, \ - \ -- .shift = 0x1.8p23f, .inv_ln2 = 0x1.715476p+0f, .ln2_hi = 0x1.62e4p-1f, \ -- .ln2_lo = 0x1.7f7d1cp-20f, \ -+ .c4 = 0x1.6b55a2p-10, .ln2_lo = 0x1.7f7d1cp-20f, .ln2_hi = 0x1.62e4p-1f, \ - } - --#define C(i) sv_f32 (d->c##i) -- - static inline svfloat32_t - expm1f_inline (svfloat32_t x, svbool_t pg, const struct sv_expm1f_data *d) - { -@@ -55,9 +52,8 @@ expm1f_inline (svfloat32_t x, svbool_t pg, const struct sv_expm1f_data *d) - and f = x - i * ln2, then f is in [-ln2/2, ln2/2]. - exp(x) - 1 = 2^i * (expm1(f) + 1) - 1 - where 2^i is exact because i is an integer. */ -- svfloat32_t j = svmla_x (pg, sv_f32 (d->shift), x, d->inv_ln2); -- j = svsub_x (pg, j, d->shift); -- svint32_t i = svcvt_s32_x (pg, j); -+ svfloat32_t j = svmul_x (svptrue_b32 (), x, d->inv_ln2); -+ j = svrinta_x (pg, j); - - svfloat32_t f = svmls_lane (x, j, lane_constants, 2); - f = svmls_lane (f, j, lane_constants, 3); -@@ -67,18 +63,18 @@ expm1f_inline (svfloat32_t x, svbool_t pg, const struct sv_expm1f_data *d) - x + ax^2 + bx^3 + cx^4 .... - So we calculate the polynomial P(f) = a + bf + cf^2 + ... - and assemble the approximation expm1(f) ~= f + f^2 * P(f). */ -- svfloat32_t p12 = svmla_lane (C (1), f, lane_constants, 0); -- svfloat32_t p34 = svmla_lane (C (3), f, lane_constants, 1); -- svfloat32_t f2 = svmul_x (pg, f, f); -+ svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), f, lane_constants, 0); -+ svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), f, lane_constants, 1); -+ svfloat32_t f2 = svmul_x (svptrue_b32 (), f, f); - svfloat32_t p = svmla_x (pg, p12, f2, p34); -- p = svmla_x (pg, C (0), f, p); -+ p = svmla_x (pg, sv_f32 (d->c0), f, p); - p = svmla_x (pg, f, f2, p); - - /* Assemble the result. - expm1(x) ~= 2^i * (p + 1) - 1 - Let t = 2^i. */ -- svfloat32_t t = svscale_x (pg, sv_f32 (1), i); -- return svmla_x (pg, svsub_x (pg, t, 1), p, t); -+ svfloat32_t t = svscale_x (pg, sv_f32 (1.0f), svcvt_s32_x (pg, j)); -+ return svmla_x (pg, svsub_x (pg, t, 1.0f), p, t); - } - - #endif -diff --git a/sysdeps/aarch64/fpu/tanhf_sve.c b/sysdeps/aarch64/fpu/tanhf_sve.c -index 0b94523cf5..80dd679346 100644 ---- a/sysdeps/aarch64/fpu/tanhf_sve.c -+++ b/sysdeps/aarch64/fpu/tanhf_sve.c -@@ -19,20 +19,27 @@ - - #include "sv_expm1f_inline.h" - -+/* Largest value of x for which tanhf(x) rounds to 1 (or -1 for negative). */ -+#define BoringBound 0x1.205966p+3f -+ - static const struct data - { - struct sv_expm1f_data expm1f_consts; -- uint32_t boring_bound, onef; -+ uint32_t onef, special_bound; -+ float boring_bound; - } data = { - .expm1f_consts = SV_EXPM1F_DATA, -- /* 0x1.205966p+3, above which tanhf rounds to 1 (or -1 for negative). */ -- .boring_bound = 0x41102cb3, - .onef = 0x3f800000, -+ .special_bound = 0x7f800000, -+ .boring_bound = BoringBound, - }; - - static svfloat32_t NOINLINE --special_case (svfloat32_t x, svfloat32_t y, svbool_t special) -+special_case (svfloat32_t x, svbool_t pg, svbool_t is_boring, -+ svfloat32_t boring, svfloat32_t q, svbool_t special) - { -+ svfloat32_t y -+ = svsel_f32 (is_boring, boring, svdiv_x (pg, q, svadd_x (pg, q, 2.0))); - return sv_call_f32 (tanhf, x, y, special); - } - -@@ -47,15 +54,16 @@ svfloat32_t SV_NAME_F1 (tanh) (svfloat32_t x, const svbool_t pg) - svfloat32_t ax = svabs_x (pg, x); - svuint32_t iax = svreinterpret_u32 (ax); - svuint32_t sign = sveor_x (pg, svreinterpret_u32 (x), iax); -- svbool_t is_boring = svcmpgt (pg, iax, d->boring_bound); - svfloat32_t boring = svreinterpret_f32 (svorr_x (pg, sign, d->onef)); -- -- svbool_t special = svcmpgt (pg, iax, 0x7f800000); -+ svbool_t special = svcmpgt (pg, iax, d->special_bound); -+ svbool_t is_boring = svacgt (pg, x, d->boring_bound); - - /* tanh(x) = (e^2x - 1) / (e^2x + 1). */ -- svfloat32_t q = expm1f_inline (svmul_x (pg, x, 2.0), pg, &d->expm1f_consts); -- svfloat32_t y = svdiv_x (pg, q, svadd_x (pg, q, 2.0)); -+ svfloat32_t q = expm1f_inline (svmul_x (svptrue_b32 (), x, 2.0), pg, -+ &d->expm1f_consts); -+ - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svsel_f32 (is_boring, boring, y), special); -+ return special_case (x, pg, is_boring, boring, q, special); -+ svfloat32_t y = svdiv_x (pg, q, svadd_x (pg, q, 2.0)); - return svsel_f32 (is_boring, boring, y); - } - -commit 0ff6a9ff79bca9384ce4ba20e8942d39cc377a14 -Author: Luna Lamb -Date: Thu Feb 13 17:52:09 2025 +0000 - - Aarch64: Improve codegen in SVE asinh - - Use unpredicated muls, use lanewise mla's and improve memory access. - 1% regression in throughput microbenchmark on Neoverse V1. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 8f0e7fe61e0a2ad5ed777933703ce09053810ec4) - -diff --git a/sysdeps/aarch64/fpu/asinh_sve.c b/sysdeps/aarch64/fpu/asinh_sve.c -index 28dc5c4587..fe8715e06c 100644 ---- a/sysdeps/aarch64/fpu/asinh_sve.c -+++ b/sysdeps/aarch64/fpu/asinh_sve.c -@@ -18,36 +18,49 @@ - . */ - - #include "sv_math.h" --#include "poly_sve_f64.h" - - #define SignMask (0x8000000000000000) - #define One (0x3ff0000000000000) - #define Thres (0x5fe0000000000000) /* asuint64 (0x1p511). */ -+#define IndexMask (((1 << V_LOG_TABLE_BITS) - 1) << 1) - - static const struct data - { -- double poly[18]; -- double ln2, p3, p1, p4, p0, p2; -- uint64_t n; -- uint64_t off; -+ double even_coeffs[9]; -+ double ln2, p3, p1, p4, p0, p2, c1, c3, c5, c7, c9, c11, c13, c15, c17; -+ uint64_t off, mask; - - } data = { -- /* Polynomial generated using Remez on [2^-26, 1]. */ -- .poly -- = { -0x1.55555555554a7p-3, 0x1.3333333326c7p-4, -0x1.6db6db68332e6p-5, -- 0x1.f1c71b26fb40dp-6, -0x1.6e8b8b654a621p-6, 0x1.1c4daa9e67871p-6, -- -0x1.c9871d10885afp-7, 0x1.7a16e8d9d2ecfp-7, -0x1.3ddca533e9f54p-7, -- 0x1.0becef748dafcp-7, -0x1.b90c7099dd397p-8, 0x1.541f2bb1ffe51p-8, -- -0x1.d217026a669ecp-9, 0x1.0b5c7977aaf7p-9, -0x1.e0f37daef9127p-11, -- 0x1.388b5fe542a6p-12, -0x1.021a48685e287p-14, 0x1.93d4ba83d34dap-18 }, -+ /* Polynomial generated using Remez on [2^-26, 1]. */ -+ .even_coeffs ={ -+ -0x1.55555555554a7p-3, -+ -0x1.6db6db68332e6p-5, -+ -0x1.6e8b8b654a621p-6, -+ -0x1.c9871d10885afp-7, -+ -0x1.3ddca533e9f54p-7, -+ -0x1.b90c7099dd397p-8, -+ -0x1.d217026a669ecp-9, -+ -0x1.e0f37daef9127p-11, -+ -0x1.021a48685e287p-14, }, -+ -+ .c1 = 0x1.3333333326c7p-4, -+ .c3 = 0x1.f1c71b26fb40dp-6, -+ .c5 = 0x1.1c4daa9e67871p-6, -+ .c7 = 0x1.7a16e8d9d2ecfp-7, -+ .c9 = 0x1.0becef748dafcp-7, -+ .c11 = 0x1.541f2bb1ffe51p-8, -+ .c13 = 0x1.0b5c7977aaf7p-9, -+ .c15 = 0x1.388b5fe542a6p-12, -+ .c17 = 0x1.93d4ba83d34dap-18, -+ - .ln2 = 0x1.62e42fefa39efp-1, - .p0 = -0x1.ffffffffffff7p-2, - .p1 = 0x1.55555555170d4p-2, - .p2 = -0x1.0000000399c27p-2, - .p3 = 0x1.999b2e90e94cap-3, - .p4 = -0x1.554e550bd501ep-3, -- .n = 1 << V_LOG_TABLE_BITS, -- .off = 0x3fe6900900000000 -+ .off = 0x3fe6900900000000, -+ .mask = 0xfffULL << 52, - }; - - static svfloat64_t NOINLINE -@@ -64,11 +77,10 @@ __sv_log_inline (svfloat64_t x, const struct data *d, const svbool_t pg) - of the algorithm used. */ - - svuint64_t ix = svreinterpret_u64 (x); -- svuint64_t tmp = svsub_x (pg, ix, d->off); -- svuint64_t i = svand_x (pg, svlsr_x (pg, tmp, (51 - V_LOG_TABLE_BITS)), -- (d->n - 1) << 1); -- svint64_t k = svasr_x (pg, svreinterpret_s64 (tmp), 52); -- svuint64_t iz = svsub_x (pg, ix, svand_x (pg, tmp, 0xfffULL << 52)); -+ svuint64_t i_off = svsub_x (pg, ix, d->off); -+ svuint64_t i -+ = svand_x (pg, svlsr_x (pg, i_off, (51 - V_LOG_TABLE_BITS)), IndexMask); -+ svuint64_t iz = svsub_x (pg, ix, svand_x (pg, i_off, d->mask)); - svfloat64_t z = svreinterpret_f64 (iz); - - svfloat64_t invc = svld1_gather_index (pg, &__v_log_data.table[0].invc, i); -@@ -78,14 +90,14 @@ __sv_log_inline (svfloat64_t x, const struct data *d, const svbool_t pg) - svfloat64_t p1_p4 = svld1rq (svptrue_b64 (), &d->p1); - - svfloat64_t r = svmla_x (pg, sv_f64 (-1.0), invc, z); -- svfloat64_t kd = svcvt_f64_x (pg, k); -+ svfloat64_t kd -+ = svcvt_f64_x (pg, svasr_x (pg, svreinterpret_s64 (i_off), 52)); - - svfloat64_t hi = svmla_lane (svadd_x (pg, logc, r), kd, ln2_p3, 0); -- svfloat64_t r2 = svmul_x (pg, r, r); -- -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); - svfloat64_t y = svmla_lane (sv_f64 (d->p2), r, ln2_p3, 1); -- - svfloat64_t p = svmla_lane (sv_f64 (d->p0), r, p1_p4, 0); -+ - y = svmla_lane (y, r2, p1_p4, 1); - y = svmla_x (pg, p, r2, y); - y = svmla_x (pg, hi, r2, y); -@@ -111,7 +123,6 @@ svfloat64_t SV_NAME_D1 (asinh) (svfloat64_t x, const svbool_t pg) - svuint64_t iax = svbic_x (pg, ix, SignMask); - svuint64_t sign = svand_x (pg, ix, SignMask); - svfloat64_t ax = svreinterpret_f64 (iax); -- - svbool_t ge1 = svcmpge (pg, iax, One); - svbool_t special = svcmpge (pg, iax, Thres); - -@@ -120,7 +131,7 @@ svfloat64_t SV_NAME_D1 (asinh) (svfloat64_t x, const svbool_t pg) - svfloat64_t option_1 = sv_f64 (0); - if (__glibc_likely (svptest_any (pg, ge1))) - { -- svfloat64_t x2 = svmul_x (pg, ax, ax); -+ svfloat64_t x2 = svmul_x (svptrue_b64 (), ax, ax); - option_1 = __sv_log_inline ( - svadd_x (pg, ax, svsqrt_x (pg, svadd_x (pg, x2, 1))), d, pg); - } -@@ -130,21 +141,53 @@ svfloat64_t SV_NAME_D1 (asinh) (svfloat64_t x, const svbool_t pg) - The largest observed error in this region is 1.51 ULPs: - _ZGVsMxv_asinh(0x1.fe12bf8c616a2p-1) got 0x1.c1e649ee2681bp-1 - want 0x1.c1e649ee2681dp-1. */ -+ - svfloat64_t option_2 = sv_f64 (0); - if (__glibc_likely (svptest_any (pg, svnot_z (pg, ge1)))) - { -- svfloat64_t x2 = svmul_x (pg, ax, ax); -- svfloat64_t x4 = svmul_x (pg, x2, x2); -- svfloat64_t p = sv_pw_horner_17_f64_x (pg, x2, x4, d->poly); -- option_2 = svmla_x (pg, ax, p, svmul_x (pg, x2, ax)); -+ svfloat64_t x2 = svmul_x (svptrue_b64 (), ax, ax); -+ svfloat64_t x4 = svmul_x (svptrue_b64 (), x2, x2); -+ /* Order-17 Pairwise Horner scheme. */ -+ svfloat64_t c13 = svld1rq (svptrue_b64 (), &d->c1); -+ svfloat64_t c57 = svld1rq (svptrue_b64 (), &d->c5); -+ svfloat64_t c911 = svld1rq (svptrue_b64 (), &d->c9); -+ svfloat64_t c1315 = svld1rq (svptrue_b64 (), &d->c13); -+ -+ svfloat64_t p01 = svmla_lane (sv_f64 (d->even_coeffs[0]), x2, c13, 0); -+ svfloat64_t p23 = svmla_lane (sv_f64 (d->even_coeffs[1]), x2, c13, 1); -+ svfloat64_t p45 = svmla_lane (sv_f64 (d->even_coeffs[2]), x2, c57, 0); -+ svfloat64_t p67 = svmla_lane (sv_f64 (d->even_coeffs[3]), x2, c57, 1); -+ svfloat64_t p89 = svmla_lane (sv_f64 (d->even_coeffs[4]), x2, c911, 0); -+ svfloat64_t p1011 = svmla_lane (sv_f64 (d->even_coeffs[5]), x2, c911, 1); -+ svfloat64_t p1213 -+ = svmla_lane (sv_f64 (d->even_coeffs[6]), x2, c1315, 0); -+ svfloat64_t p1415 -+ = svmla_lane (sv_f64 (d->even_coeffs[7]), x2, c1315, 1); -+ svfloat64_t p1617 = svmla_x (pg, sv_f64 (d->even_coeffs[8]), x2, d->c17); -+ -+ svfloat64_t p = svmla_x (pg, p1415, x4, p1617); -+ p = svmla_x (pg, p1213, x4, p); -+ p = svmla_x (pg, p1011, x4, p); -+ p = svmla_x (pg, p89, x4, p); -+ -+ p = svmla_x (pg, p67, x4, p); -+ p = svmla_x (pg, p45, x4, p); -+ -+ p = svmla_x (pg, p23, x4, p); -+ -+ p = svmla_x (pg, p01, x4, p); -+ -+ option_2 = svmla_x (pg, ax, p, svmul_x (svptrue_b64 (), x2, ax)); - } - -- /* Choose the right option for each lane. */ -- svfloat64_t y = svsel (ge1, option_1, option_2); -- - if (__glibc_unlikely (svptest_any (pg, special))) - return special_case ( -- x, svreinterpret_f64 (sveor_x (pg, svreinterpret_u64 (y), sign)), -+ x, -+ svreinterpret_f64 (sveor_x ( -+ pg, svreinterpret_u64 (svsel (ge1, option_1, option_2)), sign)), - special); -+ -+ /* Choose the right option for each lane. */ -+ svfloat64_t y = svsel (ge1, option_1, option_2); - return svreinterpret_f64 (sveor_x (pg, svreinterpret_u64 (y), sign)); - } - -commit 4b0bb84eb7e52a135c873fd9d0fc6c30599aedf4 -Author: Luna Lamb -Date: Thu Feb 13 17:54:46 2025 +0000 - - Aarch64: Improve codegen in SVE exp and users, and update expf_inline - - Use unpredicted muls, and improve memory access. - 7%, 3% and 1% improvement in throughput microbenchmark on Neoverse V1, - for exp, exp2 and cosh respectively. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit c0ff447edf19bd4630fe79adf5e8b896405b059f) - -diff --git a/sysdeps/aarch64/fpu/cosh_sve.c b/sysdeps/aarch64/fpu/cosh_sve.c -index 919f34604a..e375dd8a34 100644 ---- a/sysdeps/aarch64/fpu/cosh_sve.c -+++ b/sysdeps/aarch64/fpu/cosh_sve.c -@@ -23,7 +23,7 @@ static const struct data - { - float64_t poly[3]; - float64_t inv_ln2, ln2_hi, ln2_lo, shift, thres; -- uint64_t index_mask, special_bound; -+ uint64_t special_bound; - } data = { - .poly = { 0x1.fffffffffffd4p-2, 0x1.5555571d6b68cp-3, - 0x1.5555576a59599p-5, }, -@@ -35,14 +35,16 @@ static const struct data - .shift = 0x1.8p+52, - .thres = 704.0, - -- .index_mask = 0xff, - /* 0x1.6p9, above which exp overflows. */ - .special_bound = 0x4086000000000000, - }; - - static svfloat64_t NOINLINE --special_case (svfloat64_t x, svfloat64_t y, svbool_t special) -+special_case (svfloat64_t x, svbool_t pg, svfloat64_t t, svbool_t special) - { -+ svfloat64_t half_t = svmul_x (svptrue_b64 (), t, 0.5); -+ svfloat64_t half_over_t = svdivr_x (pg, t, 0.5); -+ svfloat64_t y = svadd_x (pg, half_t, half_over_t); - return sv_call_f64 (cosh, x, y, special); - } - -@@ -60,12 +62,12 @@ exp_inline (svfloat64_t x, const svbool_t pg, const struct data *d) - - svuint64_t u = svreinterpret_u64 (z); - svuint64_t e = svlsl_x (pg, u, 52 - V_EXP_TAIL_TABLE_BITS); -- svuint64_t i = svand_x (pg, u, d->index_mask); -+ svuint64_t i = svand_x (svptrue_b64 (), u, 0xff); - - svfloat64_t y = svmla_x (pg, sv_f64 (d->poly[1]), r, d->poly[2]); - y = svmla_x (pg, sv_f64 (d->poly[0]), r, y); - y = svmla_x (pg, sv_f64 (1.0), r, y); -- y = svmul_x (pg, r, y); -+ y = svmul_x (svptrue_b64 (), r, y); - - /* s = 2^(n/N). */ - u = svld1_gather_index (pg, __v_exp_tail_data, i); -@@ -94,12 +96,12 @@ svfloat64_t SV_NAME_D1 (cosh) (svfloat64_t x, const svbool_t pg) - /* Up to the point that exp overflows, we can use it to calculate cosh by - exp(|x|) / 2 + 1 / (2 * exp(|x|)). */ - svfloat64_t t = exp_inline (ax, pg, d); -- svfloat64_t half_t = svmul_x (pg, t, 0.5); -- svfloat64_t half_over_t = svdivr_x (pg, t, 0.5); - - /* Fall back to scalar for any special cases. */ - if (__glibc_unlikely (svptest_any (pg, special))) -- return special_case (x, svadd_x (pg, half_t, half_over_t), special); -+ return special_case (x, pg, t, special); - -+ svfloat64_t half_t = svmul_x (svptrue_b64 (), t, 0.5); -+ svfloat64_t half_over_t = svdivr_x (pg, t, 0.5); - return svadd_x (pg, half_t, half_over_t); - } -diff --git a/sysdeps/aarch64/fpu/exp10_sve.c b/sysdeps/aarch64/fpu/exp10_sve.c -index ddf64708cb..bfd3fb9e19 100644 ---- a/sysdeps/aarch64/fpu/exp10_sve.c -+++ b/sysdeps/aarch64/fpu/exp10_sve.c -@@ -18,21 +18,23 @@ - . */ - - #include "sv_math.h" --#include "poly_sve_f64.h" - - #define SpecialBound 307.0 /* floor (log10 (2^1023)). */ - - static const struct data - { -- double poly[5]; -+ double c1, c3, c2, c4, c0; - double shift, log10_2, log2_10_hi, log2_10_lo, scale_thres, special_bound; - } data = { - /* Coefficients generated using Remez algorithm. - rel error: 0x1.9fcb9b3p-60 - abs error: 0x1.a20d9598p-60 in [ -log10(2)/128, log10(2)/128 ] - max ulp err 0.52 +0.5. */ -- .poly = { 0x1.26bb1bbb55516p1, 0x1.53524c73cd32ap1, 0x1.0470591daeafbp1, -- 0x1.2bd77b1361ef6p0, 0x1.142b5d54e9621p-1 }, -+ .c0 = 0x1.26bb1bbb55516p1, -+ .c1 = 0x1.53524c73cd32ap1, -+ .c2 = 0x1.0470591daeafbp1, -+ .c3 = 0x1.2bd77b1361ef6p0, -+ .c4 = 0x1.142b5d54e9621p-1, - /* 1.5*2^46+1023. This value is further explained below. */ - .shift = 0x1.800000000ffc0p+46, - .log10_2 = 0x1.a934f0979a371p1, /* 1/log2(10). */ -@@ -70,9 +72,9 @@ special_case (svbool_t pg, svfloat64_t s, svfloat64_t y, svfloat64_t n, - /* |n| > 1280 => 2^(n) overflows. */ - svbool_t p_cmp = svacgt (pg, n, d->scale_thres); - -- svfloat64_t r1 = svmul_x (pg, s1, s1); -+ svfloat64_t r1 = svmul_x (svptrue_b64 (), s1, s1); - svfloat64_t r2 = svmla_x (pg, s2, s2, y); -- svfloat64_t r0 = svmul_x (pg, r2, s1); -+ svfloat64_t r0 = svmul_x (svptrue_b64 (), r2, s1); - - return svsel (p_cmp, r1, r0); - } -@@ -103,11 +105,14 @@ svfloat64_t SV_NAME_D1 (exp10) (svfloat64_t x, svbool_t pg) - comes at significant performance cost. */ - svuint64_t u = svreinterpret_u64 (z); - svfloat64_t scale = svexpa (u); -- -+ svfloat64_t c24 = svld1rq (svptrue_b64 (), &d->c2); - /* Approximate exp10(r) using polynomial. */ -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t y = svmla_x (pg, svmul_x (pg, r, d->poly[0]), r2, -- sv_pairwise_poly_3_f64_x (pg, r, r2, d->poly + 1)); -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ svfloat64_t p12 = svmla_lane (sv_f64 (d->c1), r, c24, 0); -+ svfloat64_t p34 = svmla_lane (sv_f64 (d->c3), r, c24, 1); -+ svfloat64_t p14 = svmla_x (pg, p12, p34, r2); -+ -+ svfloat64_t y = svmla_x (pg, svmul_x (svptrue_b64 (), r, d->c0), r2, p14); - - /* Assemble result as exp10(x) = 2^n * exp10(r). If |x| > SpecialBound - multiplication may overflow, so use special case routine. */ -diff --git a/sysdeps/aarch64/fpu/exp2_sve.c b/sysdeps/aarch64/fpu/exp2_sve.c -index 22848ebfa5..5dfb77cdbc 100644 ---- a/sysdeps/aarch64/fpu/exp2_sve.c -+++ b/sysdeps/aarch64/fpu/exp2_sve.c -@@ -18,7 +18,6 @@ - . */ - - #include "sv_math.h" --#include "poly_sve_f64.h" - - #define N (1 << V_EXP_TABLE_BITS) - -@@ -27,15 +26,15 @@ - - static const struct data - { -- double poly[4]; -+ double c0, c2; -+ double c1, c3; - double shift, big_bound, uoflow_bound; - } data = { - /* Coefficients are computed using Remez algorithm with - minimisation of the absolute error. */ -- .poly = { 0x1.62e42fefa3686p-1, 0x1.ebfbdff82c241p-3, 0x1.c6b09b16de99ap-5, -- 0x1.3b2abf5571ad8p-7 }, -- .shift = 0x1.8p52 / N, -- .uoflow_bound = UOFlowBound, -+ .c0 = 0x1.62e42fefa3686p-1, .c1 = 0x1.ebfbdff82c241p-3, -+ .c2 = 0x1.c6b09b16de99ap-5, .c3 = 0x1.3b2abf5571ad8p-7, -+ .shift = 0x1.8p52 / N, .uoflow_bound = UOFlowBound, - .big_bound = BigBound, - }; - -@@ -67,9 +66,9 @@ special_case (svbool_t pg, svfloat64_t s, svfloat64_t y, svfloat64_t n, - /* |n| > 1280 => 2^(n) overflows. */ - svbool_t p_cmp = svacgt (pg, n, d->uoflow_bound); - -- svfloat64_t r1 = svmul_x (pg, s1, s1); -+ svfloat64_t r1 = svmul_x (svptrue_b64 (), s1, s1); - svfloat64_t r2 = svmla_x (pg, s2, s2, y); -- svfloat64_t r0 = svmul_x (pg, r2, s1); -+ svfloat64_t r0 = svmul_x (svptrue_b64 (), r2, s1); - - return svsel (p_cmp, r1, r0); - } -@@ -99,11 +98,14 @@ svfloat64_t SV_NAME_D1 (exp2) (svfloat64_t x, svbool_t pg) - svuint64_t top = svlsl_x (pg, ki, 52 - V_EXP_TABLE_BITS); - svfloat64_t scale = svreinterpret_f64 (svadd_x (pg, sbits, top)); - -+ svfloat64_t c13 = svld1rq (svptrue_b64 (), &d->c1); - /* Approximate exp2(r) using polynomial. */ -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t p = sv_pairwise_poly_3_f64_x (pg, r, r2, d->poly); -- svfloat64_t y = svmul_x (pg, r, p); -- -+ /* y = exp2(r) - 1 ~= C0 r + C1 r^2 + C2 r^3 + C3 r^4. */ -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ svfloat64_t p01 = svmla_lane (sv_f64 (d->c0), r, c13, 0); -+ svfloat64_t p23 = svmla_lane (sv_f64 (d->c2), r, c13, 1); -+ svfloat64_t p = svmla_x (pg, p01, p23, r2); -+ svfloat64_t y = svmul_x (svptrue_b64 (), r, p); - /* Assemble exp2(x) = exp2(r) * scale. */ - if (__glibc_unlikely (svptest_any (pg, special))) - return special_case (pg, scale, y, kd, d); -diff --git a/sysdeps/aarch64/fpu/exp_sve.c b/sysdeps/aarch64/fpu/exp_sve.c -index aabaaa1d61..b2421d493f 100644 ---- a/sysdeps/aarch64/fpu/exp_sve.c -+++ b/sysdeps/aarch64/fpu/exp_sve.c -@@ -21,12 +21,15 @@ - - static const struct data - { -- double poly[4]; -+ double c0, c2; -+ double c1, c3; - double ln2_hi, ln2_lo, inv_ln2, shift, thres; -+ - } data = { -- .poly = { /* ulp error: 0.53. */ -- 0x1.fffffffffdbcdp-2, 0x1.555555555444cp-3, 0x1.555573c6a9f7dp-5, -- 0x1.1111266d28935p-7 }, -+ .c0 = 0x1.fffffffffdbcdp-2, -+ .c1 = 0x1.555555555444cp-3, -+ .c2 = 0x1.555573c6a9f7dp-5, -+ .c3 = 0x1.1111266d28935p-7, - .ln2_hi = 0x1.62e42fefa3800p-1, - .ln2_lo = 0x1.ef35793c76730p-45, - /* 1/ln2. */ -@@ -36,7 +39,6 @@ static const struct data - .thres = 704.0, - }; - --#define C(i) sv_f64 (d->poly[i]) - #define SpecialOffset 0x6000000000000000 /* 0x1p513. */ - /* SpecialBias1 + SpecialBias1 = asuint(1.0). */ - #define SpecialBias1 0x7000000000000000 /* 0x1p769. */ -@@ -56,20 +58,20 @@ special_case (svbool_t pg, svfloat64_t s, svfloat64_t y, svfloat64_t n) - svuint64_t b - = svdup_u64_z (p_sign, SpecialOffset); /* Inactive lanes set to 0. */ - -- /* Set s1 to generate overflow depending on sign of exponent n. */ -- svfloat64_t s1 = svreinterpret_f64 ( -- svsubr_x (pg, b, SpecialBias1)); /* 0x70...0 - b. */ -- /* Offset s to avoid overflow in final result if n is below threshold. */ -+ /* Set s1 to generate overflow depending on sign of exponent n, -+ ie. s1 = 0x70...0 - b. */ -+ svfloat64_t s1 = svreinterpret_f64 (svsubr_x (pg, b, SpecialBias1)); -+ /* Offset s to avoid overflow in final result if n is below threshold. -+ ie. s2 = as_u64 (s) - 0x3010...0 + b. */ - svfloat64_t s2 = svreinterpret_f64 ( -- svadd_x (pg, svsub_x (pg, svreinterpret_u64 (s), SpecialBias2), -- b)); /* as_u64 (s) - 0x3010...0 + b. */ -+ svadd_x (pg, svsub_x (pg, svreinterpret_u64 (s), SpecialBias2), b)); - - /* |n| > 1280 => 2^(n) overflows. */ - svbool_t p_cmp = svacgt (pg, n, 1280.0); - -- svfloat64_t r1 = svmul_x (pg, s1, s1); -+ svfloat64_t r1 = svmul_x (svptrue_b64 (), s1, s1); - svfloat64_t r2 = svmla_x (pg, s2, s2, y); -- svfloat64_t r0 = svmul_x (pg, r2, s1); -+ svfloat64_t r0 = svmul_x (svptrue_b64 (), r2, s1); - - return svsel (p_cmp, r1, r0); - } -@@ -103,16 +105,16 @@ svfloat64_t SV_NAME_D1 (exp) (svfloat64_t x, const svbool_t pg) - svfloat64_t z = svmla_x (pg, sv_f64 (d->shift), x, d->inv_ln2); - svuint64_t u = svreinterpret_u64 (z); - svfloat64_t n = svsub_x (pg, z, d->shift); -- -+ svfloat64_t c13 = svld1rq (svptrue_b64 (), &d->c1); - /* r = x - n * ln2, r is in [-ln2/(2N), ln2/(2N)]. */ - svfloat64_t ln2 = svld1rq (svptrue_b64 (), &d->ln2_hi); - svfloat64_t r = svmls_lane (x, n, ln2, 0); - r = svmls_lane (r, n, ln2, 1); - - /* y = exp(r) - 1 ~= r + C0 r^2 + C1 r^3 + C2 r^4 + C3 r^5. */ -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t p01 = svmla_x (pg, C (0), C (1), r); -- svfloat64_t p23 = svmla_x (pg, C (2), C (3), r); -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ svfloat64_t p01 = svmla_lane (sv_f64 (d->c0), r, c13, 0); -+ svfloat64_t p23 = svmla_lane (sv_f64 (d->c2), r, c13, 1); - svfloat64_t p04 = svmla_x (pg, p01, p23, r2); - svfloat64_t y = svmla_x (pg, r, p04, r2); - -diff --git a/sysdeps/aarch64/fpu/sv_expf_inline.h b/sysdeps/aarch64/fpu/sv_expf_inline.h -index 6166df6553..75781fb4dd 100644 ---- a/sysdeps/aarch64/fpu/sv_expf_inline.h -+++ b/sysdeps/aarch64/fpu/sv_expf_inline.h -@@ -61,7 +61,7 @@ expf_inline (svfloat32_t x, const svbool_t pg, const struct sv_expf_data *d) - /* scale = 2^(n/N). */ - svfloat32_t scale = svexpa (svreinterpret_u32 (z)); - -- /* y = exp(r) - 1 ~= r + C0 r^2 + C1 r^3 + C2 r^4 + C3 r^5 + C4 r^6. */ -+ /* poly(r) = exp(r) - 1 ~= C0 r + C1 r^2 + C2 r^3 + C3 r^4 + C4 r^5. */ - svfloat32_t p12 = svmla_lane (sv_f32 (d->c1), r, lane_consts, 2); - svfloat32_t p34 = svmla_lane (sv_f32 (d->c3), r, lane_consts, 3); - svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); -@@ -71,5 +71,4 @@ expf_inline (svfloat32_t x, const svbool_t pg, const struct sv_expf_data *d) - - return svmla_x (pg, scale, scale, poly); - } -- - #endif - -commit 194185c28954dfa11a6ded8b32f34fee680d3218 -Author: Yat Long Poon -Date: Thu Feb 13 18:00:50 2025 +0000 - - AArch64: Improve codegen for SVE erfcf - - Reduce number of MOV/MOVPRFXs and use unpredicated FMUL. - Replace MUL with LSL. Speedup on Neoverse V1: 6%. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit f5ff34cb3c75ec1061c75bb9188b3c1176426947) - -diff --git a/sysdeps/aarch64/fpu/erfcf_sve.c b/sysdeps/aarch64/fpu/erfcf_sve.c -index ecacb933ac..e4869263e3 100644 ---- a/sysdeps/aarch64/fpu/erfcf_sve.c -+++ b/sysdeps/aarch64/fpu/erfcf_sve.c -@@ -76,7 +76,7 @@ svfloat32_t SV_NAME_F1 (erfc) (svfloat32_t x, const svbool_t pg) - svuint32_t i = svqadd (svreinterpret_u32 (z), dat->off_idx); - - /* Lookup erfc(r) and 2/sqrt(pi)*exp(-r^2) in tables. */ -- i = svmul_x (pg, i, 2); -+ i = svlsl_x (svptrue_b32 (), i, 1); - const float32_t *p = &__v_erfcf_data.tab[0].erfc - 2 * dat->off_arr; - svfloat32_t erfcr = svld1_gather_index (pg, p, i); - svfloat32_t scale = svld1_gather_index (pg, p + 1, i); -@@ -84,15 +84,15 @@ svfloat32_t SV_NAME_F1 (erfc) (svfloat32_t x, const svbool_t pg) - /* erfc(x) ~ erfc(r) - scale * d * poly(r, d). */ - svfloat32_t r = svsub_x (pg, z, shift); - svfloat32_t d = svsub_x (pg, a, r); -- svfloat32_t d2 = svmul_x (pg, d, d); -- svfloat32_t r2 = svmul_x (pg, r, r); -+ svfloat32_t d2 = svmul_x (svptrue_b32 (), d, d); -+ svfloat32_t r2 = svmul_x (svptrue_b32 (), r, r); - - svfloat32_t coeffs = svld1rq (svptrue_b32 (), &dat->third); -- svfloat32_t third = svdup_lane (coeffs, 0); - - svfloat32_t p1 = r; -- svfloat32_t p2 = svmls_lane (third, r2, coeffs, 1); -- svfloat32_t p3 = svmul_x (pg, r, svmla_lane (sv_f32 (-0.5), r2, coeffs, 0)); -+ svfloat32_t p2 = svmls_lane (sv_f32 (dat->third), r2, coeffs, 1); -+ svfloat32_t p3 -+ = svmul_x (svptrue_b32 (), r, svmla_lane (sv_f32 (-0.5), r2, coeffs, 0)); - svfloat32_t p4 = svmla_lane (sv_f32 (dat->two_over_five), r2, coeffs, 2); - p4 = svmls_x (pg, sv_f32 (dat->tenth), r2, p4); - - -commit 7dc549c5a4af3c32689147550144397116404d22 -Author: Yat Long Poon -Date: Thu Feb 13 18:02:01 2025 +0000 - - AArch64: Improve codegen for SVE pow - - Move constants to struct. Improve memory access with indexed/unpredicated - instructions. Eliminate register spills. Speedup on Neoverse V1: 24%. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 0b195651db3ae793187c7dd6d78b5a7a8da9d5e6) - -diff --git a/sysdeps/aarch64/fpu/pow_sve.c b/sysdeps/aarch64/fpu/pow_sve.c -index 4c0bf8956c..4242d22a49 100644 ---- a/sysdeps/aarch64/fpu/pow_sve.c -+++ b/sysdeps/aarch64/fpu/pow_sve.c -@@ -44,19 +44,18 @@ - - /* Data is defined in v_pow_log_data.c. */ - #define N_LOG (1 << V_POW_LOG_TABLE_BITS) --#define A __v_pow_log_data.poly - #define Off 0x3fe6955500000000 - - /* Data is defined in v_pow_exp_data.c. */ - #define N_EXP (1 << V_POW_EXP_TABLE_BITS) - #define SignBias (0x800 << V_POW_EXP_TABLE_BITS) --#define C __v_pow_exp_data.poly - #define SmallExp 0x3c9 /* top12(0x1p-54). */ - #define BigExp 0x408 /* top12(512.). */ - #define ThresExp 0x03f /* BigExp - SmallExp. */ - #define HugeExp 0x409 /* top12(1024.). */ - - /* Constants associated with pow. */ -+#define SmallBoundX 0x1p-126 - #define SmallPowX 0x001 /* top12(0x1p-126). */ - #define BigPowX 0x7ff /* top12(INFINITY). */ - #define ThresPowX 0x7fe /* BigPowX - SmallPowX. */ -@@ -64,6 +63,31 @@ - #define BigPowY 0x43e /* top12(0x1.749p62). */ - #define ThresPowY 0x080 /* BigPowY - SmallPowY. */ - -+static const struct data -+{ -+ double log_c0, log_c2, log_c4, log_c6, ln2_hi, ln2_lo; -+ double log_c1, log_c3, log_c5, off; -+ double n_over_ln2, exp_c2, ln2_over_n_hi, ln2_over_n_lo; -+ double exp_c0, exp_c1; -+} data = { -+ .log_c0 = -0x1p-1, -+ .log_c1 = -0x1.555555555556p-1, -+ .log_c2 = 0x1.0000000000006p-1, -+ .log_c3 = 0x1.999999959554ep-1, -+ .log_c4 = -0x1.555555529a47ap-1, -+ .log_c5 = -0x1.2495b9b4845e9p0, -+ .log_c6 = 0x1.0002b8b263fc3p0, -+ .off = Off, -+ .exp_c0 = 0x1.fffffffffffd4p-2, -+ .exp_c1 = 0x1.5555571d6ef9p-3, -+ .exp_c2 = 0x1.5555576a5adcep-5, -+ .ln2_hi = 0x1.62e42fefa3800p-1, -+ .ln2_lo = 0x1.ef35793c76730p-45, -+ .n_over_ln2 = 0x1.71547652b82fep0 * N_EXP, -+ .ln2_over_n_hi = 0x1.62e42fefc0000p-9, -+ .ln2_over_n_lo = -0x1.c610ca86c3899p-45, -+}; -+ - /* Check if x is an integer. */ - static inline svbool_t - sv_isint (svbool_t pg, svfloat64_t x) -@@ -82,7 +106,7 @@ sv_isnotint (svbool_t pg, svfloat64_t x) - static inline svbool_t - sv_isodd (svbool_t pg, svfloat64_t x) - { -- svfloat64_t y = svmul_x (pg, x, 0.5); -+ svfloat64_t y = svmul_x (svptrue_b64 (), x, 0.5); - return sv_isnotint (pg, y); - } - -@@ -121,7 +145,7 @@ zeroinfnan (uint64_t i) - static inline svbool_t - sv_zeroinfnan (svbool_t pg, svuint64_t i) - { -- return svcmpge (pg, svsub_x (pg, svmul_x (pg, i, 2), 1), -+ return svcmpge (pg, svsub_x (pg, svadd_x (pg, i, i), 1), - 2 * asuint64 (INFINITY) - 1); - } - -@@ -174,16 +198,17 @@ sv_call_specialcase (svfloat64_t x1, svuint64_t u1, svuint64_t u2, - additional 15 bits precision. IX is the bit representation of x, but - normalized in the subnormal range using the sign bit for the exponent. */ - static inline svfloat64_t --sv_log_inline (svbool_t pg, svuint64_t ix, svfloat64_t *tail) -+sv_log_inline (svbool_t pg, svuint64_t ix, svfloat64_t *tail, -+ const struct data *d) - { - /* x = 2^k z; where z is in range [Off,2*Off) and exact. - The range is split into N subintervals. - The ith subinterval contains z and c is near its center. */ -- svuint64_t tmp = svsub_x (pg, ix, Off); -+ svuint64_t tmp = svsub_x (pg, ix, d->off); - svuint64_t i = svand_x (pg, svlsr_x (pg, tmp, 52 - V_POW_LOG_TABLE_BITS), - sv_u64 (N_LOG - 1)); - svint64_t k = svasr_x (pg, svreinterpret_s64 (tmp), 52); -- svuint64_t iz = svsub_x (pg, ix, svand_x (pg, tmp, sv_u64 (0xfffULL << 52))); -+ svuint64_t iz = svsub_x (pg, ix, svlsl_x (pg, svreinterpret_u64 (k), 52)); - svfloat64_t z = svreinterpret_f64 (iz); - svfloat64_t kd = svcvt_f64_x (pg, k); - -@@ -199,40 +224,85 @@ sv_log_inline (svbool_t pg, svuint64_t ix, svfloat64_t *tail) - |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible. */ - svfloat64_t r = svmad_x (pg, z, invc, -1.0); - /* k*Ln2 + log(c) + r. */ -- svfloat64_t t1 = svmla_x (pg, logc, kd, __v_pow_log_data.ln2_hi); -+ -+ svfloat64_t ln2_hilo = svld1rq_f64 (svptrue_b64 (), &d->ln2_hi); -+ svfloat64_t t1 = svmla_lane_f64 (logc, kd, ln2_hilo, 0); - svfloat64_t t2 = svadd_x (pg, t1, r); -- svfloat64_t lo1 = svmla_x (pg, logctail, kd, __v_pow_log_data.ln2_lo); -+ svfloat64_t lo1 = svmla_lane_f64 (logctail, kd, ln2_hilo, 1); - svfloat64_t lo2 = svadd_x (pg, svsub_x (pg, t1, t2), r); - - /* Evaluation is optimized assuming superscalar pipelined execution. */ -- svfloat64_t ar = svmul_x (pg, r, -0.5); /* A[0] = -0.5. */ -- svfloat64_t ar2 = svmul_x (pg, r, ar); -- svfloat64_t ar3 = svmul_x (pg, r, ar2); -+ -+ svfloat64_t log_c02 = svld1rq_f64 (svptrue_b64 (), &d->log_c0); -+ svfloat64_t ar = svmul_lane_f64 (r, log_c02, 0); -+ svfloat64_t ar2 = svmul_x (svptrue_b64 (), r, ar); -+ svfloat64_t ar3 = svmul_x (svptrue_b64 (), r, ar2); - /* k*Ln2 + log(c) + r + A[0]*r*r. */ - svfloat64_t hi = svadd_x (pg, t2, ar2); -- svfloat64_t lo3 = svmla_x (pg, svneg_x (pg, ar2), ar, r); -+ svfloat64_t lo3 = svmls_x (pg, ar2, ar, r); - svfloat64_t lo4 = svadd_x (pg, svsub_x (pg, t2, hi), ar2); - /* p = log1p(r) - r - A[0]*r*r. */ - /* p = (ar3 * (A[1] + r * A[2] + ar2 * (A[3] + r * A[4] + ar2 * (A[5] + r * - A[6])))). */ -- svfloat64_t a56 = svmla_x (pg, sv_f64 (A[5]), r, A[6]); -- svfloat64_t a34 = svmla_x (pg, sv_f64 (A[3]), r, A[4]); -- svfloat64_t a12 = svmla_x (pg, sv_f64 (A[1]), r, A[2]); -+ -+ svfloat64_t log_c46 = svld1rq_f64 (svptrue_b64 (), &d->log_c4); -+ svfloat64_t a56 = svmla_lane_f64 (sv_f64 (d->log_c5), r, log_c46, 1); -+ svfloat64_t a34 = svmla_lane_f64 (sv_f64 (d->log_c3), r, log_c46, 0); -+ svfloat64_t a12 = svmla_lane_f64 (sv_f64 (d->log_c1), r, log_c02, 1); - svfloat64_t p = svmla_x (pg, a34, ar2, a56); - p = svmla_x (pg, a12, ar2, p); -- p = svmul_x (pg, ar3, p); -+ p = svmul_x (svptrue_b64 (), ar3, p); - svfloat64_t lo = svadd_x ( -- pg, svadd_x (pg, svadd_x (pg, svadd_x (pg, lo1, lo2), lo3), lo4), p); -+ pg, svadd_x (pg, svsub_x (pg, svadd_x (pg, lo1, lo2), lo3), lo4), p); - svfloat64_t y = svadd_x (pg, hi, lo); - *tail = svadd_x (pg, svsub_x (pg, hi, y), lo); - return y; - } - -+static inline svfloat64_t -+sv_exp_core (svbool_t pg, svfloat64_t x, svfloat64_t xtail, -+ svuint64_t sign_bias, svfloat64_t *tmp, svuint64_t *sbits, -+ svuint64_t *ki, const struct data *d) -+{ -+ /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]. */ -+ /* x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]. */ -+ svfloat64_t n_over_ln2_and_c2 = svld1rq_f64 (svptrue_b64 (), &d->n_over_ln2); -+ svfloat64_t z = svmul_lane_f64 (x, n_over_ln2_and_c2, 0); -+ /* z - kd is in [-1, 1] in non-nearest rounding modes. */ -+ svfloat64_t kd = svrinta_x (pg, z); -+ *ki = svreinterpret_u64 (svcvt_s64_x (pg, kd)); -+ -+ svfloat64_t ln2_over_n_hilo -+ = svld1rq_f64 (svptrue_b64 (), &d->ln2_over_n_hi); -+ svfloat64_t r = x; -+ r = svmls_lane_f64 (r, kd, ln2_over_n_hilo, 0); -+ r = svmls_lane_f64 (r, kd, ln2_over_n_hilo, 1); -+ /* The code assumes 2^-200 < |xtail| < 2^-8/N. */ -+ r = svadd_x (pg, r, xtail); -+ /* 2^(k/N) ~= scale. */ -+ svuint64_t idx = svand_x (pg, *ki, N_EXP - 1); -+ svuint64_t top -+ = svlsl_x (pg, svadd_x (pg, *ki, sign_bias), 52 - V_POW_EXP_TABLE_BITS); -+ /* This is only a valid scale when -1023*N < k < 1024*N. */ -+ *sbits = svld1_gather_index (pg, __v_pow_exp_data.sbits, idx); -+ *sbits = svadd_x (pg, *sbits, top); -+ /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (exp(r) - 1). */ -+ svfloat64_t r2 = svmul_x (svptrue_b64 (), r, r); -+ *tmp = svmla_lane_f64 (sv_f64 (d->exp_c1), r, n_over_ln2_and_c2, 1); -+ *tmp = svmla_x (pg, sv_f64 (d->exp_c0), r, *tmp); -+ *tmp = svmla_x (pg, r, r2, *tmp); -+ svfloat64_t scale = svreinterpret_f64 (*sbits); -+ /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there -+ is no spurious underflow here even without fma. */ -+ z = svmla_x (pg, scale, scale, *tmp); -+ return z; -+} -+ - /* Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|. - The sign_bias argument is SignBias or 0 and sets the sign to -1 or 1. */ - static inline svfloat64_t - sv_exp_inline (svbool_t pg, svfloat64_t x, svfloat64_t xtail, -- svuint64_t sign_bias) -+ svuint64_t sign_bias, const struct data *d) - { - /* 3 types of special cases: tiny (uflow and spurious uflow), huge (oflow) - and other cases of large values of x (scale * (1 + TMP) oflow). */ -@@ -240,73 +310,46 @@ sv_exp_inline (svbool_t pg, svfloat64_t x, svfloat64_t xtail, - /* |x| is large (|x| >= 512) or tiny (|x| <= 0x1p-54). */ - svbool_t uoflow = svcmpge (pg, svsub_x (pg, abstop, SmallExp), ThresExp); - -- /* Conditions special, uflow and oflow are all expressed as uoflow && -- something, hence do not bother computing anything if no lane in uoflow is -- true. */ -- svbool_t special = svpfalse_b (); -- svbool_t uflow = svpfalse_b (); -- svbool_t oflow = svpfalse_b (); -+ svfloat64_t tmp; -+ svuint64_t sbits, ki; - if (__glibc_unlikely (svptest_any (pg, uoflow))) - { -+ svfloat64_t z -+ = sv_exp_core (pg, x, xtail, sign_bias, &tmp, &sbits, &ki, d); -+ - /* |x| is tiny (|x| <= 0x1p-54). */ -- uflow = svcmpge (pg, svsub_x (pg, abstop, SmallExp), 0x80000000); -+ svbool_t uflow -+ = svcmpge (pg, svsub_x (pg, abstop, SmallExp), 0x80000000); - uflow = svand_z (pg, uoflow, uflow); - /* |x| is huge (|x| >= 1024). */ -- oflow = svcmpge (pg, abstop, HugeExp); -+ svbool_t oflow = svcmpge (pg, abstop, HugeExp); - oflow = svand_z (pg, uoflow, svbic_z (pg, oflow, uflow)); -+ - /* For large |x| values (512 < |x| < 1024) scale * (1 + TMP) can overflow -- or underflow. */ -- special = svbic_z (pg, uoflow, svorr_z (pg, uflow, oflow)); -+ or underflow. */ -+ svbool_t special = svbic_z (pg, uoflow, svorr_z (pg, uflow, oflow)); -+ -+ /* Update result with special and large cases. */ -+ z = sv_call_specialcase (tmp, sbits, ki, z, special); -+ -+ /* Handle underflow and overflow. */ -+ svbool_t x_is_neg = svcmplt (pg, x, 0); -+ svuint64_t sign_mask -+ = svlsl_x (pg, sign_bias, 52 - V_POW_EXP_TABLE_BITS); -+ svfloat64_t res_uoflow -+ = svsel (x_is_neg, sv_f64 (0.0), sv_f64 (INFINITY)); -+ res_uoflow = svreinterpret_f64 ( -+ svorr_x (pg, svreinterpret_u64 (res_uoflow), sign_mask)); -+ /* Avoid spurious underflow for tiny x. */ -+ svfloat64_t res_spurious_uflow -+ = svreinterpret_f64 (svorr_x (pg, sign_mask, 0x3ff0000000000000)); -+ -+ z = svsel (oflow, res_uoflow, z); -+ z = svsel (uflow, res_spurious_uflow, z); -+ return z; - } - -- /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)]. */ -- /* x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N]. */ -- svfloat64_t z = svmul_x (pg, x, __v_pow_exp_data.n_over_ln2); -- /* z - kd is in [-1, 1] in non-nearest rounding modes. */ -- svfloat64_t shift = sv_f64 (__v_pow_exp_data.shift); -- svfloat64_t kd = svadd_x (pg, z, shift); -- svuint64_t ki = svreinterpret_u64 (kd); -- kd = svsub_x (pg, kd, shift); -- svfloat64_t r = x; -- r = svmls_x (pg, r, kd, __v_pow_exp_data.ln2_over_n_hi); -- r = svmls_x (pg, r, kd, __v_pow_exp_data.ln2_over_n_lo); -- /* The code assumes 2^-200 < |xtail| < 2^-8/N. */ -- r = svadd_x (pg, r, xtail); -- /* 2^(k/N) ~= scale. */ -- svuint64_t idx = svand_x (pg, ki, N_EXP - 1); -- svuint64_t top -- = svlsl_x (pg, svadd_x (pg, ki, sign_bias), 52 - V_POW_EXP_TABLE_BITS); -- /* This is only a valid scale when -1023*N < k < 1024*N. */ -- svuint64_t sbits = svld1_gather_index (pg, __v_pow_exp_data.sbits, idx); -- sbits = svadd_x (pg, sbits, top); -- /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (exp(r) - 1). */ -- svfloat64_t r2 = svmul_x (pg, r, r); -- svfloat64_t tmp = svmla_x (pg, sv_f64 (C[1]), r, C[2]); -- tmp = svmla_x (pg, sv_f64 (C[0]), r, tmp); -- tmp = svmla_x (pg, r, r2, tmp); -- svfloat64_t scale = svreinterpret_f64 (sbits); -- /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there -- is no spurious underflow here even without fma. */ -- z = svmla_x (pg, scale, scale, tmp); -- -- /* Update result with special and large cases. */ -- if (__glibc_unlikely (svptest_any (pg, special))) -- z = sv_call_specialcase (tmp, sbits, ki, z, special); -- -- /* Handle underflow and overflow. */ -- svuint64_t sign_bit = svlsr_x (pg, svreinterpret_u64 (x), 63); -- svbool_t x_is_neg = svcmpne (pg, sign_bit, 0); -- svuint64_t sign_mask = svlsl_x (pg, sign_bias, 52 - V_POW_EXP_TABLE_BITS); -- svfloat64_t res_uoflow = svsel (x_is_neg, sv_f64 (0.0), sv_f64 (INFINITY)); -- res_uoflow = svreinterpret_f64 ( -- svorr_x (pg, svreinterpret_u64 (res_uoflow), sign_mask)); -- z = svsel (oflow, res_uoflow, z); -- /* Avoid spurious underflow for tiny x. */ -- svfloat64_t res_spurious_uflow -- = svreinterpret_f64 (svorr_x (pg, sign_mask, 0x3ff0000000000000)); -- z = svsel (uflow, res_spurious_uflow, z); -- -- return z; -+ return sv_exp_core (pg, x, xtail, sign_bias, &tmp, &sbits, &ki, d); - } - - static inline double -@@ -341,47 +384,39 @@ pow_sc (double x, double y) - - svfloat64_t SV_NAME_D2 (pow) (svfloat64_t x, svfloat64_t y, const svbool_t pg) - { -+ const struct data *d = ptr_barrier (&data); -+ - /* This preamble handles special case conditions used in the final scalar - fallbacks. It also updates ix and sign_bias, that are used in the core - computation too, i.e., exp( y * log (x) ). */ - svuint64_t vix0 = svreinterpret_u64 (x); - svuint64_t viy0 = svreinterpret_u64 (y); -- svuint64_t vtopx0 = svlsr_x (svptrue_b64 (), vix0, 52); - - /* Negative x cases. */ -- svuint64_t sign_bit = svlsr_m (pg, vix0, 63); -- svbool_t xisneg = svcmpeq (pg, sign_bit, 1); -+ svbool_t xisneg = svcmplt (pg, x, 0); - - /* Set sign_bias and ix depending on sign of x and nature of y. */ -- svbool_t yisnotint_xisneg = svpfalse_b (); -+ svbool_t yint_or_xpos = pg; - svuint64_t sign_bias = sv_u64 (0); - svuint64_t vix = vix0; -- svuint64_t vtopx1 = vtopx0; - if (__glibc_unlikely (svptest_any (pg, xisneg))) - { - /* Determine nature of y. */ -- yisnotint_xisneg = sv_isnotint (xisneg, y); -- svbool_t yisint_xisneg = sv_isint (xisneg, y); -+ yint_or_xpos = sv_isint (xisneg, y); - svbool_t yisodd_xisneg = sv_isodd (xisneg, y); - /* ix set to abs(ix) if y is integer. */ -- vix = svand_m (yisint_xisneg, vix0, 0x7fffffffffffffff); -- vtopx1 = svand_m (yisint_xisneg, vtopx0, 0x7ff); -+ vix = svand_m (yint_or_xpos, vix0, 0x7fffffffffffffff); - /* Set to SignBias if x is negative and y is odd. */ - sign_bias = svsel (yisodd_xisneg, sv_u64 (SignBias), sv_u64 (0)); - } - -- /* Special cases of x or y: zero, inf and nan. */ -- svbool_t xspecial = sv_zeroinfnan (pg, vix0); -- svbool_t yspecial = sv_zeroinfnan (pg, viy0); -- svbool_t special = svorr_z (pg, xspecial, yspecial); -- - /* Small cases of x: |x| < 0x1p-126. */ -- svuint64_t vabstopx0 = svand_x (pg, vtopx0, 0x7ff); -- svbool_t xsmall = svcmplt (pg, vabstopx0, SmallPowX); -- if (__glibc_unlikely (svptest_any (pg, xsmall))) -+ svbool_t xsmall = svaclt (yint_or_xpos, x, SmallBoundX); -+ if (__glibc_unlikely (svptest_any (yint_or_xpos, xsmall))) - { - /* Normalize subnormal x so exponent becomes negative. */ -- svbool_t topx_is_null = svcmpeq (xsmall, vtopx1, 0); -+ svuint64_t vtopx = svlsr_x (svptrue_b64 (), vix, 52); -+ svbool_t topx_is_null = svcmpeq (xsmall, vtopx, 0); - - svuint64_t vix_norm = svreinterpret_u64 (svmul_m (xsmall, x, 0x1p52)); - vix_norm = svand_m (xsmall, vix_norm, 0x7fffffffffffffff); -@@ -391,20 +426,24 @@ svfloat64_t SV_NAME_D2 (pow) (svfloat64_t x, svfloat64_t y, const svbool_t pg) - - /* y_hi = log(ix, &y_lo). */ - svfloat64_t vlo; -- svfloat64_t vhi = sv_log_inline (pg, vix, &vlo); -+ svfloat64_t vhi = sv_log_inline (yint_or_xpos, vix, &vlo, d); - - /* z = exp(y_hi, y_lo, sign_bias). */ -- svfloat64_t vehi = svmul_x (pg, y, vhi); -- svfloat64_t velo = svmul_x (pg, y, vlo); -- svfloat64_t vemi = svmls_x (pg, vehi, y, vhi); -- velo = svsub_x (pg, velo, vemi); -- svfloat64_t vz = sv_exp_inline (pg, vehi, velo, sign_bias); -+ svfloat64_t vehi = svmul_x (svptrue_b64 (), y, vhi); -+ svfloat64_t vemi = svmls_x (yint_or_xpos, vehi, y, vhi); -+ svfloat64_t velo = svnmls_x (yint_or_xpos, vemi, y, vlo); -+ svfloat64_t vz = sv_exp_inline (yint_or_xpos, vehi, velo, sign_bias, d); - - /* Cases of finite y and finite negative x. */ -- vz = svsel (yisnotint_xisneg, sv_f64 (__builtin_nan ("")), vz); -+ vz = svsel (yint_or_xpos, vz, sv_f64 (__builtin_nan (""))); -+ -+ /* Special cases of x or y: zero, inf and nan. */ -+ svbool_t xspecial = sv_zeroinfnan (svptrue_b64 (), vix0); -+ svbool_t yspecial = sv_zeroinfnan (svptrue_b64 (), viy0); -+ svbool_t special = svorr_z (svptrue_b64 (), xspecial, yspecial); - - /* Cases of zero/inf/nan x or y. */ -- if (__glibc_unlikely (svptest_any (pg, special))) -+ if (__glibc_unlikely (svptest_any (svptrue_b64 (), special))) - vz = sv_call2_f64 (pow_sc, x, y, vz, special); - - return vz; - -commit 06fd8ad78f35a6cc65dc7c6c08ce55faf6ad079d -Author: Yat Long Poon -Date: Thu Feb 13 18:03:04 2025 +0000 - - AArch64: Improve codegen for SVE powf - - Improve memory access with indexed/unpredicated instructions. - Eliminate register spills. Speedup on Neoverse V1: 3%. - - Reviewed-by: Wilco Dijkstra - (cherry picked from commit 95e807209b680257a9afe81a507754f1565dbb4d) - -diff --git a/sysdeps/aarch64/fpu/powf_sve.c b/sysdeps/aarch64/fpu/powf_sve.c -index 4f6a142325..08d7019a18 100644 ---- a/sysdeps/aarch64/fpu/powf_sve.c -+++ b/sysdeps/aarch64/fpu/powf_sve.c -@@ -26,7 +26,6 @@ - #define Tlogc __v_powf_data.logc - #define Texp __v_powf_data.scale - #define SignBias (1 << (V_POWF_EXP2_TABLE_BITS + 11)) --#define Shift 0x1.8p52 - #define Norm 0x1p23f /* 0x4b000000. */ - - /* Overall ULP error bound for pow is 2.6 ulp -@@ -36,7 +35,7 @@ static const struct data - double log_poly[4]; - double exp_poly[3]; - float uflow_bound, oflow_bound, small_bound; -- uint32_t sign_bias, sign_mask, subnormal_bias, off; -+ uint32_t sign_bias, subnormal_bias, off; - } data = { - /* rel err: 1.5 * 2^-30. Each coefficients is multiplied the value of - V_POWF_EXP2_N. */ -@@ -53,7 +52,6 @@ static const struct data - .small_bound = 0x1p-126f, - .off = 0x3f35d000, - .sign_bias = SignBias, -- .sign_mask = 0x80000000, - .subnormal_bias = 0x0b800000, /* 23 << 23. */ - }; - -@@ -86,7 +84,7 @@ svisodd (svbool_t pg, svfloat32_t x) - static inline svbool_t - sv_zeroinfnan (svbool_t pg, svuint32_t i) - { -- return svcmpge (pg, svsub_x (pg, svmul_x (pg, i, 2u), 1), -+ return svcmpge (pg, svsub_x (pg, svadd_x (pg, i, i), 1), - 2u * 0x7f800000 - 1); - } - -@@ -150,9 +148,14 @@ powf_specialcase (float x, float y, float z) - } - - /* Scalar fallback for special case routines with custom signature. */ --static inline svfloat32_t --sv_call_powf_sc (svfloat32_t x1, svfloat32_t x2, svfloat32_t y, svbool_t cmp) -+static svfloat32_t NOINLINE -+sv_call_powf_sc (svfloat32_t x1, svfloat32_t x2, svfloat32_t y) - { -+ /* Special cases of x or y: zero, inf and nan. */ -+ svbool_t xspecial = sv_zeroinfnan (svptrue_b32 (), svreinterpret_u32 (x1)); -+ svbool_t yspecial = sv_zeroinfnan (svptrue_b32 (), svreinterpret_u32 (x2)); -+ svbool_t cmp = svorr_z (svptrue_b32 (), xspecial, yspecial); -+ - svbool_t p = svpfirst (cmp, svpfalse ()); - while (svptest_any (cmp, p)) - { -@@ -182,30 +185,30 @@ sv_powf_core_ext (const svbool_t pg, svuint64_t i, svfloat64_t z, svint64_t k, - - /* Polynomial to approximate log1p(r)/ln2. */ - svfloat64_t logx = A (0); -- logx = svmla_x (pg, A (1), r, logx); -- logx = svmla_x (pg, A (2), r, logx); -- logx = svmla_x (pg, A (3), r, logx); -- logx = svmla_x (pg, y0, r, logx); -+ logx = svmad_x (pg, r, logx, A (1)); -+ logx = svmad_x (pg, r, logx, A (2)); -+ logx = svmad_x (pg, r, logx, A (3)); -+ logx = svmad_x (pg, r, logx, y0); - *pylogx = svmul_x (pg, y, logx); - - /* z - kd is in [-1, 1] in non-nearest rounding modes. */ -- svfloat64_t kd = svadd_x (pg, *pylogx, Shift); -- svuint64_t ki = svreinterpret_u64 (kd); -- kd = svsub_x (pg, kd, Shift); -+ svfloat64_t kd = svrinta_x (svptrue_b64 (), *pylogx); -+ svuint64_t ki = svreinterpret_u64 (svcvt_s64_x (svptrue_b64 (), kd)); - - r = svsub_x (pg, *pylogx, kd); - - /* exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1). */ -- svuint64_t t -- = svld1_gather_index (pg, Texp, svand_x (pg, ki, V_POWF_EXP2_N - 1)); -- svuint64_t ski = svadd_x (pg, ki, sign_bias); -- t = svadd_x (pg, t, svlsl_x (pg, ski, 52 - V_POWF_EXP2_TABLE_BITS)); -+ svuint64_t t = svld1_gather_index ( -+ svptrue_b64 (), Texp, svand_x (svptrue_b64 (), ki, V_POWF_EXP2_N - 1)); -+ svuint64_t ski = svadd_x (svptrue_b64 (), ki, sign_bias); -+ t = svadd_x (svptrue_b64 (), t, -+ svlsl_x (svptrue_b64 (), ski, 52 - V_POWF_EXP2_TABLE_BITS)); - svfloat64_t s = svreinterpret_f64 (t); - - svfloat64_t p = C (0); - p = svmla_x (pg, C (1), p, r); - p = svmla_x (pg, C (2), p, r); -- p = svmla_x (pg, s, p, svmul_x (pg, s, r)); -+ p = svmla_x (pg, s, p, svmul_x (svptrue_b64 (), s, r)); - - return p; - } -@@ -219,19 +222,16 @@ sv_powf_core (const svbool_t pg, svuint32_t i, svuint32_t iz, svint32_t k, - { - const svbool_t ptrue = svptrue_b64 (); - -- /* Unpack and promote input vectors (pg, y, z, i, k and sign_bias) into two in -- order to perform core computation in double precision. */ -+ /* Unpack and promote input vectors (pg, y, z, i, k and sign_bias) into two -+ * in order to perform core computation in double precision. */ - const svbool_t pg_lo = svunpklo (pg); - const svbool_t pg_hi = svunpkhi (pg); -- svfloat64_t y_lo = svcvt_f64_x ( -- ptrue, svreinterpret_f32 (svunpklo (svreinterpret_u32 (y)))); -- svfloat64_t y_hi = svcvt_f64_x ( -- ptrue, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (y)))); -- svfloat32_t z = svreinterpret_f32 (iz); -- svfloat64_t z_lo = svcvt_f64_x ( -- ptrue, svreinterpret_f32 (svunpklo (svreinterpret_u32 (z)))); -- svfloat64_t z_hi = svcvt_f64_x ( -- ptrue, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (z)))); -+ svfloat64_t y_lo -+ = svcvt_f64_x (pg, svreinterpret_f32 (svunpklo (svreinterpret_u32 (y)))); -+ svfloat64_t y_hi -+ = svcvt_f64_x (pg, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (y)))); -+ svfloat64_t z_lo = svcvt_f64_x (pg, svreinterpret_f32 (svunpklo (iz))); -+ svfloat64_t z_hi = svcvt_f64_x (pg, svreinterpret_f32 (svunpkhi (iz))); - svuint64_t i_lo = svunpklo (i); - svuint64_t i_hi = svunpkhi (i); - svint64_t k_lo = svunpklo (k); -@@ -258,9 +258,9 @@ sv_powf_core (const svbool_t pg, svuint32_t i, svuint32_t iz, svint32_t k, - /* Implementation of SVE powf. - Provides the same accuracy as AdvSIMD powf, since it relies on the same - algorithm. The theoretical maximum error is under 2.60 ULPs. -- Maximum measured error is 2.56 ULPs: -- SV_NAME_F2 (pow) (0x1.004118p+0, 0x1.5d14a4p+16) got 0x1.fd4bp+127 -- want 0x1.fd4b06p+127. */ -+ Maximum measured error is 2.57 ULPs: -+ SV_NAME_F2 (pow) (0x1.031706p+0, 0x1.ce2ec2p+12) got 0x1.fff868p+127 -+ want 0x1.fff862p+127. */ - svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg) - { - const struct data *d = ptr_barrier (&data); -@@ -269,21 +269,19 @@ svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg) - svuint32_t viy0 = svreinterpret_u32 (y); - - /* Negative x cases. */ -- svuint32_t sign_bit = svand_m (pg, vix0, d->sign_mask); -- svbool_t xisneg = svcmpeq (pg, sign_bit, d->sign_mask); -+ svbool_t xisneg = svcmplt (pg, x, sv_f32 (0)); - - /* Set sign_bias and ix depending on sign of x and nature of y. */ -- svbool_t yisnotint_xisneg = svpfalse_b (); -+ svbool_t yint_or_xpos = pg; - svuint32_t sign_bias = sv_u32 (0); - svuint32_t vix = vix0; - if (__glibc_unlikely (svptest_any (pg, xisneg))) - { - /* Determine nature of y. */ -- yisnotint_xisneg = svisnotint (xisneg, y); -- svbool_t yisint_xisneg = svisint (xisneg, y); -+ yint_or_xpos = svisint (xisneg, y); - svbool_t yisodd_xisneg = svisodd (xisneg, y); - /* ix set to abs(ix) if y is integer. */ -- vix = svand_m (yisint_xisneg, vix0, 0x7fffffff); -+ vix = svand_m (yint_or_xpos, vix0, 0x7fffffff); - /* Set to SignBias if x is negative and y is odd. */ - sign_bias = svsel (yisodd_xisneg, sv_u32 (d->sign_bias), sv_u32 (0)); - } -@@ -294,8 +292,8 @@ svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg) - svbool_t cmp = svorr_z (pg, xspecial, yspecial); - - /* Small cases of x: |x| < 0x1p-126. */ -- svbool_t xsmall = svaclt (pg, x, d->small_bound); -- if (__glibc_unlikely (svptest_any (pg, xsmall))) -+ svbool_t xsmall = svaclt (yint_or_xpos, x, d->small_bound); -+ if (__glibc_unlikely (svptest_any (yint_or_xpos, xsmall))) - { - /* Normalize subnormal x so exponent becomes negative. */ - svuint32_t vix_norm = svreinterpret_u32 (svmul_x (xsmall, x, Norm)); -@@ -304,32 +302,35 @@ svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg) - vix = svsel (xsmall, vix_norm, vix); - } - /* Part of core computation carried in working precision. */ -- svuint32_t tmp = svsub_x (pg, vix, d->off); -- svuint32_t i = svand_x (pg, svlsr_x (pg, tmp, (23 - V_POWF_LOG2_TABLE_BITS)), -- V_POWF_LOG2_N - 1); -- svuint32_t top = svand_x (pg, tmp, 0xff800000); -- svuint32_t iz = svsub_x (pg, vix, top); -- svint32_t k -- = svasr_x (pg, svreinterpret_s32 (top), (23 - V_POWF_EXP2_TABLE_BITS)); -- -- /* Compute core in extended precision and return intermediate ylogx results to -- handle cases of underflow and underflow in exp. */ -+ svuint32_t tmp = svsub_x (yint_or_xpos, vix, d->off); -+ svuint32_t i = svand_x ( -+ yint_or_xpos, svlsr_x (yint_or_xpos, tmp, (23 - V_POWF_LOG2_TABLE_BITS)), -+ V_POWF_LOG2_N - 1); -+ svuint32_t top = svand_x (yint_or_xpos, tmp, 0xff800000); -+ svuint32_t iz = svsub_x (yint_or_xpos, vix, top); -+ svint32_t k = svasr_x (yint_or_xpos, svreinterpret_s32 (top), -+ (23 - V_POWF_EXP2_TABLE_BITS)); -+ -+ /* Compute core in extended precision and return intermediate ylogx results -+ * to handle cases of underflow and underflow in exp. */ - svfloat32_t ylogx; -- svfloat32_t ret = sv_powf_core (pg, i, iz, k, y, sign_bias, &ylogx, d); -+ svfloat32_t ret -+ = sv_powf_core (yint_or_xpos, i, iz, k, y, sign_bias, &ylogx, d); - - /* Handle exp special cases of underflow and overflow. */ -- svuint32_t sign = svlsl_x (pg, sign_bias, 20 - V_POWF_EXP2_TABLE_BITS); -+ svuint32_t sign -+ = svlsl_x (yint_or_xpos, sign_bias, 20 - V_POWF_EXP2_TABLE_BITS); - svfloat32_t ret_oflow -- = svreinterpret_f32 (svorr_x (pg, sign, asuint (INFINITY))); -+ = svreinterpret_f32 (svorr_x (yint_or_xpos, sign, asuint (INFINITY))); - svfloat32_t ret_uflow = svreinterpret_f32 (sign); -- ret = svsel (svcmple (pg, ylogx, d->uflow_bound), ret_uflow, ret); -- ret = svsel (svcmpgt (pg, ylogx, d->oflow_bound), ret_oflow, ret); -+ ret = svsel (svcmple (yint_or_xpos, ylogx, d->uflow_bound), ret_uflow, ret); -+ ret = svsel (svcmpgt (yint_or_xpos, ylogx, d->oflow_bound), ret_oflow, ret); - - /* Cases of finite y and finite negative x. */ -- ret = svsel (yisnotint_xisneg, sv_f32 (__builtin_nanf ("")), ret); -+ ret = svsel (yint_or_xpos, ret, sv_f32 (__builtin_nanf (""))); - -- if (__glibc_unlikely (svptest_any (pg, cmp))) -- return sv_call_powf_sc (x, y, ret, cmp); -+ if (__glibc_unlikely (svptest_any (cmp, cmp))) -+ return sv_call_powf_sc (x, y, ret); - - return ret; - } - -commit fd9a3a36fdcf14d1678c469e8b9033a46aa6c6fb -Author: Wilco Dijkstra -Date: Thu Feb 27 20:34:34 2025 +0000 - - Revert "AArch64: Add vector logp1 alias for log1p" - - This reverts commit a991a0fc7c051d7ef2ea7778e0a699f22d4e53d7. - -diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h -index 5019e8e25c..08a41c46ad 100644 ---- a/bits/libm-simd-decl-stubs.h -+++ b/bits/libm-simd-decl-stubs.h -@@ -253,17 +253,6 @@ - #define __DECL_SIMD_log1pf64x - #define __DECL_SIMD_log1pf128x - --#define __DECL_SIMD_logp1 --#define __DECL_SIMD_logp1f --#define __DECL_SIMD_logp1l --#define __DECL_SIMD_logp1f16 --#define __DECL_SIMD_logp1f32 --#define __DECL_SIMD_logp1f64 --#define __DECL_SIMD_logp1f128 --#define __DECL_SIMD_logp1f32x --#define __DECL_SIMD_logp1f64x --#define __DECL_SIMD_logp1f128x -- - #define __DECL_SIMD_atanh - #define __DECL_SIMD_atanhf - #define __DECL_SIMD_atanhl -diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h -index 92856becc4..6cb594b6ff 100644 ---- a/math/bits/mathcalls.h -+++ b/math/bits/mathcalls.h -@@ -126,7 +126,7 @@ __MATHCALL (log2p1,, (_Mdouble_ __x)); - __MATHCALL (log10p1,, (_Mdouble_ __x)); - - /* Return log(1 + X). */ --__MATHCALL_VEC (logp1,, (_Mdouble_ __x)); -+__MATHCALL (logp1,, (_Mdouble_ __x)); - #endif - - #if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 -diff --git a/sysdeps/aarch64/fpu/Versions b/sysdeps/aarch64/fpu/Versions -index 015211f5f4..cc15ce2d1e 100644 ---- a/sysdeps/aarch64/fpu/Versions -+++ b/sysdeps/aarch64/fpu/Versions -@@ -135,11 +135,4 @@ libmvec { - _ZGVsMxv_tanh; - _ZGVsMxv_tanhf; - } -- GLIBC_2.41 { -- _ZGVnN2v_logp1; -- _ZGVnN2v_logp1f; -- _ZGVnN4v_logp1f; -- _ZGVsMxv_logp1; -- _ZGVsMxv_logp1f; -- } - } -diff --git a/sysdeps/aarch64/fpu/advsimd_f32_protos.h b/sysdeps/aarch64/fpu/advsimd_f32_protos.h -index 5909bb4ce9..097d403ffe 100644 ---- a/sysdeps/aarch64/fpu/advsimd_f32_protos.h -+++ b/sysdeps/aarch64/fpu/advsimd_f32_protos.h -@@ -36,7 +36,6 @@ libmvec_hidden_proto (V_NAME_F2(hypot)); - libmvec_hidden_proto (V_NAME_F1(log10)); - libmvec_hidden_proto (V_NAME_F1(log1p)); - libmvec_hidden_proto (V_NAME_F1(log2)); --libmvec_hidden_proto (V_NAME_F1(logp1)); - libmvec_hidden_proto (V_NAME_F1(log)); - libmvec_hidden_proto (V_NAME_F2(pow)); - libmvec_hidden_proto (V_NAME_F1(sin)); -diff --git a/sysdeps/aarch64/fpu/bits/math-vector.h b/sysdeps/aarch64/fpu/bits/math-vector.h -index f295fe185d..7484150131 100644 ---- a/sysdeps/aarch64/fpu/bits/math-vector.h -+++ b/sysdeps/aarch64/fpu/bits/math-vector.h -@@ -113,10 +113,6 @@ - # define __DECL_SIMD_log2 __DECL_SIMD_aarch64 - # undef __DECL_SIMD_log2f - # define __DECL_SIMD_log2f __DECL_SIMD_aarch64 --# undef __DECL_SIMD_logp1 --# define __DECL_SIMD_logp1 __DECL_SIMD_aarch64 --# undef __DECL_SIMD_logp1f --# define __DECL_SIMD_logp1f __DECL_SIMD_aarch64 - # undef __DECL_SIMD_pow - # define __DECL_SIMD_pow __DECL_SIMD_aarch64 - # undef __DECL_SIMD_powf -@@ -184,7 +180,6 @@ __vpcs __f32x4_t _ZGVnN4v_logf (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_log10f (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_log1pf (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_log2f (__f32x4_t); --__vpcs __f32x4_t _ZGVnN4v_logp1f (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4vv_powf (__f32x4_t, __f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_sinf (__f32x4_t); - __vpcs __f32x4_t _ZGVnN4v_sinhf (__f32x4_t); -@@ -212,7 +207,6 @@ __vpcs __f64x2_t _ZGVnN2v_log (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_log10 (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_log1p (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_log2 (__f64x2_t); --__vpcs __f64x2_t _ZGVnN2v_logp1 (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2vv_pow (__f64x2_t, __f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_sin (__f64x2_t); - __vpcs __f64x2_t _ZGVnN2v_sinh (__f64x2_t); -@@ -245,7 +239,6 @@ __sv_f32_t _ZGVsMxv_logf (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_log10f (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_log1pf (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_log2f (__sv_f32_t, __sv_bool_t); --__sv_f32_t _ZGVsMxv_logp1f (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxvv_powf (__sv_f32_t, __sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_sinf (__sv_f32_t, __sv_bool_t); - __sv_f32_t _ZGVsMxv_sinhf (__sv_f32_t, __sv_bool_t); -@@ -273,7 +266,6 @@ __sv_f64_t _ZGVsMxv_log (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_log10 (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_log1p (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_log2 (__sv_f64_t, __sv_bool_t); --__sv_f64_t _ZGVsMxv_logp1 (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxvv_pow (__sv_f64_t, __sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_sin (__sv_f64_t, __sv_bool_t); - __sv_f64_t _ZGVsMxv_sinh (__sv_f64_t, __sv_bool_t); -diff --git a/sysdeps/aarch64/fpu/log1p_advsimd.c b/sysdeps/aarch64/fpu/log1p_advsimd.c -index 1263587201..9d18578ce6 100644 ---- a/sysdeps/aarch64/fpu/log1p_advsimd.c -+++ b/sysdeps/aarch64/fpu/log1p_advsimd.c -@@ -58,5 +58,3 @@ VPCS_ATTR float64x2_t V_NAME_D1 (log1p) (float64x2_t x) - - return log1p_inline (x, &d->d); - } -- --strong_alias (V_NAME_D1 (log1p), V_NAME_D1 (logp1)) -diff --git a/sysdeps/aarch64/fpu/log1p_sve.c b/sysdeps/aarch64/fpu/log1p_sve.c -index b21cfb2c90..04f7e5720e 100644 ---- a/sysdeps/aarch64/fpu/log1p_sve.c -+++ b/sysdeps/aarch64/fpu/log1p_sve.c -@@ -116,5 +116,3 @@ svfloat64_t SV_NAME_D1 (log1p) (svfloat64_t x, svbool_t pg) - - return y; - } -- --strong_alias (SV_NAME_D1 (log1p), SV_NAME_D1 (logp1)) -diff --git a/sysdeps/aarch64/fpu/log1pf_advsimd.c b/sysdeps/aarch64/fpu/log1pf_advsimd.c -index 00006fc703..f2d47962fe 100644 ---- a/sysdeps/aarch64/fpu/log1pf_advsimd.c -+++ b/sysdeps/aarch64/fpu/log1pf_advsimd.c -@@ -93,6 +93,3 @@ VPCS_ATTR float32x4_t V_NAME_F1 (log1p) (float32x4_t x) - - libmvec_hidden_def (V_NAME_F1 (log1p)) - HALF_WIDTH_ALIAS_F1 (log1p) --strong_alias (V_NAME_F1 (log1p), V_NAME_F1 (logp1)) --libmvec_hidden_def (V_NAME_F1 (logp1)) --HALF_WIDTH_ALIAS_F1 (logp1) -diff --git a/sysdeps/aarch64/fpu/log1pf_sve.c b/sysdeps/aarch64/fpu/log1pf_sve.c -index 18a185c838..4f17c44e2d 100644 ---- a/sysdeps/aarch64/fpu/log1pf_sve.c -+++ b/sysdeps/aarch64/fpu/log1pf_sve.c -@@ -42,5 +42,3 @@ svfloat32_t SV_NAME_F1 (log1p) (svfloat32_t x, svbool_t pg) - - return sv_log1pf_inline (x, pg); - } -- --strong_alias (SV_NAME_F1 (log1p), SV_NAME_F1 (logp1)) -diff --git a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist -index 98687cae0d..b685106954 100644 ---- a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist -+++ b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist -@@ -128,8 +128,3 @@ GLIBC_2.40 _ZGVsMxvv_hypot F - GLIBC_2.40 _ZGVsMxvv_hypotf F - GLIBC_2.40 _ZGVsMxvv_pow F - GLIBC_2.40 _ZGVsMxvv_powf F --GLIBC_2.41 _ZGVnN2v_logp1 F --GLIBC_2.41 _ZGVnN2v_logp1f F --GLIBC_2.41 _ZGVnN4v_logp1f F --GLIBC_2.41 _ZGVsMxv_logp1 F --GLIBC_2.41 _ZGVsMxv_logp1f F - -commit 64896b7d329809127035fde42768a6f7eeffed75 -Author: Wilco Dijkstra -Date: Wed Aug 7 14:43:47 2024 +0100 - - AArch64: Improve generic strlen - - Improve performance by handling another 16 bytes before entering the loop. - Use ADDHN in the loop to avoid SHRN+FMOV when it terminates. Change final - size computation to avoid increasing latency. On Neoverse V1 performance - of the random strlen benchmark improves by 4.6%. - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit 3dc426b642dcafdbc11a99f2767e081d086f5fc7) - -diff --git a/sysdeps/aarch64/strlen.S b/sysdeps/aarch64/strlen.S -index ab2a576cdb..352fb40d3a 100644 ---- a/sysdeps/aarch64/strlen.S -+++ b/sysdeps/aarch64/strlen.S -@@ -1,4 +1,5 @@ --/* Copyright (C) 2012-2024 Free Software Foundation, Inc. -+/* Generic optimized strlen using SIMD. -+ Copyright (C) 2012-2024 Free Software Foundation, Inc. - - This file is part of the GNU C Library. - -@@ -56,36 +57,50 @@ ENTRY (STRLEN) - shrn vend.8b, vhas_nul.8h, 4 /* 128->64 */ - fmov synd, dend - lsr synd, synd, shift -- cbz synd, L(loop) -+ cbz synd, L(next16) - - rbit synd, synd - clz result, synd - lsr result, result, 2 - ret - -+L(next16): -+ ldr data, [src, 16] -+ cmeq vhas_nul.16b, vdata.16b, 0 -+ shrn vend.8b, vhas_nul.8h, 4 /* 128->64 */ -+ fmov synd, dend -+ cbz synd, L(loop) -+ add src, src, 16 -+#ifndef __AARCH64EB__ -+ rbit synd, synd -+#endif -+ sub result, src, srcin -+ clz tmp, synd -+ add result, result, tmp, lsr 2 -+ ret -+ - .p2align 5 - L(loop): -- ldr data, [src, 16] -+ ldr data, [src, 32]! - cmeq vhas_nul.16b, vdata.16b, 0 -- umaxp vend.16b, vhas_nul.16b, vhas_nul.16b -+ addhn vend.8b, vhas_nul.8h, vhas_nul.8h - fmov synd, dend - cbnz synd, L(loop_end) -- ldr data, [src, 32]! -+ ldr data, [src, 16] - cmeq vhas_nul.16b, vdata.16b, 0 -- umaxp vend.16b, vhas_nul.16b, vhas_nul.16b -+ addhn vend.8b, vhas_nul.8h, vhas_nul.8h - fmov synd, dend - cbz synd, L(loop) -- sub src, src, 16 -+ add src, src, 16 - L(loop_end): -- shrn vend.8b, vhas_nul.8h, 4 /* 128->64 */ -- sub result, src, srcin -- fmov synd, dend -+ sub result, shift, src, lsl 2 /* (srcin - src) << 2. */ - #ifndef __AARCH64EB__ - rbit synd, synd -+ sub result, result, 3 - #endif -- add result, result, 16 - clz tmp, synd -- add result, result, tmp, lsr 2 -+ sub result, tmp, result -+ lsr result, result, 2 - ret - - END (STRLEN) - -commit 544fb349d35efd5f86ed7e482759ff21496a32fd -Author: Wilco Dijkstra -Date: Mon Sep 9 15:26:47 2024 +0100 - - AArch64: Optimize memset - - Improve small memsets by avoiding branches and use overlapping stores. - Use DC ZVA for copies over 128 bytes. Remove unnecessary code for ZVA sizes - other than 64 and 128. Performance of random memset benchmark improves by 24% - on Neoverse N1. - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit cec3aef32412779e207f825db0d057ebb4628ae8) - -diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S -index 7ef77ee8c9..caafb019e2 100644 ---- a/sysdeps/aarch64/memset.S -+++ b/sysdeps/aarch64/memset.S -@@ -1,4 +1,5 @@ --/* Copyright (C) 2012-2024 Free Software Foundation, Inc. -+/* Generic optimized memset using SIMD. -+ Copyright (C) 2012-2024 Free Software Foundation, Inc. - - This file is part of the GNU C Library. - -@@ -17,7 +18,6 @@ - . */ - - #include --#include "memset-reg.h" - - #ifndef MEMSET - # define MEMSET memset -@@ -25,130 +25,132 @@ - - /* Assumptions: - * -- * ARMv8-a, AArch64, unaligned accesses -+ * ARMv8-a, AArch64, Advanced SIMD, unaligned accesses. - * - */ - --ENTRY (MEMSET) -+#define dstin x0 -+#define val x1 -+#define valw w1 -+#define count x2 -+#define dst x3 -+#define dstend x4 -+#define zva_val x5 -+#define off x3 -+#define dstend2 x5 - -+ENTRY (MEMSET) - PTR_ARG (0) - SIZE_ARG (2) - - dup v0.16B, valw -+ cmp count, 16 -+ b.lo L(set_small) -+ - add dstend, dstin, count -+ cmp count, 64 -+ b.hs L(set_128) - -- cmp count, 96 -- b.hi L(set_long) -- cmp count, 16 -- b.hs L(set_medium) -- mov val, v0.D[0] -+ /* Set 16..63 bytes. */ -+ mov off, 16 -+ and off, off, count, lsr 1 -+ sub dstend2, dstend, off -+ str q0, [dstin] -+ str q0, [dstin, off] -+ str q0, [dstend2, -16] -+ str q0, [dstend, -16] -+ ret - -+ .p2align 4 - /* Set 0..15 bytes. */ -- tbz count, 3, 1f -- str val, [dstin] -- str val, [dstend, -8] -- ret -- nop --1: tbz count, 2, 2f -- str valw, [dstin] -- str valw, [dstend, -4] -+L(set_small): -+ add dstend, dstin, count -+ cmp count, 4 -+ b.lo 2f -+ lsr off, count, 3 -+ sub dstend2, dstend, off, lsl 2 -+ str s0, [dstin] -+ str s0, [dstin, off, lsl 2] -+ str s0, [dstend2, -4] -+ str s0, [dstend, -4] - ret -+ -+ /* Set 0..3 bytes. */ - 2: cbz count, 3f -+ lsr off, count, 1 - strb valw, [dstin] -- tbz count, 1, 3f -- strh valw, [dstend, -2] -+ strb valw, [dstin, off] -+ strb valw, [dstend, -1] - 3: ret - -- /* Set 17..96 bytes. */ --L(set_medium): -- str q0, [dstin] -- tbnz count, 6, L(set96) -- str q0, [dstend, -16] -- tbz count, 5, 1f -- str q0, [dstin, 16] -- str q0, [dstend, -32] --1: ret -- - .p2align 4 -- /* Set 64..96 bytes. Write 64 bytes from the start and -- 32 bytes from the end. */ --L(set96): -- str q0, [dstin, 16] -+L(set_128): -+ bic dst, dstin, 15 -+ cmp count, 128 -+ b.hi L(set_long) -+ stp q0, q0, [dstin] - stp q0, q0, [dstin, 32] -+ stp q0, q0, [dstend, -64] - stp q0, q0, [dstend, -32] - ret - -- .p2align 3 -- nop -+ .p2align 4 - L(set_long): -- and valw, valw, 255 -- bic dst, dstin, 15 - str q0, [dstin] -- cmp count, 256 -- ccmp valw, 0, 0, cs -- b.eq L(try_zva) --L(no_zva): -- sub count, dstend, dst /* Count is 16 too large. */ -- sub dst, dst, 16 /* Dst is biased by -32. */ -- sub count, count, 64 + 16 /* Adjust count and bias for loop. */ --1: stp q0, q0, [dst, 32] -- stp q0, q0, [dst, 64]! --L(tail64): -- subs count, count, 64 -- b.hi 1b --2: stp q0, q0, [dstend, -64] -+ str q0, [dst, 16] -+ tst valw, 255 -+ b.ne L(no_zva) -+#ifndef ZVA64_ONLY -+ mrs zva_val, dczid_el0 -+ and zva_val, zva_val, 31 -+ cmp zva_val, 4 /* ZVA size is 64 bytes. */ -+ b.ne L(zva_128) -+#endif -+ stp q0, q0, [dst, 32] -+ bic dst, dstin, 63 -+ sub count, dstend, dst /* Count is now 64 too large. */ -+ sub count, count, 64 + 64 /* Adjust count and bias for loop. */ -+ -+ /* Write last bytes before ZVA loop. */ -+ stp q0, q0, [dstend, -64] - stp q0, q0, [dstend, -32] -+ -+ .p2align 4 -+L(zva64_loop): -+ add dst, dst, 64 -+ dc zva, dst -+ subs count, count, 64 -+ b.hi L(zva64_loop) - ret - --L(try_zva): --#ifndef ZVA64_ONLY - .p2align 3 -- mrs tmp1, dczid_el0 -- tbnz tmp1w, 4, L(no_zva) -- and tmp1w, tmp1w, 15 -- cmp tmp1w, 4 /* ZVA size is 64 bytes. */ -- b.ne L(zva_128) -- nop --#endif -- /* Write the first and last 64 byte aligned block using stp rather -- than using DC ZVA. This is faster on some cores. -- */ -- .p2align 4 --L(zva_64): -- str q0, [dst, 16] -+L(no_zva): -+ sub count, dstend, dst /* Count is 32 too large. */ -+ sub count, count, 64 + 32 /* Adjust count and bias for loop. */ -+L(no_zva_loop): - stp q0, q0, [dst, 32] -- bic dst, dst, 63 - stp q0, q0, [dst, 64] -- stp q0, q0, [dst, 96] -- sub count, dstend, dst /* Count is now 128 too large. */ -- sub count, count, 128+64+64 /* Adjust count and bias for loop. */ -- add dst, dst, 128 --1: dc zva, dst - add dst, dst, 64 - subs count, count, 64 -- b.hi 1b -- stp q0, q0, [dst, 0] -- stp q0, q0, [dst, 32] -+ b.hi L(no_zva_loop) - stp q0, q0, [dstend, -64] - stp q0, q0, [dstend, -32] - ret - - #ifndef ZVA64_ONLY -- .p2align 3 -+ .p2align 4 - L(zva_128): -- cmp tmp1w, 5 /* ZVA size is 128 bytes. */ -- b.ne L(zva_other) -+ cmp zva_val, 5 /* ZVA size is 128 bytes. */ -+ b.ne L(no_zva) - -- str q0, [dst, 16] - stp q0, q0, [dst, 32] - stp q0, q0, [dst, 64] - stp q0, q0, [dst, 96] - bic dst, dst, 127 - sub count, dstend, dst /* Count is now 128 too large. */ -- sub count, count, 128+128 /* Adjust count and bias for loop. */ -- add dst, dst, 128 --1: dc zva, dst -- add dst, dst, 128 -+ sub count, count, 128 + 128 /* Adjust count and bias for loop. */ -+1: add dst, dst, 128 -+ dc zva, dst - subs count, count, 128 - b.hi 1b - stp q0, q0, [dstend, -128] -@@ -156,35 +158,6 @@ L(zva_128): - stp q0, q0, [dstend, -64] - stp q0, q0, [dstend, -32] - ret -- --L(zva_other): -- mov tmp2w, 4 -- lsl zva_lenw, tmp2w, tmp1w -- add tmp1, zva_len, 64 /* Max alignment bytes written. */ -- cmp count, tmp1 -- blo L(no_zva) -- -- sub tmp2, zva_len, 1 -- add tmp1, dst, zva_len -- add dst, dst, 16 -- subs count, tmp1, dst /* Actual alignment bytes to write. */ -- bic tmp1, tmp1, tmp2 /* Aligned dc zva start address. */ -- beq 2f --1: stp q0, q0, [dst], 64 -- stp q0, q0, [dst, -32] -- subs count, count, 64 -- b.hi 1b --2: mov dst, tmp1 -- sub count, dstend, tmp1 /* Remaining bytes to write. */ -- subs count, count, zva_len -- b.lo 4f --3: dc zva, dst -- add dst, dst, zva_len -- subs count, count, zva_len -- b.hs 3b --4: add count, count, zva_len -- sub dst, dst, 32 /* Bias dst for tail loop. */ -- b L(tail64) - #endif - - END (MEMSET) - -commit 41eb2f8b5847079caca90a74659456adbb80ec29 -Author: Wilco Dijkstra -Date: Mon Nov 25 18:43:08 2024 +0000 - - AArch64: Remove zva_128 from memset - - Remove ZVA 128 support from memset - the new memset no longer - guarantees count >= 256, which can result in underflow and a - crash if ZVA size is 128 ([1]). Since only one CPU uses a ZVA - size of 128 and its memcpy implementation was removed in commit - e162ab2bf1b82c40f29e1925986582fa07568ce8, remove this special - case too. - - [1] https://sourceware.org/pipermail/libc-alpha/2024-November/161626.html - - Reviewed-by: Andrew Pinski - (cherry picked from commit a08d9a52f967531a77e1824c23b5368c6434a72d) - -diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S -index caafb019e2..71814d0b2f 100644 ---- a/sysdeps/aarch64/memset.S -+++ b/sysdeps/aarch64/memset.S -@@ -104,7 +104,7 @@ L(set_long): - mrs zva_val, dczid_el0 - and zva_val, zva_val, 31 - cmp zva_val, 4 /* ZVA size is 64 bytes. */ -- b.ne L(zva_128) -+ b.ne L(no_zva) - #endif - stp q0, q0, [dst, 32] - bic dst, dstin, 63 -@@ -137,28 +137,5 @@ L(no_zva_loop): - stp q0, q0, [dstend, -32] - ret - --#ifndef ZVA64_ONLY -- .p2align 4 --L(zva_128): -- cmp zva_val, 5 /* ZVA size is 128 bytes. */ -- b.ne L(no_zva) -- -- stp q0, q0, [dst, 32] -- stp q0, q0, [dst, 64] -- stp q0, q0, [dst, 96] -- bic dst, dst, 127 -- sub count, dstend, dst /* Count is now 128 too large. */ -- sub count, count, 128 + 128 /* Adjust count and bias for loop. */ --1: add dst, dst, 128 -- dc zva, dst -- subs count, count, 128 -- b.hi 1b -- stp q0, q0, [dstend, -128] -- stp q0, q0, [dstend, -96] -- stp q0, q0, [dstend, -64] -- stp q0, q0, [dstend, -32] -- ret --#endif -- - END (MEMSET) - libc_hidden_builtin_def (MEMSET) - -commit 27fa0268ead054810a5e2669d0b5bb88ceb05b05 -Author: Wilco Dijkstra -Date: Wed Jul 24 15:17:47 2024 +0100 - - math: Improve layout of expf data - - GCC aligns global data to 16 bytes if their size is >= 16 bytes. This patch - changes the exp2f_data struct slightly so that the fields are better aligned. - As a result on targets that support them, load-pair instructions accessing - poly_scaled and invln2_scaled are now 16-byte aligned. - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit 44fa9c1080fe6a9539f0d2345b9d2ae37b8ee57a) - -diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h -index 729f22cd4f..dc07ebd459 100644 ---- a/sysdeps/ieee754/flt-32/math_config.h -+++ b/sysdeps/ieee754/flt-32/math_config.h -@@ -166,9 +166,9 @@ extern const struct exp2f_data - uint64_t tab[1 << EXP2F_TABLE_BITS]; - double shift_scaled; - double poly[EXP2F_POLY_ORDER]; -- double shift; - double invln2_scaled; - double poly_scaled[EXP2F_POLY_ORDER]; -+ double shift; - } __exp2f_data attribute_hidden; - - #define LOGF_TABLE_BITS 4 - -commit 7038970f1f485fb660606f0c596f432fdef250f6 -Author: Wilco Dijkstra -Date: Tue Dec 24 18:01:59 2024 +0000 - - AArch64: Add SVE memset - - Add SVE memset based on the generic memset with predicated load for sizes < 16. - Unaligned memsets of 128-1024 are improved by ~20% on average by using aligned - stores for the last 64 bytes. Performance of random memset benchmark improves - by ~2% on Neoverse V1. - - Reviewed-by: Yury Khrustalev - (cherry picked from commit 163b1bbb76caba4d9673c07940c5930a1afa7548) - -diff --git a/sysdeps/aarch64/multiarch/Makefile b/sysdeps/aarch64/multiarch/Makefile -index 3e251cc234..6880ebc035 100644 ---- a/sysdeps/aarch64/multiarch/Makefile -+++ b/sysdeps/aarch64/multiarch/Makefile -@@ -16,6 +16,7 @@ sysdep_routines += \ - memset_kunpeng \ - memset_mops \ - memset_oryon1 \ -+ memset_sve_zva64 \ - memset_zva64 \ - strlen_asimd \ - strlen_generic \ -diff --git a/sysdeps/aarch64/multiarch/ifunc-impl-list.c b/sysdeps/aarch64/multiarch/ifunc-impl-list.c -index b2fda541f9..1f101a719b 100644 ---- a/sysdeps/aarch64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/aarch64/multiarch/ifunc-impl-list.c -@@ -61,6 +61,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, - IFUNC_IMPL_ADD (array, i, memset, 1, __memset_kunpeng) - #if HAVE_AARCH64_SVE_ASM - IFUNC_IMPL_ADD (array, i, memset, sve && !bti && zva_size == 256, __memset_a64fx) -+ IFUNC_IMPL_ADD (array, i, memset, sve && zva_size == 64, __memset_sve_zva64) - #endif - IFUNC_IMPL_ADD (array, i, memset, mops, __memset_mops) - IFUNC_IMPL_ADD (array, i, memset, 1, __memset_generic)) -diff --git a/sysdeps/aarch64/multiarch/memset.c b/sysdeps/aarch64/multiarch/memset.c -index bd063c16c9..4f65295e77 100644 ---- a/sysdeps/aarch64/multiarch/memset.c -+++ b/sysdeps/aarch64/multiarch/memset.c -@@ -36,6 +36,7 @@ extern __typeof (__redirect_memset) __memset_a64fx attribute_hidden; - extern __typeof (__redirect_memset) __memset_generic attribute_hidden; - extern __typeof (__redirect_memset) __memset_mops attribute_hidden; - extern __typeof (__redirect_memset) __memset_oryon1 attribute_hidden; -+extern __typeof (__redirect_memset) __memset_sve_zva64 attribute_hidden; - - static inline __typeof (__redirect_memset) * - select_memset_ifunc (void) -@@ -49,6 +50,9 @@ select_memset_ifunc (void) - { - if (IS_A64FX (midr) && zva_size == 256) - return __memset_a64fx; -+ -+ if (zva_size == 64) -+ return __memset_sve_zva64; - } - - if (IS_ORYON1 (midr) && zva_size == 64) -diff --git a/sysdeps/aarch64/multiarch/memset_sve_zva64.S b/sysdeps/aarch64/multiarch/memset_sve_zva64.S -new file mode 100644 -index 0000000000..7fb40fdd9e ---- /dev/null -+++ b/sysdeps/aarch64/multiarch/memset_sve_zva64.S -@@ -0,0 +1,123 @@ -+/* Optimized memset for SVE. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library. If not, see -+ . */ -+ -+#include -+ -+/* Assumptions: -+ * -+ * ARMv8-a, AArch64, Advanced SIMD, SVE, unaligned accesses. -+ * ZVA size is 64. -+ */ -+ -+#if HAVE_AARCH64_SVE_ASM -+ -+.arch armv8.2-a+sve -+ -+#define dstin x0 -+#define val x1 -+#define valw w1 -+#define count x2 -+#define dst x3 -+#define dstend x4 -+#define zva_val x5 -+#define vlen x5 -+#define off x3 -+#define dstend2 x5 -+ -+ENTRY (__memset_sve_zva64) -+ dup v0.16B, valw -+ cmp count, 16 -+ b.lo L(set_16) -+ -+ add dstend, dstin, count -+ cmp count, 64 -+ b.hs L(set_128) -+ -+ /* Set 16..63 bytes. */ -+ mov off, 16 -+ and off, off, count, lsr 1 -+ sub dstend2, dstend, off -+ str q0, [dstin] -+ str q0, [dstin, off] -+ str q0, [dstend2, -16] -+ str q0, [dstend, -16] -+ ret -+ -+ .p2align 4 -+L(set_16): -+ whilelo p0.b, xzr, count -+ st1b z0.b, p0, [dstin] -+ ret -+ -+ .p2align 4 -+L(set_128): -+ bic dst, dstin, 15 -+ cmp count, 128 -+ b.hi L(set_long) -+ stp q0, q0, [dstin] -+ stp q0, q0, [dstin, 32] -+ stp q0, q0, [dstend, -64] -+ stp q0, q0, [dstend, -32] -+ ret -+ -+ .p2align 4 -+L(set_long): -+ cmp count, 256 -+ b.lo L(no_zva) -+ tst valw, 255 -+ b.ne L(no_zva) -+ -+ str q0, [dstin] -+ str q0, [dst, 16] -+ bic dst, dstin, 31 -+ stp q0, q0, [dst, 32] -+ bic dst, dstin, 63 -+ sub count, dstend, dst /* Count is now 64 too large. */ -+ sub count, count, 128 /* Adjust count and bias for loop. */ -+ -+ sub x8, dstend, 1 /* Write last bytes before ZVA loop. */ -+ bic x8, x8, 15 -+ stp q0, q0, [x8, -48] -+ str q0, [x8, -16] -+ str q0, [dstend, -16] -+ -+ .p2align 4 -+L(zva64_loop): -+ add dst, dst, 64 -+ dc zva, dst -+ subs count, count, 64 -+ b.hi L(zva64_loop) -+ ret -+ -+L(no_zva): -+ str q0, [dstin] -+ sub count, dstend, dst /* Count is 16 too large. */ -+ sub count, count, 64 + 16 /* Adjust count and bias for loop. */ -+L(no_zva_loop): -+ stp q0, q0, [dst, 16] -+ stp q0, q0, [dst, 48] -+ add dst, dst, 64 -+ subs count, count, 64 -+ b.hi L(no_zva_loop) -+ stp q0, q0, [dstend, -64] -+ stp q0, q0, [dstend, -32] -+ ret -+ -+END (__memset_sve_zva64) -+#endif - -commit d6175a44e95fe443d0fbfed37a9ff7424f1e2661 -Author: Wilco Dijkstra -Date: Thu Feb 27 16:28:52 2025 +0000 - - AArch64: Use prefer_sve_ifuncs for SVE memset - - Use prefer_sve_ifuncs for SVE memset just like memcpy. - - Reviewed-by: Yury Khrustalev - (cherry picked from commit 0f044be1dae5169d0e57f8d487b427863aeadab4) - -diff --git a/sysdeps/aarch64/multiarch/memset.c b/sysdeps/aarch64/multiarch/memset.c -index 4f65295e77..bb1e865c97 100644 ---- a/sysdeps/aarch64/multiarch/memset.c -+++ b/sysdeps/aarch64/multiarch/memset.c -@@ -51,7 +51,7 @@ select_memset_ifunc (void) - if (IS_A64FX (midr) && zva_size == 256) - return __memset_a64fx; - -- if (zva_size == 64) -+ if (prefer_sve_ifuncs && zva_size == 64) - return __memset_sve_zva64; - } - - -commit d8e8342369831808b00324790c8809ba33408ee7 -Author: Wilco Dijkstra -Date: Fri Dec 13 15:43:07 2024 +0000 - - math: Improve layout of exp/exp10 data - - GCC aligns global data to 16 bytes if their size is >= 16 bytes. This patch - changes the exp_data struct slightly so that the fields are better aligned - and without gaps. As a result on targets that support them, more load-pair - instructions are used in exp. Exp10 is improved by moving invlog10_2N later - so that neglog10_2hiN and neglog10_2loN can be loaded using load-pair. - - The exp benchmark improves 2.5%, "144bits" by 7.2%, "768bits" by 12.7% on - Neoverse V2. Exp10 improves by 1.5%. - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit 5afaf99edb326fd9f36eb306a828d129a3a1d7f7) - -diff --git a/sysdeps/ieee754/dbl-64/math_config.h b/sysdeps/ieee754/dbl-64/math_config.h -index ef87cfa6be..05515fd95a 100644 ---- a/sysdeps/ieee754/dbl-64/math_config.h -+++ b/sysdeps/ieee754/dbl-64/math_config.h -@@ -195,16 +195,18 @@ check_uflow (double x) - extern const struct exp_data - { - double invln2N; -- double shift; - double negln2hiN; - double negln2loN; - double poly[4]; /* Last four coefficients. */ -+ double shift; -+ - double exp2_shift; - double exp2_poly[EXP2_POLY_ORDER]; -- double invlog10_2N; -+ - double neglog10_2hiN; - double neglog10_2loN; - double exp10_poly[5]; -+ double invlog10_2N; - uint64_t tab[2*(1 << EXP_TABLE_BITS)]; - } __exp_data attribute_hidden; - - -commit 3e820e17a8cef84645d83b67abcbc3f88c7fd268 -Author: Michael Jeanson -Date: Fri Feb 14 13:54:22 2025 -0500 - - nptl: clear the whole rseq area before registration - - Due to the extensible nature of the rseq area we can't explictly - initialize fields that are not part of the ABI yet. It was agreed with - upstream that all new fields will be documented as zero initialized by - userspace. Future kernels configured with CONFIG_DEBUG_RSEQ will - validate the content of all fields during registration. - - Replace the explicit field initialization with a memset of the whole - rseq area which will cover fields as they are added to future kernels. - - Signed-off-by: Michael Jeanson - Reviewed-by: Florian Weimer - (cherry picked from commit 689a62a4217fae78b9ce0db781dc2a421f2b1ab4) - -diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c -index 7803e19fd1..ed10185e37 100644 ---- a/sysdeps/nptl/dl-tls_init_tp.c -+++ b/sysdeps/nptl/dl-tls_init_tp.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - #define TUNABLE_NAMESPACE pthread - #include -diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h -index ef3eab1fef..76de2b7ff0 100644 ---- a/sysdeps/unix/sysv/linux/rseq-internal.h -+++ b/sysdeps/unix/sysv/linux/rseq-internal.h -@@ -52,13 +52,12 @@ rseq_register_current_thread (struct pthread *self, bool do_rseq) - but still expected size 32. */ - size = RSEQ_AREA_SIZE_INITIAL; - -- /* Initialize the rseq fields that are read by the kernel on -- registration, there is no guarantee that struct pthread is -- cleared on all architectures. */ -+ /* Initialize the whole rseq area to zero prior to registration. */ -+ memset (&self->rseq_area, 0, size); -+ -+ /* Set the cpu_id field to RSEQ_CPU_ID_UNINITIALIZED, this is checked by -+ the kernel at registration when CONFIG_DEBUG_RSEQ is enabled. */ - THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_UNINITIALIZED); -- THREAD_SETMEM (self, rseq_area.cpu_id_start, 0); -- THREAD_SETMEM (self, rseq_area.rseq_cs, 0); -- THREAD_SETMEM (self, rseq_area.flags, 0); - - int ret = INTERNAL_SYSCALL_CALL (rseq, &self->rseq_area, - size, 0, RSEQ_SIG); - -commit ee1ab9302363066b49cf8862b96664ed35eda81c -Author: Sunil K Pandey -Date: Mon Mar 10 10:24:07 2025 -0700 - - x86_64: Add tanh with FMA - - On Skylake, it improves tanh bench performance by: - - Before After Improvement - max 110.89 95.826 14% - min 20.966 20.157 4% - mean 30.9601 29.8431 4% - - Reviewed-by: H.J. Lu - (cherry picked from commit c6352111c72a20b3588ae304dd99b63e25dd6d85) - -diff --git a/sysdeps/ieee754/dbl-64/s_tanh.c b/sysdeps/ieee754/dbl-64/s_tanh.c -index 673a97102d..13063db04e 100644 ---- a/sysdeps/ieee754/dbl-64/s_tanh.c -+++ b/sysdeps/ieee754/dbl-64/s_tanh.c -@@ -46,6 +46,11 @@ static char rcsid[] = "$NetBSD: s_tanh.c,v 1.7 1995/05/10 20:48:22 jtc Exp $"; - - static const double one = 1.0, two = 2.0, tiny = 1.0e-300; - -+#ifndef SECTION -+# define SECTION -+#endif -+ -+SECTION - double - __tanh (double x) - { -diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile -index cbe09d49f4..0f69f7089c 100644 ---- a/sysdeps/x86_64/fpu/multiarch/Makefile -+++ b/sysdeps/x86_64/fpu/multiarch/Makefile -@@ -10,6 +10,7 @@ CFLAGS-s_expm1-fma.c = -mfma -mavx2 - CFLAGS-s_log1p-fma.c = -mfma -mavx2 - CFLAGS-s_sin-fma.c = -mfma -mavx2 - CFLAGS-s_tan-fma.c = -mfma -mavx2 -+CFLAGS-s_tanh-fma.c = -mfma -mavx2 - CFLAGS-s_sincos-fma.c = -mfma -mavx2 - - CFLAGS-e_exp2f-fma.c = -mfma -mavx2 -@@ -92,6 +93,7 @@ libm-sysdep_routines += \ - s_sinf-sse2 \ - s_tan-avx \ - s_tan-fma \ -+ s_tanh-fma \ - s_trunc-sse4_1 \ - s_truncf-sse4_1 \ - # libm-sysdep_routines -diff --git a/sysdeps/x86_64/fpu/multiarch/s_tanh-fma.c b/sysdeps/x86_64/fpu/multiarch/s_tanh-fma.c -new file mode 100644 -index 0000000000..1b808b1227 ---- /dev/null -+++ b/sysdeps/x86_64/fpu/multiarch/s_tanh-fma.c -@@ -0,0 +1,11 @@ -+#define __tanh __tanh_fma -+#define __expm1 __expm1_fma -+ -+/* NB: __expm1 may be expanded to __expm1_fma in the following -+ prototypes. */ -+extern long double __expm1l (long double); -+extern long double __expm1f128 (long double); -+ -+#define SECTION __attribute__ ((section (".text.fma"))) -+ -+#include -diff --git a/sysdeps/x86_64/fpu/multiarch/s_tanh.c b/sysdeps/x86_64/fpu/multiarch/s_tanh.c -new file mode 100644 -index 0000000000..5539b6c61c ---- /dev/null -+++ b/sysdeps/x86_64/fpu/multiarch/s_tanh.c -@@ -0,0 +1,31 @@ -+/* Multiple versions of tanh. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL -+ -+extern double __redirect_tanh (double); -+ -+# define SYMBOL_NAME tanh -+# include "ifunc-fma.h" -+ -+libc_ifunc_redirected (__redirect_tanh, __tanh, IFUNC_SELECTOR ()); -+ -+# define __tanh __tanh_sse2 -+#endif -+#include - -commit e854f6d37cbeabb9130fed74b587befad8b4ba08 -Author: Sunil K Pandey -Date: Sat Mar 8 08:51:10 2025 -0800 - - x86_64: Add sinh with FMA - - On SPR, it improves sinh bench performance by: - - Before After Improvement - reciprocal-throughput 14.2017 11.815 17% - latency 36.4917 35.2114 4% - - Reviewed-by: H.J. Lu - (cherry picked from commit dded0d20f67ba1925ccbcb9cf28f0c75febe0dbe) - -diff --git a/benchtests/sinh-inputs b/benchtests/sinh-inputs -index 7b1ac46a39..2fcb2fabf8 100644 ---- a/benchtests/sinh-inputs -+++ b/benchtests/sinh-inputs -@@ -1,6 +1,7 @@ - ## args: double - ## ret: double - ## includes: math.h -+## name: workload-random - 0x1.bcb6129b5ff2bp8 - -0x1.63057386325ebp9 - 0x1.62f1d7dc4e8bfp9 -diff --git a/sysdeps/ieee754/dbl-64/e_sinh.c b/sysdeps/ieee754/dbl-64/e_sinh.c -index b4b5857ddd..3f787967f9 100644 ---- a/sysdeps/ieee754/dbl-64/e_sinh.c -+++ b/sysdeps/ieee754/dbl-64/e_sinh.c -@@ -41,6 +41,11 @@ static char rcsid[] = "$NetBSD: e_sinh.c,v 1.7 1995/05/10 20:46:13 jtc Exp $"; - - static const double one = 1.0, shuge = 1.0e307; - -+#ifndef SECTION -+# define SECTION -+#endif -+ -+SECTION - double - __ieee754_sinh (double x) - { -@@ -90,4 +95,7 @@ __ieee754_sinh (double x) - /* |x| > overflowthresold, sinh(x) overflow */ - return math_narrow_eval (x * shuge); - } -+ -+#ifndef __ieee754_sinh - libm_alias_finite (__ieee754_sinh, __sinh) -+#endif -diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile -index 0f69f7089c..b527cab8d1 100644 ---- a/sysdeps/x86_64/fpu/multiarch/Makefile -+++ b/sysdeps/x86_64/fpu/multiarch/Makefile -@@ -5,6 +5,7 @@ CFLAGS-e_exp-fma.c = -mfma -mavx2 - CFLAGS-e_log-fma.c = -mfma -mavx2 - CFLAGS-e_log2-fma.c = -mfma -mavx2 - CFLAGS-e_pow-fma.c = -mfma -mavx2 -+CFLAGS-e_sinh-fma.c = -mfma -mavx2 - CFLAGS-s_atan-fma.c = -mfma -mavx2 - CFLAGS-s_expm1-fma.c = -mfma -mavx2 - CFLAGS-s_log1p-fma.c = -mfma -mavx2 -@@ -67,6 +68,7 @@ libm-sysdep_routines += \ - e_logf-fma \ - e_pow-fma \ - e_powf-fma \ -+ e_sinh-fma \ - s_atan-avx \ - s_atan-fma \ - s_ceil-sse4_1 \ -diff --git a/sysdeps/x86_64/fpu/multiarch/e_sinh-fma.c b/sysdeps/x86_64/fpu/multiarch/e_sinh-fma.c -new file mode 100644 -index 0000000000..e0e1e39a7a ---- /dev/null -+++ b/sysdeps/x86_64/fpu/multiarch/e_sinh-fma.c -@@ -0,0 +1,12 @@ -+#define __ieee754_sinh __ieee754_sinh_fma -+#define __ieee754_exp __ieee754_exp_fma -+#define __expm1 __expm1_fma -+ -+/* NB: __expm1 may be expanded to __expm1_fma in the following -+ prototypes. */ -+extern long double __expm1l (long double); -+extern long double __expm1f128 (long double); -+ -+#define SECTION __attribute__ ((section (".text.fma"))) -+ -+#include -diff --git a/sysdeps/x86_64/fpu/multiarch/e_sinh.c b/sysdeps/x86_64/fpu/multiarch/e_sinh.c -new file mode 100644 -index 0000000000..3d3c18ccdf ---- /dev/null -+++ b/sysdeps/x86_64/fpu/multiarch/e_sinh.c -@@ -0,0 +1,35 @@ -+/* Multiple versions of sinh. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL -+# include -+ -+extern double __redirect_ieee754_sinh (double); -+ -+# define SYMBOL_NAME ieee754_sinh -+# include "ifunc-fma.h" -+ -+libc_ifunc_redirected (__redirect_ieee754_sinh, __ieee754_sinh, -+ IFUNC_SELECTOR ()); -+ -+libm_alias_finite (__ieee754_sinh, __sinh) -+ -+# define __ieee754_sinh __ieee754_sinh_sse2 -+#endif -+#include - -commit e5f5dfdda28def8362896bdb1748bb27dfc8be73 -Author: Sunil K Pandey -Date: Wed Mar 5 16:13:38 2025 -0800 - - x86_64: Add atanh with FMA - - On SPR, it improves atanh bench performance by: - - Before After Improvement - reciprocal-throughput 15.1715 14.8628 2% - latency 57.1941 56.1883 2% - - Reviewed-by: H.J. Lu - (cherry picked from commit c7c4a5906f326f1290b1c2413a83c530564ec4b8) - -diff --git a/benchtests/atanh-inputs b/benchtests/atanh-inputs -index 455aa65b65..4985293254 100644 ---- a/benchtests/atanh-inputs -+++ b/benchtests/atanh-inputs -@@ -1,6 +1,7 @@ - ## args: double - ## ret: double - ## includes: math.h -+## name: workload-random - 0x1.5a2730bacd94ap-1 - -0x1.b57eb40fc048ep-21 - -0x1.c0b185fb450e2p-17 -diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c -index 11a2a45799..05ac0a1b30 100644 ---- a/sysdeps/ieee754/dbl-64/e_atanh.c -+++ b/sysdeps/ieee754/dbl-64/e_atanh.c -@@ -44,6 +44,11 @@ - - static const double huge = 1e300; - -+#ifndef SECTION -+# define SECTION -+#endif -+ -+SECTION - double - __ieee754_atanh (double x) - { -@@ -73,4 +78,7 @@ __ieee754_atanh (double x) - - return copysign (t, x); - } -+ -+#ifndef __ieee754_atanh - libm_alias_finite (__ieee754_atanh, __atanh) -+#endif -diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile -index b527cab8d1..bc479b42d2 100644 ---- a/sysdeps/x86_64/fpu/multiarch/Makefile -+++ b/sysdeps/x86_64/fpu/multiarch/Makefile -@@ -1,6 +1,7 @@ - ifeq ($(subdir),math) - CFLAGS-e_asin-fma.c = -mfma -mavx2 - CFLAGS-e_atan2-fma.c = -mfma -mavx2 -+CFLAGS-e_atanh-fma.c = -mfma -mavx2 - CFLAGS-e_exp-fma.c = -mfma -mavx2 - CFLAGS-e_log-fma.c = -mfma -mavx2 - CFLAGS-e_log2-fma.c = -mfma -mavx2 -@@ -57,6 +58,7 @@ libm-sysdep_routines += \ - e_asin-fma \ - e_atan2-avx \ - e_atan2-fma \ -+ e_atanh-fma \ - e_exp-avx \ - e_exp-fma \ - e_exp2f-fma \ -diff --git a/sysdeps/x86_64/fpu/multiarch/e_atanh-fma.c b/sysdeps/x86_64/fpu/multiarch/e_atanh-fma.c -new file mode 100644 -index 0000000000..c3f2f9e550 ---- /dev/null -+++ b/sysdeps/x86_64/fpu/multiarch/e_atanh-fma.c -@@ -0,0 +1,6 @@ -+#define __ieee754_atanh __ieee754_atanh_fma -+#define __log1p __log1p_fma -+ -+#define SECTION __attribute__ ((section (".text.fma"))) -+ -+#include -diff --git a/sysdeps/x86_64/fpu/multiarch/e_atanh.c b/sysdeps/x86_64/fpu/multiarch/e_atanh.c -new file mode 100644 -index 0000000000..d2b785dfc0 ---- /dev/null -+++ b/sysdeps/x86_64/fpu/multiarch/e_atanh.c -@@ -0,0 +1,34 @@ -+/* Multiple versions of atanh. -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL -+# include -+ -+extern double __redirect_ieee754_atanh (double); -+ -+# define SYMBOL_NAME ieee754_atanh -+# include "ifunc-fma.h" -+ -+libc_ifunc_redirected (__redirect_ieee754_atanh, __ieee754_atanh, IFUNC_SELECTOR ()); -+ -+libm_alias_finite (__ieee754_atanh, __atanh) -+ -+# define __ieee754_atanh __ieee754_atanh_sse2 -+#endif -+#include - -commit 8fc492bb4234edc1a5e8c3b7f76ba345ea7109ec -Author: Florian Weimer -Date: Fri Mar 28 09:26:06 2025 +0100 - - x86: Skip XSAVE state size reset if ISA level requires XSAVE - - If we have to use XSAVE or XSAVEC trampolines, do not adjust the size - information they need. Technically, it is an operator error to try to - run with -XSAVE,-XSAVEC on such builds, but this change here disables - some unnecessary code with higher ISA levels and simplifies testing. - - Related to commit befe2d3c4dec8be2cdd01a47132e47bdb7020922 - ("x86-64: Don't use SSE resolvers for ISA level 3 or above"). - - Reviewed-by: H.J. Lu - (cherry picked from commit 59585ddaa2d44f22af04bb4b8bd4ad1e302c4c02) - -diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c -index c096dd390a..b5b264db7f 100644 ---- a/sysdeps/x86/cpu-features.c -+++ b/sysdeps/x86/cpu-features.c -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - - extern void TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *) - attribute_hidden; -@@ -1119,6 +1120,9 @@ no_cpuid: - TUNABLE_CALLBACK (set_prefer_map_32bit_exec)); - #endif - -+ /* Do not add the logic to disable XSAVE/XSAVEC if this glibc build -+ requires AVX and therefore XSAVE or XSAVEC support. */ -+#ifndef GCCMACRO__AVX__ - bool disable_xsave_features = false; - - if (!CPU_FEATURE_USABLE_P (cpu_features, OSXSAVE)) -@@ -1172,6 +1176,7 @@ no_cpuid: - - CPU_FEATURE_UNSET (cpu_features, FMA4); - } -+#endif - - #ifdef __x86_64__ - GLRO(dl_hwcap) = HWCAP_X86_64; - -commit df22af58f66e6815c054b1c56249356c2994935a -Author: Florian Weimer -Date: Fri Mar 28 09:26:59 2025 +0100 - - x86: Use separate variable for TLSDESC XSAVE/XSAVEC state size (bug 32810) - - Previously, the initialization code reused the xsave_state_full_size - member of struct cpu_features for the TLSDESC state size. However, - the tunable processing code assumes that this member has the - original XSAVE (non-compact) state size, so that it can use its - value if XSAVEC is disabled via tunable. - - This change uses a separate variable and not a struct member because - the value is only needed in ld.so and the static libc, but not in - libc.so. As a result, struct cpu_features layout does not change, - helping a future backport of this change. - - Fixes commit 9b7091415af47082664717210ac49d51551456ab ("x86-64: - Update _dl_tlsdesc_dynamic to preserve AMX registers"). - - Reviewed-by: H.J. Lu - (cherry picked from commit 145097dff170507fe73190e8e41194f5b5f7e6bf) - -diff --git a/NEWS b/NEWS -index 57feba81cd..7a6985f5dd 100644 ---- a/NEWS -+++ b/NEWS -@@ -22,6 +22,7 @@ The following bugs are resolved with this release: - [32231] elf: Change ldconfig auxcache magic number - [32245] glibc -Wstringop-overflow= build failure on hppa - [32470] x86: Avoid integer truncation with large cache sizes -+ [32810] Crash on x86-64 if XSAVEC disable via tunable - - Version 2.40 - -diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile -index 5311b594af..8819fba1b7 100644 ---- a/sysdeps/x86/Makefile -+++ b/sysdeps/x86/Makefile -@@ -21,6 +21,9 @@ tests += \ - tst-cpu-features-supports-static \ - tst-get-cpu-features \ - tst-get-cpu-features-static \ -+ tst-gnu2-tls2-x86-noxsave \ -+ tst-gnu2-tls2-x86-noxsavec \ -+ tst-gnu2-tls2-x86-noxsavexsavec \ - tst-hwcap-tunables \ - # tests - tests-static += \ -@@ -91,6 +94,22 @@ CFLAGS-tst-gnu2-tls2.c += -msse - CFLAGS-tst-gnu2-tls2mod0.c += -msse2 -mtune=haswell - CFLAGS-tst-gnu2-tls2mod1.c += -msse2 -mtune=haswell - CFLAGS-tst-gnu2-tls2mod2.c += -msse2 -mtune=haswell -+ -+LDFLAGS-tst-gnu2-tls2-x86-noxsave += -Wl,-z,lazy -+LDFLAGS-tst-gnu2-tls2-x86-noxsavec += -Wl,-z,lazy -+LDFLAGS-tst-gnu2-tls2-x86-noxsavexsavec += -Wl,-z,lazy -+ -+# Test for bug 32810: incorrect XSAVE state size if XSAVEC is disabled -+# via tunable. -+tst-gnu2-tls2-x86-noxsave-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVE -+tst-gnu2-tls2-x86-noxsavec-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC -+tst-gnu2-tls2-x86-noxsavexsavec-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVE,-XSAVEC -+$(objpfx)tst-gnu2-tls2-x86-noxsave.out \ -+$(objpfx)tst-gnu2-tls2-x86-noxsavec.out \ -+$(objpfx)tst-gnu2-tls2-x86-noxsavexsavec.out: \ -+ $(objpfx)tst-gnu2-tls2mod0.so \ -+ $(objpfx)tst-gnu2-tls2mod1.so \ -+ $(objpfx)tst-gnu2-tls2mod2.so - endif - - ifeq ($(subdir),math) -diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c -index b5b264db7f..ec27337337 100644 ---- a/sysdeps/x86/cpu-features.c -+++ b/sysdeps/x86/cpu-features.c -@@ -84,6 +84,8 @@ extern void TUNABLE_CALLBACK (set_x86_shstk) (tunable_val_t *) - # include - #endif - -+unsigned long int _dl_x86_features_tlsdesc_state_size; -+ - static void - update_active (struct cpu_features *cpu_features) - { -@@ -318,6 +320,7 @@ update_active (struct cpu_features *cpu_features) - = xsave_state_full_size; - cpu_features->xsave_state_full_size - = xsave_state_full_size; -+ _dl_x86_features_tlsdesc_state_size = xsave_state_full_size; - - /* Check if XSAVEC is available. */ - if (CPU_FEATURES_CPU_P (cpu_features, XSAVEC)) -@@ -406,11 +409,9 @@ update_active (struct cpu_features *cpu_features) - = ALIGN_UP ((amx_size - + TLSDESC_CALL_REGISTER_SAVE_AREA), - 64); -- /* Set xsave_state_full_size to the compact AMX -- state size for XSAVEC. NB: xsave_state_full_size -- is only used in _dl_tlsdesc_dynamic_xsave and -- _dl_tlsdesc_dynamic_xsavec. */ -- cpu_features->xsave_state_full_size = amx_size; -+ /* Set TLSDESC state size to the compact AMX -+ state size for XSAVEC. */ -+ _dl_x86_features_tlsdesc_state_size = amx_size; - #endif - cpu_features->xsave_state_size - = ALIGN_UP (size + TLSDESC_CALL_REGISTER_SAVE_AREA, -diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c -index ccc6b64dc2..a0b31d80f6 100644 ---- a/sysdeps/x86/cpu-tunables.c -+++ b/sysdeps/x86/cpu-tunables.c -@@ -164,6 +164,8 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) - /* Update xsave_state_size to XSAVE state size. */ - cpu_features->xsave_state_size - = cpu_features->xsave_state_full_size; -+ _dl_x86_features_tlsdesc_state_size -+ = cpu_features->xsave_state_full_size; - CPU_FEATURE_UNSET (cpu_features, XSAVEC); - } - } -diff --git a/sysdeps/x86/dl-diagnostics-cpu.c b/sysdeps/x86/dl-diagnostics-cpu.c -index 49eeb5f70a..41100a908a 100644 ---- a/sysdeps/x86/dl-diagnostics-cpu.c -+++ b/sysdeps/x86/dl-diagnostics-cpu.c -@@ -89,6 +89,8 @@ _dl_diagnostics_cpu (void) - cpu_features->xsave_state_size); - print_cpu_features_value ("xsave_state_full_size", - cpu_features->xsave_state_full_size); -+ print_cpu_features_value ("tlsdesc_state_full_size", -+ _dl_x86_features_tlsdesc_state_size); - print_cpu_features_value ("data_cache_size", cpu_features->data_cache_size); - print_cpu_features_value ("shared_cache_size", - cpu_features->shared_cache_size); -diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h -index aaae44f0e1..03c71387dd 100644 ---- a/sysdeps/x86/include/cpu-features.h -+++ b/sysdeps/x86/include/cpu-features.h -@@ -934,8 +934,6 @@ struct cpu_features - /* The full state size for XSAVE when XSAVEC is disabled by - - GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC -- -- and the AMX state size when XSAVEC is available. - */ - unsigned int xsave_state_full_size; - /* Data cache size for use in memory and string routines, typically -@@ -989,6 +987,13 @@ extern const struct cpu_features *_dl_x86_get_cpu_features (void) - - #define __get_cpu_features() _dl_x86_get_cpu_features() - -+#if IS_IN (rtld) || IS_IN (libc) -+/* XSAVE/XSAVEC state size used by TLS descriptors. Compared to -+ xsave_state_size from struct cpu_features, this includes additional -+ registers. */ -+extern unsigned long int _dl_x86_features_tlsdesc_state_size attribute_hidden; -+#endif -+ - #if defined (_LIBC) && !IS_IN (nonlib) - /* Unused for x86. */ - # define INIT_ARCH() -diff --git a/sysdeps/x86/tst-gnu2-tls2-x86-noxsave.c b/sysdeps/x86/tst-gnu2-tls2-x86-noxsave.c -new file mode 100644 -index 0000000000..f0024c143d ---- /dev/null -+++ b/sysdeps/x86/tst-gnu2-tls2-x86-noxsave.c -@@ -0,0 +1 @@ -+#include -diff --git a/sysdeps/x86/tst-gnu2-tls2-x86-noxsavec.c b/sysdeps/x86/tst-gnu2-tls2-x86-noxsavec.c -new file mode 100644 -index 0000000000..f0024c143d ---- /dev/null -+++ b/sysdeps/x86/tst-gnu2-tls2-x86-noxsavec.c -@@ -0,0 +1 @@ -+#include -diff --git a/sysdeps/x86/tst-gnu2-tls2-x86-noxsavexsavec.c b/sysdeps/x86/tst-gnu2-tls2-x86-noxsavexsavec.c -new file mode 100644 -index 0000000000..f0024c143d ---- /dev/null -+++ b/sysdeps/x86/tst-gnu2-tls2-x86-noxsavexsavec.c -@@ -0,0 +1 @@ -+#include -diff --git a/sysdeps/x86_64/dl-tlsdesc-dynamic.h b/sysdeps/x86_64/dl-tlsdesc-dynamic.h -index 9f02cfc3eb..44d948696f 100644 ---- a/sysdeps/x86_64/dl-tlsdesc-dynamic.h -+++ b/sysdeps/x86_64/dl-tlsdesc-dynamic.h -@@ -99,7 +99,7 @@ _dl_tlsdesc_dynamic: - # endif - #else - /* Allocate stack space of the required size to save the state. */ -- sub _rtld_local_ro+RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+XSAVE_STATE_FULL_SIZE_OFFSET(%rip), %RSP_LP -+ sub _dl_x86_features_tlsdesc_state_size(%rip), %RSP_LP - #endif - /* Besides rdi and rsi, saved above, save rcx, rdx, r8, r9, - r10 and r11. */ - -commit a87d9a2c2cc17a3b22fd3be8d106336f4dcf2042 -Author: Florian Weimer -Date: Mon Mar 31 21:33:18 2025 +0200 - - x86: Link tst-gnu2-tls2-x86-noxsave{,c,xsavec} with libpthread - - This fixes a test build failure on Hurd. - - Fixes commit 145097dff170507fe73190e8e41194f5b5f7e6bf ("x86: Use separate - variable for TLSDESC XSAVE/XSAVEC state size (bug 32810)"). - - Reviewed-by: Adhemerval Zanella - (cherry picked from commit c6e2895695118ab59c7b17feb0fcb75a53e3478c) - -diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile -index 8819fba1b7..01b0192ddf 100644 ---- a/sysdeps/x86/Makefile -+++ b/sysdeps/x86/Makefile -@@ -104,6 +104,9 @@ LDFLAGS-tst-gnu2-tls2-x86-noxsavexsavec += -Wl,-z,lazy - tst-gnu2-tls2-x86-noxsave-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVE - tst-gnu2-tls2-x86-noxsavec-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC - tst-gnu2-tls2-x86-noxsavexsavec-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVE,-XSAVEC -+$(objpfx)tst-gnu2-tls2-x86-noxsave: $(shared-thread-library) -+$(objpfx)tst-gnu2-tls2-x86-noxsavec: $(shared-thread-library) -+$(objpfx)tst-gnu2-tls2-x86-noxsavexsavec: $(shared-thread-library) - $(objpfx)tst-gnu2-tls2-x86-noxsave.out \ - $(objpfx)tst-gnu2-tls2-x86-noxsavec.out \ - $(objpfx)tst-gnu2-tls2-x86-noxsavexsavec.out: \ - -commit 8fe27af20c8b25b84e12bcd52353862a95044aa2 -Author: Noah Goldstein -Date: Wed Aug 14 14:37:30 2024 +0800 - - x86: Use `Avoid_Non_Temporal_Memset` to control non-temporal path - - This is just a refactor and there should be no behavioral change from - this commit. - - The goal is to make `Avoid_Non_Temporal_Memset` a more universal knob - for controlling whether we use non-temporal memset rather than having - extra logic based on vendor. - Reviewed-by: H.J. Lu - - (cherry picked from commit b93dddfaf440aa12f45d7c356f6ffe9f27d35577) - -diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c -index ec27337337..8841020b36 100644 ---- a/sysdeps/x86/cpu-features.c -+++ b/sysdeps/x86/cpu-features.c -@@ -758,6 +758,12 @@ init_cpu_features (struct cpu_features *cpu_features) - unsigned int stepping = 0; - enum cpu_features_kind kind; - -+ /* Default is avoid non-temporal memset for non Intel/AMD hardware. This is, -+ as of writing this, we only have benchmarks indicatings it profitability -+ on Intel/AMD. */ -+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] -+ |= bit_arch_Avoid_Non_Temporal_Memset; -+ - cpu_features->cachesize_non_temporal_divisor = 4; - #if !HAS_CPUID - if (__get_cpuid_max (0, 0) == 0) -@@ -783,6 +789,11 @@ init_cpu_features (struct cpu_features *cpu_features) - - update_active (cpu_features); - -+ /* Benchmarks indicate non-temporal memset can be profitable on Intel -+ hardware. */ -+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] -+ &= ~bit_arch_Avoid_Non_Temporal_Memset; -+ - if (family == 0x06) - { - model += extended_model; -@@ -993,6 +1004,11 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht - - ecx = cpu_features->features[CPUID_INDEX_1].cpuid.ecx; - -+ /* Benchmarks indicate non-temporal memset can be profitable on AMD -+ hardware. */ -+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] -+ &= ~bit_arch_Avoid_Non_Temporal_Memset; -+ - if (CPU_FEATURE_USABLE_P (cpu_features, AVX)) - { - /* Since the FMA4 bit is in CPUID_INDEX_80000001 and -diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h -index ac97414b5b..7b1b61c096 100644 ---- a/sysdeps/x86/dl-cacheinfo.h -+++ b/sysdeps/x86/dl-cacheinfo.h -@@ -988,14 +988,6 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - if (CPU_FEATURE_USABLE_P (cpu_features, FSRM)) - rep_movsb_threshold = 2112; - -- /* Non-temporal stores are more performant on Intel and AMD hardware above -- non_temporal_threshold. Enable this for both Intel and AMD hardware. */ -- unsigned long int memset_non_temporal_threshold = SIZE_MAX; -- if (!CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset) -- && (cpu_features->basic.kind == arch_kind_intel -- || cpu_features->basic.kind == arch_kind_amd)) -- memset_non_temporal_threshold = non_temporal_threshold; -- - /* For AMD CPUs that support ERMS (Zen3+), REP MOVSB is in a lot of - cases slower than the vectorized path (and for some alignments, - it is really slow, check BZ #30994). */ -@@ -1017,6 +1009,13 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) - if (tunable_size != 0) - shared = tunable_size; - -+ /* Non-temporal stores are more performant on some hardware above -+ non_temporal_threshold. Currently Prefer_Non_Temporal is set for for both -+ Intel and AMD hardware. */ -+ unsigned long int memset_non_temporal_threshold = SIZE_MAX; -+ if (!CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset)) -+ memset_non_temporal_threshold = non_temporal_threshold; -+ - tunable_size = TUNABLE_GET (x86_non_temporal_threshold, long int, NULL); - if (tunable_size > minimum_non_temporal_threshold - && tunable_size <= maximum_non_temporal_threshold) - -commit 7c6bd71b4dbdadab34e4fd21ec09b86b32daf443 -Author: Sunil K Pandey -Date: Thu Apr 3 13:00:45 2025 -0700 - - x86: Optimize xstate size calculation - - Scan xstate IDs up to the maximum supported xstate ID. Remove the - separate AMX xstate calculation. Instead, exclude the AMX space from - the start of TILECFG to the end of TILEDATA in xsave_state_size. - - Completed validation on SKL/SKX/SPR/SDE and compared xsave state size - with "ld.so --list-diagnostics" option, no regression. - - Co-Authored-By: H.J. Lu - Reviewed-by: Sunil K Pandey - (cherry picked from commit 70b648855185e967e54668b101d24704c3fb869d) - -diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c -index 8841020b36..1d5e2a0072 100644 ---- a/sysdeps/x86/cpu-features.c -+++ b/sysdeps/x86/cpu-features.c -@@ -325,13 +325,8 @@ update_active (struct cpu_features *cpu_features) - /* Check if XSAVEC is available. */ - if (CPU_FEATURES_CPU_P (cpu_features, XSAVEC)) - { -- unsigned int xstate_comp_offsets[32]; -- unsigned int xstate_comp_sizes[32]; --#ifdef __x86_64__ -- unsigned int xstate_amx_comp_offsets[32]; -- unsigned int xstate_amx_comp_sizes[32]; -- unsigned int amx_ecx; --#endif -+ unsigned int xstate_comp_offsets[X86_XSTATE_MAX_ID + 1]; -+ unsigned int xstate_comp_sizes[X86_XSTATE_MAX_ID + 1]; - unsigned int i; - - xstate_comp_offsets[0] = 0; -@@ -339,39 +334,16 @@ update_active (struct cpu_features *cpu_features) - xstate_comp_offsets[2] = 576; - xstate_comp_sizes[0] = 160; - xstate_comp_sizes[1] = 256; --#ifdef __x86_64__ -- xstate_amx_comp_offsets[0] = 0; -- xstate_amx_comp_offsets[1] = 160; -- xstate_amx_comp_offsets[2] = 576; -- xstate_amx_comp_sizes[0] = 160; -- xstate_amx_comp_sizes[1] = 256; --#endif - -- for (i = 2; i < 32; i++) -+ for (i = 2; i <= X86_XSTATE_MAX_ID; i++) - { - if ((FULL_STATE_SAVE_MASK & (1 << i)) != 0) - { - __cpuid_count (0xd, i, eax, ebx, ecx, edx); --#ifdef __x86_64__ -- /* Include this in xsave_state_full_size. */ -- amx_ecx = ecx; -- xstate_amx_comp_sizes[i] = eax; -- if ((AMX_STATE_SAVE_MASK & (1 << i)) != 0) -- { -- /* Exclude this from xsave_state_size. */ -- ecx = 0; -- xstate_comp_sizes[i] = 0; -- } -- else --#endif -- xstate_comp_sizes[i] = eax; -+ xstate_comp_sizes[i] = eax; - } - else - { --#ifdef __x86_64__ -- amx_ecx = 0; -- xstate_amx_comp_sizes[i] = 0; --#endif - ecx = 0; - xstate_comp_sizes[i] = 0; - } -@@ -380,42 +352,32 @@ update_active (struct cpu_features *cpu_features) - { - xstate_comp_offsets[i] - = (xstate_comp_offsets[i - 1] -- + xstate_comp_sizes[i -1]); -+ + xstate_comp_sizes[i - 1]); - if ((ecx & (1 << 1)) != 0) - xstate_comp_offsets[i] - = ALIGN_UP (xstate_comp_offsets[i], 64); --#ifdef __x86_64__ -- xstate_amx_comp_offsets[i] -- = (xstate_amx_comp_offsets[i - 1] -- + xstate_amx_comp_sizes[i - 1]); -- if ((amx_ecx & (1 << 1)) != 0) -- xstate_amx_comp_offsets[i] -- = ALIGN_UP (xstate_amx_comp_offsets[i], -- 64); --#endif - } - } - - /* Use XSAVEC. */ - unsigned int size -- = xstate_comp_offsets[31] + xstate_comp_sizes[31]; -+ = (xstate_comp_offsets[X86_XSTATE_MAX_ID] -+ + xstate_comp_sizes[X86_XSTATE_MAX_ID]); - if (size) - { -+ size = ALIGN_UP (size + TLSDESC_CALL_REGISTER_SAVE_AREA, -+ 64); - #ifdef __x86_64__ -- unsigned int amx_size -- = (xstate_amx_comp_offsets[31] -- + xstate_amx_comp_sizes[31]); -- amx_size -- = ALIGN_UP ((amx_size -- + TLSDESC_CALL_REGISTER_SAVE_AREA), -- 64); -- /* Set TLSDESC state size to the compact AMX -- state size for XSAVEC. */ -- _dl_x86_features_tlsdesc_state_size = amx_size; -+ _dl_x86_features_tlsdesc_state_size = size; -+ /* Exclude the AMX space from the start of TILECFG -+ space to the end of TILEDATA space. If CPU -+ doesn't support AMX, TILECFG offset is the same -+ as TILEDATA + 1 offset. Otherwise, they are -+ multiples of 64. */ -+ size -= (xstate_comp_offsets[X86_XSTATE_TILEDATA_ID + 1] -+ - xstate_comp_offsets[X86_XSTATE_TILECFG_ID]); - #endif -- cpu_features->xsave_state_size -- = ALIGN_UP (size + TLSDESC_CALL_REGISTER_SAVE_AREA, -- 64); -+ cpu_features->xsave_state_size = size; - CPU_FEATURE_SET (cpu_features, XSAVEC); - } - } -diff --git a/sysdeps/x86/sysdep.h b/sysdeps/x86/sysdep.h -index 7359149e17..1d6cabd816 100644 ---- a/sysdeps/x86/sysdep.h -+++ b/sysdeps/x86/sysdep.h -@@ -102,6 +102,9 @@ - | (1 << X86_XSTATE_ZMM_ID) \ - | (1 << X86_XSTATE_APX_F_ID)) - -+/* The maximum supported xstate ID. */ -+# define X86_XSTATE_MAX_ID X86_XSTATE_APX_F_ID -+ - /* AMX state mask. */ - # define AMX_STATE_SAVE_MASK \ - ((1 << X86_XSTATE_TILECFG_ID) | (1 << X86_XSTATE_TILEDATA_ID)) -@@ -123,6 +126,9 @@ - | (1 << X86_XSTATE_K_ID) \ - | (1 << X86_XSTATE_ZMM_H_ID)) - -+/* The maximum supported xstate ID. */ -+# define X86_XSTATE_MAX_ID X86_XSTATE_ZMM_H_ID -+ - /* States to be included in xsave_state_size. */ - # define FULL_STATE_SAVE_MASK STATE_SAVE_MASK - #endif - -commit 44f92df8007d57f82b1518e219a0dbb60389ef2c -Author: Sunil K Pandey -Date: Thu Apr 3 18:14:20 2025 -0700 - - x86: Add ARL/PTL/CWF model detection support - - - Add ARROWLAKE model detection. - - Add PANTHERLAKE model detection. - - Add CLEARWATERFOREST model detection. - - Intel® Architecture Instruction Set Extensions Programming Reference - https://cdrdv2.intel.com/v1/dl/getContent/671368 Section 1.2. - - No regression, validated model detection on SDE. - - Reviewed-by: H.J. Lu - (cherry picked from commit e53eb952b970ac94c97d74fb447418fb327ca096) - -diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c -index 1d5e2a0072..7f21a8227e 100644 ---- a/sysdeps/x86/cpu-features.c -+++ b/sysdeps/x86/cpu-features.c -@@ -512,6 +512,7 @@ enum - INTEL_ATOM_GOLDMONT, - INTEL_ATOM_GOLDMONT_PLUS, - INTEL_ATOM_SIERRAFOREST, -+ INTEL_ATOM_CLEARWATERFOREST, - INTEL_ATOM_GRANDRIDGE, - INTEL_ATOM_TREMONT, - -@@ -539,6 +540,7 @@ enum - INTEL_BIGCORE_METEORLAKE, - INTEL_BIGCORE_LUNARLAKE, - INTEL_BIGCORE_ARROWLAKE, -+ INTEL_BIGCORE_PANTHERLAKE, - INTEL_BIGCORE_GRANITERAPIDS, - - /* Mixed (bigcore + atom SOC). */ -@@ -584,6 +586,8 @@ intel_get_fam6_microarch (unsigned int model, - return INTEL_ATOM_GOLDMONT_PLUS; - case 0xAF: - return INTEL_ATOM_SIERRAFOREST; -+ case 0xDD: -+ return INTEL_ATOM_CLEARWATERFOREST; - case 0xB6: - return INTEL_ATOM_GRANDRIDGE; - case 0x86: -@@ -691,8 +695,12 @@ intel_get_fam6_microarch (unsigned int model, - return INTEL_BIGCORE_METEORLAKE; - case 0xbd: - return INTEL_BIGCORE_LUNARLAKE; -+ case 0xb5: -+ case 0xc5: - case 0xc6: - return INTEL_BIGCORE_ARROWLAKE; -+ case 0xCC: -+ return INTEL_BIGCORE_PANTHERLAKE; - case 0xAD: - case 0xAE: - return INTEL_BIGCORE_GRANITERAPIDS; -@@ -808,6 +816,7 @@ init_cpu_features (struct cpu_features *cpu_features) - Default tuned atom microarch. - case INTEL_ATOM_SIERRAFOREST: - case INTEL_ATOM_GRANDRIDGE: -+ case INTEL_ATOM_CLEARWATERFOREST: - */ - - /* Bigcore/Default Tuning. */ -@@ -864,6 +873,7 @@ init_cpu_features (struct cpu_features *cpu_features) - case INTEL_BIGCORE_METEORLAKE: - case INTEL_BIGCORE_LUNARLAKE: - case INTEL_BIGCORE_ARROWLAKE: -+ case INTEL_BIGCORE_PANTHERLAKE: - case INTEL_BIGCORE_SAPPHIRERAPIDS: - case INTEL_BIGCORE_EMERALDRAPIDS: - case INTEL_BIGCORE_GRANITERAPIDS: - -commit 9ee8083c4edbe5e92af7aabb23261309f03ef05c -Author: Sunil K Pandey -Date: Fri Apr 11 08:52:52 2025 -0700 - - x86: Handle unknown Intel processor with default tuning - - Enable default tuning for unknown Intel processor. - - Tested on x86, no regression. - - Co-Authored-By: H.J. Lu - Reviewed-by: H.J. Lu - (cherry picked from commit 9f0deff558d1d6b08c425c157f50de85013ada9c) - -diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c -index 7f21a8227e..1a6e694abf 100644 ---- a/sysdeps/x86/cpu-features.c -+++ b/sysdeps/x86/cpu-features.c -@@ -502,8 +502,8 @@ _Static_assert (((index_arch_Fast_Unaligned_Load - "Incorrect index_arch_Fast_Unaligned_Load"); - - --/* Intel Family-6 microarch list. */ --enum -+/* Intel microarch list. */ -+enum intel_microarch - { - /* Atom processors. */ - INTEL_ATOM_BONNELL, -@@ -555,7 +555,7 @@ enum - INTEL_UNKNOWN, - }; - --static unsigned int -+static enum intel_microarch - intel_get_fam6_microarch (unsigned int model, - __attribute__ ((unused)) unsigned int stepping) - { -@@ -764,134 +764,20 @@ init_cpu_features (struct cpu_features *cpu_features) - cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] - &= ~bit_arch_Avoid_Non_Temporal_Memset; - -+ enum intel_microarch microarch = INTEL_UNKNOWN; - if (family == 0x06) - { - model += extended_model; -- unsigned int microarch -- = intel_get_fam6_microarch (model, stepping); -+ microarch = intel_get_fam6_microarch (model, stepping); - -+ /* Disable TSX on some processors to avoid TSX on kernels that -+ weren't updated with the latest microcode package (which -+ disables broken feature by default). */ - switch (microarch) - { -- /* Atom / KNL tuning. */ -- case INTEL_ATOM_BONNELL: -- /* BSF is slow on Bonnell. */ -- cpu_features->preferred[index_arch_Slow_BSF] -- |= bit_arch_Slow_BSF; -- break; -- -- /* Unaligned load versions are faster than SSSE3 -- on Airmont, Silvermont, Goldmont, and Goldmont Plus. */ -- case INTEL_ATOM_AIRMONT: -- case INTEL_ATOM_SILVERMONT: -- case INTEL_ATOM_GOLDMONT: -- case INTEL_ATOM_GOLDMONT_PLUS: -- -- /* Knights Landing. Enable Silvermont optimizations. */ -- case INTEL_KNIGHTS_LANDING: -- -- cpu_features->preferred[index_arch_Fast_Unaligned_Load] -- |= (bit_arch_Fast_Unaligned_Load -- | bit_arch_Fast_Unaligned_Copy -- | bit_arch_Prefer_PMINUB_for_stringop -- | bit_arch_Slow_SSE4_2); -- break; -- -- case INTEL_ATOM_TREMONT: -- /* Enable rep string instructions, unaligned load, unaligned -- copy, pminub and avoid SSE 4.2 on Tremont. */ -- cpu_features->preferred[index_arch_Fast_Rep_String] -- |= (bit_arch_Fast_Rep_String -- | bit_arch_Fast_Unaligned_Load -- | bit_arch_Fast_Unaligned_Copy -- | bit_arch_Prefer_PMINUB_for_stringop -- | bit_arch_Slow_SSE4_2); -- break; -- -- /* -- Default tuned Knights microarch. -- case INTEL_KNIGHTS_MILL: -- */ -- -- /* -- Default tuned atom microarch. -- case INTEL_ATOM_SIERRAFOREST: -- case INTEL_ATOM_GRANDRIDGE: -- case INTEL_ATOM_CLEARWATERFOREST: -- */ -- -- /* Bigcore/Default Tuning. */ - default: -- default_tuning: -- /* Unknown family 0x06 processors. Assuming this is one -- of Core i3/i5/i7 processors if AVX is available. */ -- if (!CPU_FEATURES_CPU_P (cpu_features, AVX)) -- break; -- -- enable_modern_features: -- /* Rep string instructions, unaligned load, unaligned copy, -- and pminub are fast on Intel Core i3, i5 and i7. */ -- cpu_features->preferred[index_arch_Fast_Rep_String] -- |= (bit_arch_Fast_Rep_String -- | bit_arch_Fast_Unaligned_Load -- | bit_arch_Fast_Unaligned_Copy -- | bit_arch_Prefer_PMINUB_for_stringop); - break; - -- case INTEL_BIGCORE_NEHALEM: -- case INTEL_BIGCORE_WESTMERE: -- /* Older CPUs prefer non-temporal stores at lower threshold. */ -- cpu_features->cachesize_non_temporal_divisor = 8; -- goto enable_modern_features; -- -- /* Older Bigcore microarch (smaller non-temporal store -- threshold). */ -- case INTEL_BIGCORE_SANDYBRIDGE: -- case INTEL_BIGCORE_IVYBRIDGE: -- case INTEL_BIGCORE_HASWELL: -- case INTEL_BIGCORE_BROADWELL: -- cpu_features->cachesize_non_temporal_divisor = 8; -- goto default_tuning; -- -- /* Newer Bigcore microarch (larger non-temporal store -- threshold). */ -- case INTEL_BIGCORE_SKYLAKE_AVX512: -- case INTEL_BIGCORE_CANNONLAKE: -- /* Benchmarks indicate non-temporal memset is not -- necessarily profitable on SKX (and in some cases much -- worse). This is likely unique to SKX due its it unique -- mesh interconnect (not present on ICX or BWD). Disable -- non-temporal on all Skylake servers. */ -- cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] -- |= bit_arch_Avoid_Non_Temporal_Memset; -- case INTEL_BIGCORE_COMETLAKE: -- case INTEL_BIGCORE_SKYLAKE: -- case INTEL_BIGCORE_KABYLAKE: -- case INTEL_BIGCORE_ICELAKE: -- case INTEL_BIGCORE_TIGERLAKE: -- case INTEL_BIGCORE_ROCKETLAKE: -- case INTEL_BIGCORE_RAPTORLAKE: -- case INTEL_BIGCORE_METEORLAKE: -- case INTEL_BIGCORE_LUNARLAKE: -- case INTEL_BIGCORE_ARROWLAKE: -- case INTEL_BIGCORE_PANTHERLAKE: -- case INTEL_BIGCORE_SAPPHIRERAPIDS: -- case INTEL_BIGCORE_EMERALDRAPIDS: -- case INTEL_BIGCORE_GRANITERAPIDS: -- cpu_features->cachesize_non_temporal_divisor = 2; -- goto default_tuning; -- -- /* Default tuned Mixed (bigcore + atom SOC). */ -- case INTEL_MIXED_LAKEFIELD: -- case INTEL_MIXED_ALDERLAKE: -- cpu_features->cachesize_non_temporal_divisor = 2; -- goto default_tuning; -- } -- -- /* Disable TSX on some processors to avoid TSX on kernels that -- weren't updated with the latest microcode package (which -- disables broken feature by default). */ -- switch (microarch) -- { - case INTEL_BIGCORE_SKYLAKE_AVX512: - /* 0x55 (Skylake-avx512) && stepping <= 5 disable TSX. */ - if (stepping <= 5) -@@ -900,38 +786,152 @@ init_cpu_features (struct cpu_features *cpu_features) - - case INTEL_BIGCORE_KABYLAKE: - /* NB: Although the errata documents that for model == 0x8e -- (kabylake skylake client), only 0xb stepping or lower are -- impacted, the intention of the errata was to disable TSX on -- all client processors on all steppings. Include 0xc -- stepping which is an Intel Core i7-8665U, a client mobile -- processor. */ -+ (kabylake skylake client), only 0xb stepping or lower are -+ impacted, the intention of the errata was to disable TSX on -+ all client processors on all steppings. Include 0xc -+ stepping which is an Intel Core i7-8665U, a client mobile -+ processor. */ - if (stepping > 0xc) - break; - /* Fall through. */ - case INTEL_BIGCORE_SKYLAKE: -- /* Disable Intel TSX and enable RTM_ALWAYS_ABORT for -- processors listed in: -- --https://www.intel.com/content/www/us/en/support/articles/000059422/processors.html -- */ -- disable_tsx: -- CPU_FEATURE_UNSET (cpu_features, HLE); -- CPU_FEATURE_UNSET (cpu_features, RTM); -- CPU_FEATURE_SET (cpu_features, RTM_ALWAYS_ABORT); -- break; -+ /* Disable Intel TSX and enable RTM_ALWAYS_ABORT for -+ processors listed in: -+ -+ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.html -+ */ -+disable_tsx: -+ CPU_FEATURE_UNSET (cpu_features, HLE); -+ CPU_FEATURE_UNSET (cpu_features, RTM); -+ CPU_FEATURE_SET (cpu_features, RTM_ALWAYS_ABORT); -+ break; - - case INTEL_BIGCORE_HASWELL: -- /* Xeon E7 v3 (model == 0x3f) with stepping >= 4 has working -- TSX. Haswell also include other model numbers that have -- working TSX. */ -- if (model == 0x3f && stepping >= 4) -+ /* Xeon E7 v3 (model == 0x3f) with stepping >= 4 has working -+ TSX. Haswell also includes other model numbers that have -+ working TSX. */ -+ if (model == 0x3f && stepping >= 4) - break; - -- CPU_FEATURE_UNSET (cpu_features, RTM); -- break; -+ CPU_FEATURE_UNSET (cpu_features, RTM); -+ break; - } - } - -+ switch (microarch) -+ { -+ /* Atom / KNL tuning. */ -+ case INTEL_ATOM_BONNELL: -+ /* BSF is slow on Bonnell. */ -+ cpu_features->preferred[index_arch_Slow_BSF] -+ |= bit_arch_Slow_BSF; -+ break; -+ -+ /* Unaligned load versions are faster than SSSE3 -+ on Airmont, Silvermont, Goldmont, and Goldmont Plus. */ -+ case INTEL_ATOM_AIRMONT: -+ case INTEL_ATOM_SILVERMONT: -+ case INTEL_ATOM_GOLDMONT: -+ case INTEL_ATOM_GOLDMONT_PLUS: -+ -+ /* Knights Landing. Enable Silvermont optimizations. */ -+ case INTEL_KNIGHTS_LANDING: -+ -+ cpu_features->preferred[index_arch_Fast_Unaligned_Load] -+ |= (bit_arch_Fast_Unaligned_Load -+ | bit_arch_Fast_Unaligned_Copy -+ | bit_arch_Prefer_PMINUB_for_stringop -+ | bit_arch_Slow_SSE4_2); -+ break; -+ -+ case INTEL_ATOM_TREMONT: -+ /* Enable rep string instructions, unaligned load, unaligned -+ copy, pminub and avoid SSE 4.2 on Tremont. */ -+ cpu_features->preferred[index_arch_Fast_Rep_String] -+ |= (bit_arch_Fast_Rep_String -+ | bit_arch_Fast_Unaligned_Load -+ | bit_arch_Fast_Unaligned_Copy -+ | bit_arch_Prefer_PMINUB_for_stringop -+ | bit_arch_Slow_SSE4_2); -+ break; -+ -+ /* -+ Default tuned Knights microarch. -+ case INTEL_KNIGHTS_MILL: -+ */ -+ -+ /* -+ Default tuned atom microarch. -+ case INTEL_ATOM_SIERRAFOREST: -+ case INTEL_ATOM_GRANDRIDGE: -+ case INTEL_ATOM_CLEARWATERFOREST: -+ */ -+ -+ /* Bigcore/Default Tuning. */ -+ default: -+ default_tuning: -+ /* Unknown Intel processors. Assuming this is one of Core -+ i3/i5/i7 processors if AVX is available. */ -+ if (!CPU_FEATURES_CPU_P (cpu_features, AVX)) -+ break; -+ -+ enable_modern_features: -+ /* Rep string instructions, unaligned load, unaligned copy, -+ and pminub are fast on Intel Core i3, i5 and i7. */ -+ cpu_features->preferred[index_arch_Fast_Rep_String] -+ |= (bit_arch_Fast_Rep_String -+ | bit_arch_Fast_Unaligned_Load -+ | bit_arch_Fast_Unaligned_Copy -+ | bit_arch_Prefer_PMINUB_for_stringop); -+ break; -+ -+ case INTEL_BIGCORE_NEHALEM: -+ case INTEL_BIGCORE_WESTMERE: -+ /* Older CPUs prefer non-temporal stores at lower threshold. */ -+ cpu_features->cachesize_non_temporal_divisor = 8; -+ goto enable_modern_features; -+ -+ /* Older Bigcore microarch (smaller non-temporal store -+ threshold). */ -+ case INTEL_BIGCORE_SANDYBRIDGE: -+ case INTEL_BIGCORE_IVYBRIDGE: -+ case INTEL_BIGCORE_HASWELL: -+ case INTEL_BIGCORE_BROADWELL: -+ cpu_features->cachesize_non_temporal_divisor = 8; -+ goto default_tuning; -+ -+ /* Newer Bigcore microarch (larger non-temporal store -+ threshold). */ -+ case INTEL_BIGCORE_SKYLAKE_AVX512: -+ case INTEL_BIGCORE_CANNONLAKE: -+ /* Benchmarks indicate non-temporal memset is not -+ necessarily profitable on SKX (and in some cases much -+ worse). This is likely unique to SKX due to its unique -+ mesh interconnect (not present on ICX or BWD). Disable -+ non-temporal on all Skylake servers. */ -+ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] -+ |= bit_arch_Avoid_Non_Temporal_Memset; -+ /* fallthrough */ -+ case INTEL_BIGCORE_COMETLAKE: -+ case INTEL_BIGCORE_SKYLAKE: -+ case INTEL_BIGCORE_KABYLAKE: -+ case INTEL_BIGCORE_ICELAKE: -+ case INTEL_BIGCORE_TIGERLAKE: -+ case INTEL_BIGCORE_ROCKETLAKE: -+ case INTEL_BIGCORE_RAPTORLAKE: -+ case INTEL_BIGCORE_METEORLAKE: -+ case INTEL_BIGCORE_LUNARLAKE: -+ case INTEL_BIGCORE_ARROWLAKE: -+ case INTEL_BIGCORE_PANTHERLAKE: -+ case INTEL_BIGCORE_SAPPHIRERAPIDS: -+ case INTEL_BIGCORE_EMERALDRAPIDS: -+ case INTEL_BIGCORE_GRANITERAPIDS: -+ /* Default tuned Mixed (bigcore + atom SOC). */ -+ case INTEL_MIXED_LAKEFIELD: -+ case INTEL_MIXED_ALDERLAKE: -+ cpu_features->cachesize_non_temporal_divisor = 2; -+ goto default_tuning; -+ } - - /* Since AVX512ER is unique to Xeon Phi, set Prefer_No_VZEROUPPER - if AVX512ER is available. Don't use AVX512 to avoid lower CPU - -commit d8a1a1aef7a58b991505b9a1349a40736dec3abf -Author: H.J. Lu -Date: Sat Apr 12 08:37:29 2025 -0700 - - x86: Detect Intel Diamond Rapids - - Detect Intel Diamond Rapids and tune it similar to Intel Granite Rapids. - - Signed-off-by: H.J. Lu - Reviewed-by: Sunil K Pandey - (cherry picked from commit de14f1959ee5f9b845a7cae43bee03068b8136f0) - -diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c -index 1a6e694abf..52a2f03bdd 100644 ---- a/sysdeps/x86/cpu-features.c -+++ b/sysdeps/x86/cpu-features.c -@@ -542,6 +542,7 @@ enum intel_microarch - INTEL_BIGCORE_ARROWLAKE, - INTEL_BIGCORE_PANTHERLAKE, - INTEL_BIGCORE_GRANITERAPIDS, -+ INTEL_BIGCORE_DIAMONDRAPIDS, - - /* Mixed (bigcore + atom SOC). */ - INTEL_MIXED_LAKEFIELD, -@@ -817,6 +818,16 @@ disable_tsx: - break; - } - } -+ else if (family == 19) -+ switch (model) -+ { -+ case 0x01: -+ microarch = INTEL_BIGCORE_DIAMONDRAPIDS; -+ break; -+ -+ default: -+ break; -+ } - - switch (microarch) - { -@@ -926,6 +937,7 @@ disable_tsx: - case INTEL_BIGCORE_SAPPHIRERAPIDS: - case INTEL_BIGCORE_EMERALDRAPIDS: - case INTEL_BIGCORE_GRANITERAPIDS: -+ case INTEL_BIGCORE_DIAMONDRAPIDS: - /* Default tuned Mixed (bigcore + atom SOC). */ - case INTEL_MIXED_LAKEFIELD: - case INTEL_MIXED_ALDERLAKE: - -commit 736e6735053f12181d3d287898dd5fdb9e8baf59 -Author: Frank Barrus -Date: Wed Dec 4 07:55:02 2024 -0500 - - pthreads NPTL: lost wakeup fix 2 - - This fixes the lost wakeup (from a bug in signal stealing) with a change - in the usage of g_signals[] in the condition variable internal state. - It also completely eliminates the concept and handling of signal stealing, - as well as the need for signalers to block to wait for waiters to wake - up every time there is a G1/G2 switch. This greatly reduces the average - and maximum latency for pthread_cond_signal. - - The g_signals[] field now contains a signal count that is relative to - the current g1_start value. Since it is a 32-bit field, and the LSB is - still reserved (though not currently used anymore), it has a 31-bit value - that corresponds to the low 31 bits of the sequence number in g1_start. - (since g1_start also has an LSB flag, this means bits 31:1 in g_signals - correspond to bits 31:1 in g1_start, plus the current signal count) - - By making the signal count relative to g1_start, there is no longer - any ambiguity or A/B/A issue, and thus any checks before blocking, - including the futex call itself, are guaranteed not to block if the G1/G2 - switch occurs, even if the signal count remains the same. This allows - initially safely blocking in G2 until the switch to G1 occurs, and - then transitioning from G1 to a new G1 or G2, and always being able to - distinguish the state change. This removes the race condition and A/B/A - problems that otherwise ocurred if a late (pre-empted) waiter were to - resume just as the futex call attempted to block on g_signal since - otherwise there was no last opportunity to re-check things like whether - the current G1 group was already closed. - - By fixing these issues, the signal stealing code can be eliminated, - since there is no concept of signal stealing anymore. The code to block - for all waiters to exit g_refs can also be removed, since any waiters - that are still in the g_refs region can be guaranteed to safely wake - up and exit. If there are still any left at this time, they are all - sent one final futex wakeup to ensure that they are not blocked any - longer, but there is no need for the signaller to block and wait for - them to wake up and exit the g_refs region. - - The signal count is then effectively "zeroed" but since it is now - relative to g1_start, this is done by advancing it to a new value that - can be observed by any pending blocking waiters. Any late waiters can - always tell the difference, and can thus just cleanly exit if they are - in a stale G1 or G2. They can never steal a signal from the current - G1 if they are not in the current G1, since the signal value that has - to match in the cmpxchg has the low 31 bits of the g1_start value - contained in it, and that's first checked, and then it won't match if - there's a G1/G2 change. - - Note: the 31-bit sequence number used in g_signals is designed to - handle wrap-around when checking the signal count, but if the entire - 31-bit wraparound (2 billion signals) occurs while there is still a - late waiter that has not yet resumed, and it happens to then match - the current g1_start low bits, and the pre-emption occurs after the - normal "closed group" checks (which are 64-bit) but then hits the - futex syscall and signal consuming code, then an A/B/A issue could - still result and cause an incorrect assumption about whether it - should block. This particular scenario seems unlikely in practice. - Note that once awake from the futex, the waiter would notice the - closed group before consuming the signal (since that's still a 64-bit - check that would not be aliased in the wrap-around in g_signals), - so the biggest impact would be blocking on the futex until the next - full wakeup from a G1/G2 switch. - - Signed-off-by: Frank Barrus - Reviewed-by: Carlos O'Donell - (cherry picked from commit 1db84775f831a1494993ce9c118deaf9537cc50a) - -diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c -index 3487557bb8..4855b8899f 100644 ---- a/nptl/pthread_cond_common.c -+++ b/nptl/pthread_cond_common.c -@@ -201,7 +201,6 @@ static bool __attribute__ ((unused)) - __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - unsigned int *g1index, int private) - { -- const unsigned int maxspin = 0; - unsigned int g1 = *g1index; - - /* If there is no waiter in G2, we don't do anything. The expression may -@@ -222,84 +221,46 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - * New waiters arriving concurrently with the group switching will all go - into G2 until we atomically make the switch. Waiters existing in G2 - are not affected. -- * Waiters in G1 will be closed out immediately by setting a flag in -- __g_signals, which will prevent waiters from blocking using a futex on -- __g_signals and also notifies them that the group is closed. As a -- result, they will eventually remove their group reference, allowing us -- to close switch group roles. */ -- -- /* First, set the closed flag on __g_signals. This tells waiters that are -- about to wait that they shouldn't do that anymore. This basically -- serves as an advance notification of the upcoming change to __g1_start; -- waiters interpret it as if __g1_start was larger than their waiter -- sequence position. This allows us to change __g1_start after waiting -- for all existing waiters with group references to leave, which in turn -- makes recovery after stealing a signal simpler because it then can be -- skipped if __g1_start indicates that the group is closed (otherwise, -- we would have to recover always because waiters don't know how big their -- groups are). Relaxed MO is fine. */ -- atomic_fetch_or_relaxed (cond->__data.__g_signals + g1, 1); -- -- /* Wait until there are no group references anymore. The fetch-or operation -- injects us into the modification order of __g_refs; release MO ensures -- that waiters incrementing __g_refs after our fetch-or see the previous -- changes to __g_signals and to __g1_start that had to happen before we can -- switch this G1 and alias with an older group (we have two groups, so -- aliasing requires switching group roles twice). Note that nobody else -- can have set the wake-request flag, so we do not have to act upon it. -- -- Also note that it is harmless if older waiters or waiters from this G1 -- get a group reference after we have quiesced the group because it will -- remain closed for them either because of the closed flag in __g_signals -- or the later update to __g1_start. New waiters will never arrive here -- but instead continue to go into the still current G2. */ -- unsigned r = atomic_fetch_or_release (cond->__data.__g_refs + g1, 0); -- while ((r >> 1) > 0) -- { -- for (unsigned int spin = maxspin; ((r >> 1) > 0) && (spin > 0); spin--) -- { -- /* TODO Back off. */ -- r = atomic_load_relaxed (cond->__data.__g_refs + g1); -- } -- if ((r >> 1) > 0) -- { -- /* There is still a waiter after spinning. Set the wake-request -- flag and block. Relaxed MO is fine because this is just about -- this futex word. -- -- Update r to include the set wake-request flag so that the upcoming -- futex_wait only blocks if the flag is still set (otherwise, we'd -- violate the basic client-side futex protocol). */ -- r = atomic_fetch_or_relaxed (cond->__data.__g_refs + g1, 1) | 1; -- -- if ((r >> 1) > 0) -- futex_wait_simple (cond->__data.__g_refs + g1, r, private); -- /* Reload here so we eventually see the most recent value even if we -- do not spin. */ -- r = atomic_load_relaxed (cond->__data.__g_refs + g1); -- } -- } -- /* Acquire MO so that we synchronize with the release operation that waiters -- use to decrement __g_refs and thus happen after the waiters we waited -- for. */ -- atomic_thread_fence_acquire (); -+ * Waiters in G1 will be closed out immediately by the advancing of -+ __g_signals to the next "lowseq" (low 31 bits of the new g1_start), -+ which will prevent waiters from blocking using a futex on -+ __g_signals since it provides enough signals for all possible -+ remaining waiters. As a result, they can each consume a signal -+ and they will eventually remove their group reference. */ - - /* Update __g1_start, which finishes closing this group. The value we add - will never be negative because old_orig_size can only be zero when we - switch groups the first time after a condvar was initialized, in which -- case G1 will be at index 1 and we will add a value of 1. See above for -- why this takes place after waiting for quiescence of the group. -+ case G1 will be at index 1 and we will add a value of 1. - Relaxed MO is fine because the change comes with no additional - constraints that others would have to observe. */ - __condvar_add_g1_start_relaxed (cond, - (old_orig_size << 1) + (g1 == 1 ? 1 : - 1)); - -- /* Now reopen the group, thus enabling waiters to again block using the -- futex controlled by __g_signals. Release MO so that observers that see -- no signals (and thus can block) also see the write __g1_start and thus -- that this is now a new group (see __pthread_cond_wait_common for the -- matching acquire MO loads). */ -- atomic_store_release (cond->__data.__g_signals + g1, 0); -+ unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U; -+ -+ /* If any waiters still hold group references (and thus could be blocked), -+ then wake them all up now and prevent any running ones from blocking. -+ This is effectively a catch-all for any possible current or future -+ bugs that can allow the group size to reach 0 before all G1 waiters -+ have been awakened or at least given signals to consume, or any -+ other case that can leave blocked (or about to block) older waiters.. */ -+ if ((atomic_fetch_or_release (cond->__data.__g_refs + g1, 0) >> 1) > 0) -+ { -+ /* First advance signals to the end of the group (i.e. enough signals -+ for the entire G1 group) to ensure that waiters which have not -+ yet blocked in the futex will not block. -+ Note that in the vast majority of cases, this should never -+ actually be necessary, since __g_signals will have enough -+ signals for the remaining g_refs waiters. As an optimization, -+ we could check this first before proceeding, although that -+ could still leave the potential for futex lost wakeup bugs -+ if the signal count was non-zero but the futex wakeup -+ was somehow lost. */ -+ atomic_store_release (cond->__data.__g_signals + g1, lowseq); -+ -+ futex_wake (cond->__data.__g_signals + g1, INT_MAX, private); -+ } - - /* At this point, the old G1 is now a valid new G2 (but not in use yet). - No old waiter can neither grab a signal nor acquire a reference without -@@ -311,6 +272,10 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - g1 ^= 1; - *g1index ^= 1; - -+ /* Now advance the new G1 g_signals to the new lowseq, giving it -+ an effective signal count of 0 to start. */ -+ atomic_store_release (cond->__data.__g_signals + g1, lowseq); -+ - /* These values are just observed by signalers, and thus protected by the - lock. */ - unsigned int orig_size = wseq - (old_g1_start + old_orig_size); -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index 66786c7b90..3d290e39c8 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -238,9 +238,7 @@ __condvar_cleanup_waiting (void *arg) - signaled), and a reference count. - - The group reference count is used to maintain the number of waiters that -- are using the group's futex. Before a group can change its role, the -- reference count must show that no waiters are using the futex anymore; this -- prevents ABA issues on the futex word. -+ are using the group's futex. - - To represent which intervals in the waiter sequence the groups cover (and - thus also which group slot contains G1 or G2), we use a 64b counter to -@@ -300,11 +298,12 @@ __condvar_cleanup_waiting (void *arg) - last reference. - * Reference count used by waiters concurrently with signalers that have - acquired the condvar-internal lock. -- __g_signals: The number of signals that can still be consumed. -+ __g_signals: The number of signals that can still be consumed, relative to -+ the current g1_start. (i.e. bits 31 to 1 of __g_signals are bits -+ 31 to 1 of g1_start with the signal count added) - * Used as a futex word by waiters. Used concurrently by waiters and - signalers. -- * LSB is true iff this group has been completely signaled (i.e., it is -- closed). -+ * LSB is currently reserved and 0. - __g_size: Waiters remaining in this group (i.e., which have not been - signaled yet. - * Accessed by signalers and waiters that cancel waiting (both do so only -@@ -328,18 +327,6 @@ __condvar_cleanup_waiting (void *arg) - sufficient because if a waiter can see a sufficiently large value, it could - have also consume a signal in the waiters group. - -- Waiters try to grab a signal from __g_signals without holding a reference -- count, which can lead to stealing a signal from a more recent group after -- their own group was already closed. They cannot always detect whether they -- in fact did because they do not know when they stole, but they can -- conservatively add a signal back to the group they stole from; if they -- did so unnecessarily, all that happens is a spurious wake-up. To make this -- even less likely, __g1_start contains the index of the current g2 too, -- which allows waiters to check if there aliasing on the group slots; if -- there wasn't, they didn't steal from the current G1, which means that the -- G1 they stole from must have been already closed and they do not need to -- fix anything. -- - It is essential that the last field in pthread_cond_t is __g_signals[1]: - The previous condvar used a pointer-sized field in pthread_cond_t, so a - PTHREAD_COND_INITIALIZER from that condvar implementation might only -@@ -435,6 +422,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - { - while (1) - { -+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); -+ unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -+ - /* Spin-wait first. - Note that spinning first without checking whether a timeout - passed might lead to what looks like a spurious wake-up even -@@ -446,35 +436,45 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - having to compare against the current time seems to be the right - choice from a performance perspective for most use cases. */ - unsigned int spin = maxspin; -- while (signals == 0 && spin > 0) -+ while (spin > 0 && ((int)(signals - lowseq) < 2)) - { - /* Check that we are not spinning on a group that's already - closed. */ -- if (seq < (__condvar_load_g1_start_relaxed (cond) >> 1)) -- goto done; -+ if (seq < (g1_start >> 1)) -+ break; - - /* TODO Back off. */ - - /* Reload signals. See above for MO. */ - signals = atomic_load_acquire (cond->__data.__g_signals + g); -+ g1_start = __condvar_load_g1_start_relaxed (cond); -+ lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - spin--; - } - -- /* If our group will be closed as indicated by the flag on signals, -- don't bother grabbing a signal. */ -- if (signals & 1) -- goto done; -- -- /* If there is an available signal, don't block. */ -- if (signals != 0) -+ if (seq < (g1_start >> 1)) -+ { -+ /* If the group is closed already, -+ then this waiter originally had enough extra signals to -+ consume, up until the time its group was closed. */ -+ goto done; -+ } -+ -+ /* If there is an available signal, don't block. -+ If __g1_start has advanced at all, then we must be in G1 -+ by now, perhaps in the process of switching back to an older -+ G2, but in either case we're allowed to consume the available -+ signal and should not block anymore. */ -+ if ((int)(signals - lowseq) >= 2) - break; - - /* No signals available after spinning, so prepare to block. - We first acquire a group reference and use acquire MO for that so - that we synchronize with the dummy read-modify-write in - __condvar_quiesce_and_switch_g1 if we read from that. In turn, -- in this case this will make us see the closed flag on __g_signals -- that designates a concurrent attempt to reuse the group's slot. -+ in this case this will make us see the advancement of __g_signals -+ to the upcoming new g1_start that occurs with a concurrent -+ attempt to reuse the group's slot. - We use acquire MO for the __g_signals check to make the - __g1_start check work (see spinning above). - Note that the group reference acquisition will not mask the -@@ -482,15 +482,24 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - an atomic read-modify-write operation and thus extend the release - sequence. */ - atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2); -- if (((atomic_load_acquire (cond->__data.__g_signals + g) & 1) != 0) -- || (seq < (__condvar_load_g1_start_relaxed (cond) >> 1))) -+ signals = atomic_load_acquire (cond->__data.__g_signals + g); -+ g1_start = __condvar_load_g1_start_relaxed (cond); -+ lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -+ -+ if (seq < (g1_start >> 1)) - { -- /* Our group is closed. Wake up any signalers that might be -- waiting. */ -+ /* group is closed already, so don't block */ - __condvar_dec_grefs (cond, g, private); - goto done; - } - -+ if ((int)(signals - lowseq) >= 2) -+ { -+ /* a signal showed up or G1/G2 switched after we grabbed the refcount */ -+ __condvar_dec_grefs (cond, g, private); -+ break; -+ } -+ - // Now block. - struct _pthread_cleanup_buffer buffer; - struct _condvar_cleanup_buffer cbuffer; -@@ -501,7 +510,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer); - - err = __futex_abstimed_wait_cancelable64 ( -- cond->__data.__g_signals + g, 0, clockid, abstime, private); -+ cond->__data.__g_signals + g, signals, clockid, abstime, private); - - __pthread_cleanup_pop (&buffer, 0); - -@@ -524,6 +533,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - signals = atomic_load_acquire (cond->__data.__g_signals + g); - } - -+ if (seq < (__condvar_load_g1_start_relaxed (cond) >> 1)) -+ goto done; - } - /* Try to grab a signal. Use acquire MO so that we see an up-to-date value - of __g1_start below (see spinning above for a similar case). In -@@ -532,69 +543,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g, - &signals, signals - 2)); - -- /* We consumed a signal but we could have consumed from a more recent group -- that aliased with ours due to being in the same group slot. If this -- might be the case our group must be closed as visible through -- __g1_start. */ -- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); -- if (seq < (g1_start >> 1)) -- { -- /* We potentially stole a signal from a more recent group but we do not -- know which group we really consumed from. -- We do not care about groups older than current G1 because they are -- closed; we could have stolen from these, but then we just add a -- spurious wake-up for the current groups. -- We will never steal a signal from current G2 that was really intended -- for G2 because G2 never receives signals (until it becomes G1). We -- could have stolen a signal from G2 that was conservatively added by a -- previous waiter that also thought it stole a signal -- but given that -- that signal was added unnecessarily, it's not a problem if we steal -- it. -- Thus, the remaining case is that we could have stolen from the current -- G1, where "current" means the __g1_start value we observed. However, -- if the current G1 does not have the same slot index as we do, we did -- not steal from it and do not need to undo that. This is the reason -- for putting a bit with G2's index into__g1_start as well. */ -- if (((g1_start & 1) ^ 1) == g) -- { -- /* We have to conservatively undo our potential mistake of stealing -- a signal. We can stop trying to do that when the current G1 -- changes because other spinning waiters will notice this too and -- __condvar_quiesce_and_switch_g1 has checked that there are no -- futex waiters anymore before switching G1. -- Relaxed MO is fine for the __g1_start load because we need to -- merely be able to observe this fact and not have to observe -- something else as well. -- ??? Would it help to spin for a little while to see whether the -- current G1 gets closed? This might be worthwhile if the group is -- small or close to being closed. */ -- unsigned int s = atomic_load_relaxed (cond->__data.__g_signals + g); -- while (__condvar_load_g1_start_relaxed (cond) == g1_start) -- { -- /* Try to add a signal. We don't need to acquire the lock -- because at worst we can cause a spurious wake-up. If the -- group is in the process of being closed (LSB is true), this -- has an effect similar to us adding a signal. */ -- if (((s & 1) != 0) -- || atomic_compare_exchange_weak_relaxed -- (cond->__data.__g_signals + g, &s, s + 2)) -- { -- /* If we added a signal, we also need to add a wake-up on -- the futex. We also need to do that if we skipped adding -- a signal because the group is being closed because -- while __condvar_quiesce_and_switch_g1 could have closed -- the group, it might still be waiting for futex waiters to -- leave (and one of those waiters might be the one we stole -- the signal from, which cause it to block using the -- futex). */ -- futex_wake (cond->__data.__g_signals + g, 1, private); -- break; -- } -- /* TODO Back off. */ -- } -- } -- } -- - done: - - /* Confirm that we have been woken. We do that before acquiring the mutex - -commit 88d999d840e77c9917f08870094a23ce42294848 -Author: Malte Skarupke -Date: Wed Dec 4 07:55:22 2024 -0500 - - nptl: Update comments and indentation for new condvar implementation - - Some comments were wrong after the most recent commit. This fixes that. - - Also fixing indentation where it was using spaces instead of tabs. - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit 0cc973160c23bb67f895bc887dd6942d29f8fee3) - -diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c -index 4855b8899f..3475d15123 100644 ---- a/nptl/pthread_cond_common.c -+++ b/nptl/pthread_cond_common.c -@@ -221,8 +221,9 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - * New waiters arriving concurrently with the group switching will all go - into G2 until we atomically make the switch. Waiters existing in G2 - are not affected. -- * Waiters in G1 will be closed out immediately by the advancing of -- __g_signals to the next "lowseq" (low 31 bits of the new g1_start), -+ * Waiters in G1 have already received a signal and been woken. If they -+ haven't woken yet, they will be closed out immediately by the advancing -+ of __g_signals to the next "lowseq" (low 31 bits of the new g1_start), - which will prevent waiters from blocking using a futex on - __g_signals since it provides enough signals for all possible - remaining waiters. As a result, they can each consume a signal -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index 3d290e39c8..ad2cee7d59 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -249,7 +249,7 @@ __condvar_cleanup_waiting (void *arg) - figure out whether they are in a group that has already been completely - signaled (i.e., if the current G1 starts at a later position that the - waiter's position). Waiters cannot determine whether they are currently -- in G2 or G1 -- but they do not have too because all they are interested in -+ in G2 or G1 -- but they do not have to because all they are interested in - is whether there are available signals, and they always start in G2 (whose - group slot they know because of the bit in the waiter sequence. Signalers - will simply fill the right group until it is completely signaled and can -@@ -412,7 +412,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - } - - /* Now wait until a signal is available in our group or it is closed. -- Acquire MO so that if we observe a value of zero written after group -+ Acquire MO so that if we observe (signals == lowseq) after group - switching in __condvar_quiesce_and_switch_g1, we synchronize with that - store and will see the prior update of __g1_start done while switching - groups too. */ -@@ -422,8 +422,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - { - while (1) - { -- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); -- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); -+ unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - - /* Spin-wait first. - Note that spinning first without checking whether a timeout -@@ -447,21 +447,21 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - - /* Reload signals. See above for MO. */ - signals = atomic_load_acquire (cond->__data.__g_signals + g); -- g1_start = __condvar_load_g1_start_relaxed (cond); -- lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -+ g1_start = __condvar_load_g1_start_relaxed (cond); -+ lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - spin--; - } - -- if (seq < (g1_start >> 1)) -+ if (seq < (g1_start >> 1)) - { -- /* If the group is closed already, -+ /* If the group is closed already, - then this waiter originally had enough extra signals to - consume, up until the time its group was closed. */ - goto done; -- } -+ } - - /* If there is an available signal, don't block. -- If __g1_start has advanced at all, then we must be in G1 -+ If __g1_start has advanced at all, then we must be in G1 - by now, perhaps in the process of switching back to an older - G2, but in either case we're allowed to consume the available - signal and should not block anymore. */ -@@ -483,22 +483,23 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - sequence. */ - atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2); - signals = atomic_load_acquire (cond->__data.__g_signals + g); -- g1_start = __condvar_load_g1_start_relaxed (cond); -- lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -+ g1_start = __condvar_load_g1_start_relaxed (cond); -+ lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - -- if (seq < (g1_start >> 1)) -+ if (seq < (g1_start >> 1)) - { -- /* group is closed already, so don't block */ -+ /* group is closed already, so don't block */ - __condvar_dec_grefs (cond, g, private); - goto done; - } - - if ((int)(signals - lowseq) >= 2) - { -- /* a signal showed up or G1/G2 switched after we grabbed the refcount */ -+ /* a signal showed up or G1/G2 switched after we grabbed the -+ refcount */ - __condvar_dec_grefs (cond, g, private); - break; -- } -+ } - - // Now block. - struct _pthread_cleanup_buffer buffer; -@@ -536,10 +537,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - if (seq < (__condvar_load_g1_start_relaxed (cond) >> 1)) - goto done; - } -- /* Try to grab a signal. Use acquire MO so that we see an up-to-date value -- of __g1_start below (see spinning above for a similar case). In -- particular, if we steal from a more recent group, we will also see a -- more recent __g1_start below. */ -+ /* Try to grab a signal. See above for MO. (if we do another loop -+ iteration we need to see the correct value of g1_start) */ - while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g, - &signals, signals - 2)); - - -commit 136a29f9d0a3924828d5a16be82d054637517c95 -Author: Malte Skarupke -Date: Wed Dec 4 07:55:50 2024 -0500 - - nptl: Remove unnecessary catch-all-wake in condvar group switch - - This wake is unnecessary. We only switch groups after every sleeper in a group - has been woken. Sure, they may take a while to actually wake up and may still - hold a reference, but waking them a second time doesn't speed that up. Instead - this just makes the code more complicated and may hide problems. - - In particular this safety wake wouldn't even have helped with the bug that was - fixed by Barrus' patch: The bug there was that pthread_cond_signal would not - switch g1 when it should, so we wouldn't even have entered this code path. - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit b42cc6af11062c260c7dfa91f1c89891366fed3e) - -diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c -index 3475d15123..30b8eee149 100644 ---- a/nptl/pthread_cond_common.c -+++ b/nptl/pthread_cond_common.c -@@ -221,13 +221,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - * New waiters arriving concurrently with the group switching will all go - into G2 until we atomically make the switch. Waiters existing in G2 - are not affected. -- * Waiters in G1 have already received a signal and been woken. If they -- haven't woken yet, they will be closed out immediately by the advancing -- of __g_signals to the next "lowseq" (low 31 bits of the new g1_start), -- which will prevent waiters from blocking using a futex on -- __g_signals since it provides enough signals for all possible -- remaining waiters. As a result, they can each consume a signal -- and they will eventually remove their group reference. */ -+ * Waiters in G1 have already received a signal and been woken. */ - - /* Update __g1_start, which finishes closing this group. The value we add - will never be negative because old_orig_size can only be zero when we -@@ -240,29 +234,6 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - - unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U; - -- /* If any waiters still hold group references (and thus could be blocked), -- then wake them all up now and prevent any running ones from blocking. -- This is effectively a catch-all for any possible current or future -- bugs that can allow the group size to reach 0 before all G1 waiters -- have been awakened or at least given signals to consume, or any -- other case that can leave blocked (or about to block) older waiters.. */ -- if ((atomic_fetch_or_release (cond->__data.__g_refs + g1, 0) >> 1) > 0) -- { -- /* First advance signals to the end of the group (i.e. enough signals -- for the entire G1 group) to ensure that waiters which have not -- yet blocked in the futex will not block. -- Note that in the vast majority of cases, this should never -- actually be necessary, since __g_signals will have enough -- signals for the remaining g_refs waiters. As an optimization, -- we could check this first before proceeding, although that -- could still leave the potential for futex lost wakeup bugs -- if the signal count was non-zero but the futex wakeup -- was somehow lost. */ -- atomic_store_release (cond->__data.__g_signals + g1, lowseq); -- -- futex_wake (cond->__data.__g_signals + g1, INT_MAX, private); -- } -- - /* At this point, the old G1 is now a valid new G2 (but not in use yet). - No old waiter can neither grab a signal nor acquire a reference without - noticing that __g1_start is larger. - -commit 2a259b6d77dc5bdab5c8f4ee0e69572d5699d4bf -Author: Malte Skarupke -Date: Wed Dec 4 07:56:13 2024 -0500 - - nptl: Remove unnecessary quadruple check in pthread_cond_wait - - pthread_cond_wait was checking whether it was in a closed group no less than - four times. Checking once is enough. Here are the four checks: - - 1. While spin-waiting. This was dead code: maxspin is set to 0 and has been - for years. - 2. Before deciding to go to sleep, and before incrementing grefs: I kept this - 3. After incrementing grefs. There is no reason to think that the group would - close while we do an atomic increment. Obviously it could close at any - point, but that doesn't mean we have to recheck after every step. This - check was equally good as check 2, except it has to do more work. - 4. When we find ourselves in a group that has a signal. We only get here after - we check that we're not in a closed group. There is no need to check again. - The check would only have helped in cases where the compare_exchange in the - next line would also have failed. Relying on the compare_exchange is fine. - - Removing the duplicate checks clarifies the code. - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit 4f7b051f8ee3feff1b53b27a906f245afaa9cee1) - -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index ad2cee7d59..cfdd13bb87 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -366,7 +366,6 @@ static __always_inline int - __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - clockid_t clockid, const struct __timespec64 *abstime) - { -- const int maxspin = 0; - int err; - int result = 0; - -@@ -425,33 +424,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); - unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - -- /* Spin-wait first. -- Note that spinning first without checking whether a timeout -- passed might lead to what looks like a spurious wake-up even -- though we should return ETIMEDOUT (e.g., if the caller provides -- an absolute timeout that is clearly in the past). However, -- (1) spurious wake-ups are allowed, (2) it seems unlikely that a -- user will (ab)use pthread_cond_wait as a check for whether a -- point in time is in the past, and (3) spinning first without -- having to compare against the current time seems to be the right -- choice from a performance perspective for most use cases. */ -- unsigned int spin = maxspin; -- while (spin > 0 && ((int)(signals - lowseq) < 2)) -- { -- /* Check that we are not spinning on a group that's already -- closed. */ -- if (seq < (g1_start >> 1)) -- break; -- -- /* TODO Back off. */ -- -- /* Reload signals. See above for MO. */ -- signals = atomic_load_acquire (cond->__data.__g_signals + g); -- g1_start = __condvar_load_g1_start_relaxed (cond); -- lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -- spin--; -- } -- - if (seq < (g1_start >> 1)) - { - /* If the group is closed already, -@@ -482,24 +454,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - an atomic read-modify-write operation and thus extend the release - sequence. */ - atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2); -- signals = atomic_load_acquire (cond->__data.__g_signals + g); -- g1_start = __condvar_load_g1_start_relaxed (cond); -- lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -- -- if (seq < (g1_start >> 1)) -- { -- /* group is closed already, so don't block */ -- __condvar_dec_grefs (cond, g, private); -- goto done; -- } -- -- if ((int)(signals - lowseq) >= 2) -- { -- /* a signal showed up or G1/G2 switched after we grabbed the -- refcount */ -- __condvar_dec_grefs (cond, g, private); -- break; -- } - - // Now block. - struct _pthread_cleanup_buffer buffer; -@@ -533,9 +487,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - /* Reload signals. See above for MO. */ - signals = atomic_load_acquire (cond->__data.__g_signals + g); - } -- -- if (seq < (__condvar_load_g1_start_relaxed (cond) >> 1)) -- goto done; - } - /* Try to grab a signal. See above for MO. (if we do another loop - iteration we need to see the correct value of g1_start) */ - -commit a2465f4293ecc37ac4650fbd02e517bc6fd801c6 -Author: Malte Skarupke -Date: Wed Dec 4 07:56:38 2024 -0500 - - nptl: Remove g_refs from condition variables - - This variable used to be needed to wait in group switching until all sleepers - have confirmed that they have woken. This is no longer needed. Nothing waits - on this variable so there is no need to track how many threads are currently - asleep in each group. - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit c36fc50781995e6758cae2b6927839d0157f213c) - -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index cfdd13bb87..411fc0380b 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -143,23 +143,6 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g, - } - } - --/* Wake up any signalers that might be waiting. */ --static void --__condvar_dec_grefs (pthread_cond_t *cond, unsigned int g, int private) --{ -- /* Release MO to synchronize-with the acquire load in -- __condvar_quiesce_and_switch_g1. */ -- if (atomic_fetch_add_release (cond->__data.__g_refs + g, -2) == 3) -- { -- /* Clear the wake-up request flag before waking up. We do not need more -- than relaxed MO and it doesn't matter if we apply this for an aliased -- group because we wake all futex waiters right after clearing the -- flag. */ -- atomic_fetch_and_relaxed (cond->__data.__g_refs + g, ~(unsigned int) 1); -- futex_wake (cond->__data.__g_refs + g, INT_MAX, private); -- } --} -- - /* Clean-up for cancellation of waiters waiting for normal signals. We cancel - our registration as a waiter, confirm we have woken up, and re-acquire the - mutex. */ -@@ -171,8 +154,6 @@ __condvar_cleanup_waiting (void *arg) - pthread_cond_t *cond = cbuffer->cond; - unsigned g = cbuffer->wseq & 1; - -- __condvar_dec_grefs (cond, g, cbuffer->private); -- - __condvar_cancel_waiting (cond, cbuffer->wseq >> 1, g, cbuffer->private); - /* FIXME With the current cancellation implementation, it is possible that - a thread is cancelled after it has returned from a syscall. This could -@@ -327,15 +308,6 @@ __condvar_cleanup_waiting (void *arg) - sufficient because if a waiter can see a sufficiently large value, it could - have also consume a signal in the waiters group. - -- It is essential that the last field in pthread_cond_t is __g_signals[1]: -- The previous condvar used a pointer-sized field in pthread_cond_t, so a -- PTHREAD_COND_INITIALIZER from that condvar implementation might only -- initialize 4 bytes to zero instead of the 8 bytes we need (i.e., 44 bytes -- in total instead of the 48 we need). __g_signals[1] is not accessed before -- the first group switch (G2 starts at index 0), which will set its value to -- zero after a harmless fetch-or whose return value is ignored. This -- effectively completes initialization. -- - - Limitations: - * This condvar isn't designed to allow for more than -@@ -440,21 +412,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - if ((int)(signals - lowseq) >= 2) - break; - -- /* No signals available after spinning, so prepare to block. -- We first acquire a group reference and use acquire MO for that so -- that we synchronize with the dummy read-modify-write in -- __condvar_quiesce_and_switch_g1 if we read from that. In turn, -- in this case this will make us see the advancement of __g_signals -- to the upcoming new g1_start that occurs with a concurrent -- attempt to reuse the group's slot. -- We use acquire MO for the __g_signals check to make the -- __g1_start check work (see spinning above). -- Note that the group reference acquisition will not mask the -- release MO when decrementing the reference count because we use -- an atomic read-modify-write operation and thus extend the release -- sequence. */ -- atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2); -- - // Now block. - struct _pthread_cleanup_buffer buffer; - struct _condvar_cleanup_buffer cbuffer; -@@ -471,18 +428,11 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - - if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW)) - { -- __condvar_dec_grefs (cond, g, private); -- /* If we timed out, we effectively cancel waiting. Note that -- we have decremented __g_refs before cancellation, so that a -- deadlock between waiting for quiescence of our group in -- __condvar_quiesce_and_switch_g1 and us trying to acquire -- the lock during cancellation is not possible. */ -+ /* If we timed out, we effectively cancel waiting. */ - __condvar_cancel_waiting (cond, seq, g, private); - result = err; - goto done; - } -- else -- __condvar_dec_grefs (cond, g, private); - - /* Reload signals. See above for MO. */ - signals = atomic_load_acquire (cond->__data.__g_signals + g); -diff --git a/nptl/tst-cond22.c b/nptl/tst-cond22.c -index 1336e9c79d..bdcb45c536 100644 ---- a/nptl/tst-cond22.c -+++ b/nptl/tst-cond22.c -@@ -106,13 +106,13 @@ do_test (void) - status = 1; - } - -- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n", -+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n", - c.__data.__wseq.__value32.__high, - c.__data.__wseq.__value32.__low, - c.__data.__g1_start.__value32.__high, - c.__data.__g1_start.__value32.__low, -- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0], -- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1], -+ c.__data.__g_signals[0], c.__data.__g_size[0], -+ c.__data.__g_signals[1], c.__data.__g_size[1], - c.__data.__g1_orig_size, c.__data.__wrefs); - - if (pthread_create (&th, NULL, tf, (void *) 1l) != 0) -@@ -152,13 +152,13 @@ do_test (void) - status = 1; - } - -- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n", -+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n", - c.__data.__wseq.__value32.__high, - c.__data.__wseq.__value32.__low, - c.__data.__g1_start.__value32.__high, - c.__data.__g1_start.__value32.__low, -- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0], -- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1], -+ c.__data.__g_signals[0], c.__data.__g_size[0], -+ c.__data.__g_signals[1], c.__data.__g_size[1], - c.__data.__g1_orig_size, c.__data.__wrefs); - - return status; -diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h -index df54eef6f7..a3d482f80f 100644 ---- a/sysdeps/nptl/bits/thread-shared-types.h -+++ b/sysdeps/nptl/bits/thread-shared-types.h -@@ -95,8 +95,7 @@ struct __pthread_cond_s - { - __atomic_wide_counter __wseq; - __atomic_wide_counter __g1_start; -- unsigned int __g_refs[2] __LOCK_ALIGNMENT; -- unsigned int __g_size[2]; -+ unsigned int __g_size[2] __LOCK_ALIGNMENT; - unsigned int __g1_orig_size; - unsigned int __wrefs; - unsigned int __g_signals[2]; -diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h -index 3d4f4a756c..9af75d6eae 100644 ---- a/sysdeps/nptl/pthread.h -+++ b/sysdeps/nptl/pthread.h -@@ -152,7 +152,7 @@ enum - - - /* Conditional variable handling. */ --#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } } -+#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0} } } - - - /* Cleanup buffers */ - -commit fa110993a6390ae5c97dff613ef02b59ec78c5da -Author: Malte Skarupke -Date: Wed Dec 4 08:03:44 2024 -0500 - - nptl: Use a single loop in pthread_cond_wait instaed of a nested loop - - The loop was a little more complicated than necessary. There was only one - break statement out of the inner loop, and the outer loop was nearly empty. - So just remove the outer loop, moving its code to the one break statement in - the inner loop. This allows us to replace all gotos with break statements. - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit 929a4764ac90382616b6a21f099192b2475da674) - -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index 411fc0380b..683cb2b133 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -382,17 +382,15 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - return err; - } - -- /* Now wait until a signal is available in our group or it is closed. -- Acquire MO so that if we observe (signals == lowseq) after group -- switching in __condvar_quiesce_and_switch_g1, we synchronize with that -- store and will see the prior update of __g1_start done while switching -- groups too. */ -- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); -- -- do -- { -+ - while (1) - { -+ /* Now wait until a signal is available in our group or it is closed. -+ Acquire MO so that if we observe (signals == lowseq) after group -+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that -+ store and will see the prior update of __g1_start done while switching -+ groups too. */ -+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); - uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); - unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - -@@ -401,7 +399,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - /* If the group is closed already, - then this waiter originally had enough extra signals to - consume, up until the time its group was closed. */ -- goto done; -+ break; - } - - /* If there is an available signal, don't block. -@@ -410,7 +408,16 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - G2, but in either case we're allowed to consume the available - signal and should not block anymore. */ - if ((int)(signals - lowseq) >= 2) -- break; -+ { -+ /* Try to grab a signal. See above for MO. (if we do another loop -+ iteration we need to see the correct value of g1_start) */ -+ if (atomic_compare_exchange_weak_acquire ( -+ cond->__data.__g_signals + g, -+ &signals, signals - 2)) -+ break; -+ else -+ continue; -+ } - - // Now block. - struct _pthread_cleanup_buffer buffer; -@@ -431,19 +438,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - /* If we timed out, we effectively cancel waiting. */ - __condvar_cancel_waiting (cond, seq, g, private); - result = err; -- goto done; -+ break; - } -- -- /* Reload signals. See above for MO. */ -- signals = atomic_load_acquire (cond->__data.__g_signals + g); - } -- } -- /* Try to grab a signal. See above for MO. (if we do another loop -- iteration we need to see the correct value of g1_start) */ -- while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g, -- &signals, signals - 2)); -- -- done: - - /* Confirm that we have been woken. We do that before acquiring the mutex - to allow for execution of pthread_cond_destroy while having acquired the - -commit afbf0d46850dcd1b626d892ad8fde2162067ddc7 -Author: Malte Skarupke -Date: Wed Dec 4 08:04:10 2024 -0500 - - nptl: Fix indentation - - In my previous change I turned a nested loop into a simple loop. I'm doing - the resulting indentation changes in a separate commit to make the diff on - the previous commit easier to review. - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit ee6c14ed59d480720721aaacc5fb03213dc153da) - -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index 683cb2b133..7fc9dadf15 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -383,65 +383,65 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - } - - -- while (1) -- { -- /* Now wait until a signal is available in our group or it is closed. -- Acquire MO so that if we observe (signals == lowseq) after group -- switching in __condvar_quiesce_and_switch_g1, we synchronize with that -- store and will see the prior update of __g1_start done while switching -- groups too. */ -- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); -- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); -- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -- -- if (seq < (g1_start >> 1)) -- { -- /* If the group is closed already, -- then this waiter originally had enough extra signals to -- consume, up until the time its group was closed. */ -- break; -- } -- -- /* If there is an available signal, don't block. -- If __g1_start has advanced at all, then we must be in G1 -- by now, perhaps in the process of switching back to an older -- G2, but in either case we're allowed to consume the available -- signal and should not block anymore. */ -- if ((int)(signals - lowseq) >= 2) -- { -- /* Try to grab a signal. See above for MO. (if we do another loop -- iteration we need to see the correct value of g1_start) */ -- if (atomic_compare_exchange_weak_acquire ( -- cond->__data.__g_signals + g, -+ while (1) -+ { -+ /* Now wait until a signal is available in our group or it is closed. -+ Acquire MO so that if we observe (signals == lowseq) after group -+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that -+ store and will see the prior update of __g1_start done while switching -+ groups too. */ -+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); -+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); -+ unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; -+ -+ if (seq < (g1_start >> 1)) -+ { -+ /* If the group is closed already, -+ then this waiter originally had enough extra signals to -+ consume, up until the time its group was closed. */ -+ break; -+ } -+ -+ /* If there is an available signal, don't block. -+ If __g1_start has advanced at all, then we must be in G1 -+ by now, perhaps in the process of switching back to an older -+ G2, but in either case we're allowed to consume the available -+ signal and should not block anymore. */ -+ if ((int)(signals - lowseq) >= 2) -+ { -+ /* Try to grab a signal. See above for MO. (if we do another loop -+ iteration we need to see the correct value of g1_start) */ -+ if (atomic_compare_exchange_weak_acquire ( -+ cond->__data.__g_signals + g, - &signals, signals - 2)) -- break; -- else -- continue; -- } -- -- // Now block. -- struct _pthread_cleanup_buffer buffer; -- struct _condvar_cleanup_buffer cbuffer; -- cbuffer.wseq = wseq; -- cbuffer.cond = cond; -- cbuffer.mutex = mutex; -- cbuffer.private = private; -- __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer); -- -- err = __futex_abstimed_wait_cancelable64 ( -- cond->__data.__g_signals + g, signals, clockid, abstime, private); -- -- __pthread_cleanup_pop (&buffer, 0); -- -- if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW)) -- { -- /* If we timed out, we effectively cancel waiting. */ -- __condvar_cancel_waiting (cond, seq, g, private); -- result = err; - break; -- } -+ else -+ continue; - } - -+ // Now block. -+ struct _pthread_cleanup_buffer buffer; -+ struct _condvar_cleanup_buffer cbuffer; -+ cbuffer.wseq = wseq; -+ cbuffer.cond = cond; -+ cbuffer.mutex = mutex; -+ cbuffer.private = private; -+ __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer); -+ -+ err = __futex_abstimed_wait_cancelable64 ( -+ cond->__data.__g_signals + g, signals, clockid, abstime, private); -+ -+ __pthread_cleanup_pop (&buffer, 0); -+ -+ if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW)) -+ { -+ /* If we timed out, we effectively cancel waiting. */ -+ __condvar_cancel_waiting (cond, seq, g, private); -+ result = err; -+ break; -+ } -+ } -+ - /* Confirm that we have been woken. We do that before acquiring the mutex - to allow for execution of pthread_cond_destroy while having acquired the - mutex. */ - -commit 2ad69497346cc20ef4d568108f1de49b2f451c55 -Author: Malte Skarupke -Date: Wed Dec 4 08:04:54 2024 -0500 - - nptl: rename __condvar_quiesce_and_switch_g1 - - This function no longer waits for threads to leave g1, so rename it to - __condvar_switch_g1 - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit 4b79e27a5073c02f6bff9aa8f4791230a0ab1867) - -diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c -index aada91639a..38bba17bfc 100644 ---- a/nptl/pthread_cond_broadcast.c -+++ b/nptl/pthread_cond_broadcast.c -@@ -60,7 +60,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond) - cond->__data.__g_size[g1] << 1); - cond->__data.__g_size[g1] = 0; - -- /* We need to wake G1 waiters before we quiesce G1 below. */ -+ /* We need to wake G1 waiters before we switch G1 below. */ - /* TODO Only set it if there are indeed futex waiters. We could - also try to move this out of the critical section in cases when - G2 is empty (and we don't need to quiesce). */ -@@ -69,7 +69,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond) - - /* G1 is complete. Step (2) is next unless there are no waiters in G2, in - which case we can stop. */ -- if (__condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private)) -+ if (__condvar_switch_g1 (cond, wseq, &g1, private)) - { - /* Step (3): Send signals to all waiters in the old G2 / new G1. */ - atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, -diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c -index 30b8eee149..5044273cc2 100644 ---- a/nptl/pthread_cond_common.c -+++ b/nptl/pthread_cond_common.c -@@ -189,16 +189,15 @@ __condvar_get_private (int flags) - return FUTEX_SHARED; - } - --/* This closes G1 (whose index is in G1INDEX), waits for all futex waiters to -- leave G1, converts G1 into a fresh G2, and then switches group roles so that -- the former G2 becomes the new G1 ending at the current __wseq value when we -- eventually make the switch (WSEQ is just an observation of __wseq by the -- signaler). -+/* This closes G1 (whose index is in G1INDEX), converts G1 into a fresh G2, -+ and then switches group roles so that the former G2 becomes the new G1 -+ ending at the current __wseq value when we eventually make the switch -+ (WSEQ is just an observation of __wseq by the signaler). - If G2 is empty, it will not switch groups because then it would create an - empty G1 which would require switching groups again on the next signal. - Returns false iff groups were not switched because G2 was empty. */ - static bool __attribute__ ((unused)) --__condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, -+__condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - unsigned int *g1index, int private) - { - unsigned int g1 = *g1index; -@@ -214,8 +213,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - + cond->__data.__g_size[g1 ^ 1]) == 0) - return false; - -- /* Now try to close and quiesce G1. We have to consider the following kinds -- of waiters: -+ /* We have to consider the following kinds of waiters: - * Waiters from less recent groups than G1 are not affected because - nothing will change for them apart from __g1_start getting larger. - * New waiters arriving concurrently with the group switching will all go -@@ -223,12 +221,12 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - are not affected. - * Waiters in G1 have already received a signal and been woken. */ - -- /* Update __g1_start, which finishes closing this group. The value we add -- will never be negative because old_orig_size can only be zero when we -- switch groups the first time after a condvar was initialized, in which -- case G1 will be at index 1 and we will add a value of 1. -- Relaxed MO is fine because the change comes with no additional -- constraints that others would have to observe. */ -+ /* Update __g1_start, which closes this group. The value we add will never -+ be negative because old_orig_size can only be zero when we switch groups -+ the first time after a condvar was initialized, in which case G1 will be -+ at index 1 and we will add a value of 1. Relaxed MO is fine because the -+ change comes with no additional constraints that others would have to -+ observe. */ - __condvar_add_g1_start_relaxed (cond, - (old_orig_size << 1) + (g1 == 1 ? 1 : - 1)); - -diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c -index 43d6286ecd..f095497142 100644 ---- a/nptl/pthread_cond_signal.c -+++ b/nptl/pthread_cond_signal.c -@@ -69,18 +69,17 @@ ___pthread_cond_signal (pthread_cond_t *cond) - bool do_futex_wake = false; - - /* If G1 is still receiving signals, we put the signal there. If not, we -- check if G2 has waiters, and if so, quiesce and switch G1 to the former -- G2; if this results in a new G1 with waiters (G2 might have cancellations -- already, see __condvar_quiesce_and_switch_g1), we put the signal in the -- new G1. */ -+ check if G2 has waiters, and if so, switch G1 to the former G2; if this -+ results in a new G1 with waiters (G2 might have cancellations already, -+ see __condvar_switch_g1), we put the signal in the new G1. */ - if ((cond->__data.__g_size[g1] != 0) -- || __condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private)) -+ || __condvar_switch_g1 (cond, wseq, &g1, private)) - { - /* Add a signal. Relaxed MO is fine because signaling does not need to -- establish a happens-before relation (see above). We do not mask the -- release-MO store when initializing a group in -- __condvar_quiesce_and_switch_g1 because we use an atomic -- read-modify-write and thus extend that store's release sequence. */ -+ establish a happens-before relation (see above). We do not mask the -+ release-MO store when initializing a group in __condvar_switch_g1 -+ because we use an atomic read-modify-write and thus extend that -+ store's release sequence. */ - atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2); - cond->__data.__g_size[g1]--; - /* TODO Only set it if there are indeed futex waiters. */ -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index 7fc9dadf15..80bb728211 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -354,8 +354,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - because we do not need to establish any happens-before relation with - signalers (see __pthread_cond_signal); modification order alone - establishes a total order of waiters/signals. We do need acquire MO -- to synchronize with group reinitialization in -- __condvar_quiesce_and_switch_g1. */ -+ to synchronize with group reinitialization in __condvar_switch_g1. */ - uint64_t wseq = __condvar_fetch_add_wseq_acquire (cond, 2); - /* Find our group's index. We always go into what was G2 when we acquired - our position. */ -@@ -387,9 +386,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - { - /* Now wait until a signal is available in our group or it is closed. - Acquire MO so that if we observe (signals == lowseq) after group -- switching in __condvar_quiesce_and_switch_g1, we synchronize with that -- store and will see the prior update of __g1_start done while switching -- groups too. */ -+ switching in __condvar_switch_g1, we synchronize with that store and -+ will see the prior update of __g1_start done while switching groups -+ too. */ - unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); - uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); - unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - -commit 7f71824b8039b8afc150dd5c881b61faf10675ef -Author: Malte Skarupke -Date: Wed Dec 4 08:05:40 2024 -0500 - - nptl: Use all of g1_start and g_signals - - The LSB of g_signals was unused. The LSB of g1_start was used to indicate - which group is G2. This was used to always go to sleep in pthread_cond_wait - if a waiter is in G2. A comment earlier in the file says that this is not - correct to do: - - "Waiters cannot determine whether they are currently in G2 or G1 -- but they - do not have to because all they are interested in is whether there are - available signals" - - I either would have had to update the comment, or get rid of the check. I - chose to get rid of the check. In fact I don't quite know why it was there. - There will never be available signals for group G2, so we didn't need the - special case. Even if there were, this would just be a spurious wake. This - might have caught some cases where the count has wrapped around, but it - wouldn't reliably do that, (and even if it did, why would you want to force a - sleep in that case?) and we don't support that many concurrent waiters - anyway. Getting rid of it allows us to use one more bit, making us more - robust to wraparound. - - Signed-off-by: Malte Skarupke - Reviewed-by: Carlos O'Donell - (cherry picked from commit 91bb902f58264a2fd50fbce8f39a9a290dd23706) - -diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c -index 38bba17bfc..51afa62adf 100644 ---- a/nptl/pthread_cond_broadcast.c -+++ b/nptl/pthread_cond_broadcast.c -@@ -57,7 +57,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond) - { - /* Add as many signals as the remaining size of the group. */ - atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, -- cond->__data.__g_size[g1] << 1); -+ cond->__data.__g_size[g1]); - cond->__data.__g_size[g1] = 0; - - /* We need to wake G1 waiters before we switch G1 below. */ -@@ -73,7 +73,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond) - { - /* Step (3): Send signals to all waiters in the old G2 / new G1. */ - atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, -- cond->__data.__g_size[g1] << 1); -+ cond->__data.__g_size[g1]); - cond->__data.__g_size[g1] = 0; - /* TODO Only set it if there are indeed futex waiters. */ - do_futex_wake = true; -diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c -index 5044273cc2..389402913c 100644 ---- a/nptl/pthread_cond_common.c -+++ b/nptl/pthread_cond_common.c -@@ -208,9 +208,9 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - behavior. - Note that this works correctly for a zero-initialized condvar too. */ - unsigned int old_orig_size = __condvar_get_orig_size (cond); -- uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond) >> 1; -- if (((unsigned) (wseq - old_g1_start - old_orig_size) -- + cond->__data.__g_size[g1 ^ 1]) == 0) -+ uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond); -+ uint64_t new_g1_start = old_g1_start + old_orig_size; -+ if (((unsigned) (wseq - new_g1_start) + cond->__data.__g_size[g1 ^ 1]) == 0) - return false; - - /* We have to consider the following kinds of waiters: -@@ -221,16 +221,10 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - are not affected. - * Waiters in G1 have already received a signal and been woken. */ - -- /* Update __g1_start, which closes this group. The value we add will never -- be negative because old_orig_size can only be zero when we switch groups -- the first time after a condvar was initialized, in which case G1 will be -- at index 1 and we will add a value of 1. Relaxed MO is fine because the -- change comes with no additional constraints that others would have to -- observe. */ -- __condvar_add_g1_start_relaxed (cond, -- (old_orig_size << 1) + (g1 == 1 ? 1 : - 1)); -- -- unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U; -+ /* Update __g1_start, which closes this group. Relaxed MO is fine because -+ the change comes with no additional constraints that others would have -+ to observe. */ -+ __condvar_add_g1_start_relaxed (cond, old_orig_size); - - /* At this point, the old G1 is now a valid new G2 (but not in use yet). - No old waiter can neither grab a signal nor acquire a reference without -@@ -242,13 +236,13 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq, - g1 ^= 1; - *g1index ^= 1; - -- /* Now advance the new G1 g_signals to the new lowseq, giving it -+ /* Now advance the new G1 g_signals to the new g1_start, giving it - an effective signal count of 0 to start. */ -- atomic_store_release (cond->__data.__g_signals + g1, lowseq); -+ atomic_store_release (cond->__data.__g_signals + g1, (unsigned)new_g1_start); - - /* These values are just observed by signalers, and thus protected by the - lock. */ -- unsigned int orig_size = wseq - (old_g1_start + old_orig_size); -+ unsigned int orig_size = wseq - new_g1_start; - __condvar_set_orig_size (cond, orig_size); - /* Use and addition to not loose track of cancellations in what was - previously G2. */ -diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c -index f095497142..fa3a5c3d8f 100644 ---- a/nptl/pthread_cond_signal.c -+++ b/nptl/pthread_cond_signal.c -@@ -80,7 +80,7 @@ ___pthread_cond_signal (pthread_cond_t *cond) - release-MO store when initializing a group in __condvar_switch_g1 - because we use an atomic read-modify-write and thus extend that - store's release sequence. */ -- atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2); -+ atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 1); - cond->__data.__g_size[g1]--; - /* TODO Only set it if there are indeed futex waiters. */ - do_futex_wake = true; -diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c -index 80bb728211..0f1dfcb595 100644 ---- a/nptl/pthread_cond_wait.c -+++ b/nptl/pthread_cond_wait.c -@@ -84,7 +84,7 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g, - not hold a reference on the group. */ - __condvar_acquire_lock (cond, private); - -- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond) >> 1; -+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); - if (g1_start > seq) - { - /* Our group is closed, so someone provided enough signals for it. -@@ -259,7 +259,6 @@ __condvar_cleanup_waiting (void *arg) - * Waiters fetch-add while having acquire the mutex associated with the - condvar. Signalers load it and fetch-xor it concurrently. - __g1_start: Starting position of G1 (inclusive) -- * LSB is index of current G2. - * Modified by signalers while having acquired the condvar-internal lock - and observed concurrently by waiters. - __g1_orig_size: Initial size of G1 -@@ -280,11 +279,9 @@ __condvar_cleanup_waiting (void *arg) - * Reference count used by waiters concurrently with signalers that have - acquired the condvar-internal lock. - __g_signals: The number of signals that can still be consumed, relative to -- the current g1_start. (i.e. bits 31 to 1 of __g_signals are bits -- 31 to 1 of g1_start with the signal count added) -+ the current g1_start. (i.e. g1_start with the signal count added) - * Used as a futex word by waiters. Used concurrently by waiters and - signalers. -- * LSB is currently reserved and 0. - __g_size: Waiters remaining in this group (i.e., which have not been - signaled yet. - * Accessed by signalers and waiters that cancel waiting (both do so only -@@ -391,9 +388,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - too. */ - unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g); - uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); -- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - -- if (seq < (g1_start >> 1)) -+ if (seq < g1_start) - { - /* If the group is closed already, - then this waiter originally had enough extra signals to -@@ -406,13 +402,13 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, - by now, perhaps in the process of switching back to an older - G2, but in either case we're allowed to consume the available - signal and should not block anymore. */ -- if ((int)(signals - lowseq) >= 2) -+ if ((int)(signals - (unsigned int)g1_start) > 0) - { - /* Try to grab a signal. See above for MO. (if we do another loop - iteration we need to see the correct value of g1_start) */ - if (atomic_compare_exchange_weak_acquire ( - cond->__data.__g_signals + g, -- &signals, signals - 2)) -+ &signals, signals - 1)) - break; - else - continue; - -commit 8d3dd23e3de8b4c6e4b94f8bbfab971c3b8a55be -Author: Florian Weimer -Date: Thu Mar 13 06:07:07 2025 +0100 - - nptl: PTHREAD_COND_INITIALIZER compatibility with pre-2.41 versions (bug 32786) - - The new initializer and struct layout does not initialize the - __g_signals field in the old struct layout before the change in - commit c36fc50781995e6758cae2b6927839d0157f213c ("nptl: Remove - g_refs from condition variables"). Bring back fields at the end - of struct __pthread_cond_s, so that they are again zero-initialized. - - Reviewed-by: Sam James - -diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h -index a3d482f80f..bccc2003ec 100644 ---- a/sysdeps/nptl/bits/thread-shared-types.h -+++ b/sysdeps/nptl/bits/thread-shared-types.h -@@ -99,6 +99,8 @@ struct __pthread_cond_s - unsigned int __g1_orig_size; - unsigned int __wrefs; - unsigned int __g_signals[2]; -+ unsigned int __unused_initialized_1; -+ unsigned int __unused_initialized_2; - }; - - typedef unsigned int __tss_t; -diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h -index 9af75d6eae..e0f24418fe 100644 ---- a/sysdeps/nptl/pthread.h -+++ b/sysdeps/nptl/pthread.h -@@ -152,7 +152,7 @@ enum - - - /* Conditional variable handling. */ --#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0} } } -+#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0}, 0, 0 } } - - - /* Cleanup buffers */ - -commit 33b33e9dd0ff26158b1b83cc4347a39c073e490e -Author: Arjun Shankar -Date: Fri Oct 18 16:03:25 2024 +0200 - - libio: Fix a deadlock after fork in popen - - popen modifies its file handler book-keeping under a lock that wasn't - being taken during fork. This meant that a concurrent popen and fork - could end up copying the lock in a "locked" state into the fork child, - where subsequently calling popen would lead to a deadlock due to the - already (spuriously) held lock. - - This commit fixes the deadlock by appropriately taking the lock before - fork, and releasing/resetting it in the parent/child after the fork. - - A new test for concurrent popen and fork is also added. It consistently - hangs (and therefore fails via timeout) without the fix applied. - Reviewed-by: Florian Weimer - - (cherry picked from commit 9f0d2c0ee6c728643fcf9a4879e9f20f5e45ce5f) - -diff --git a/libio/Makefile b/libio/Makefile -index 5292baa4e0..7faba230ac 100644 ---- a/libio/Makefile -+++ b/libio/Makefile -@@ -117,6 +117,7 @@ tests = \ - tst-mmap-offend \ - tst-mmap-setvbuf \ - tst-mmap2-eofsync \ -+ tst-popen-fork \ - tst-popen1 \ - tst-setvbuf1 \ - tst-sprintf-chk-ub \ -diff --git a/libio/iopopen.c b/libio/iopopen.c -index d01cb0648e..352513a291 100644 ---- a/libio/iopopen.c -+++ b/libio/iopopen.c -@@ -57,6 +57,26 @@ unlock (void *not_used) - } - #endif - -+/* These lock/unlock/resetlock functions are used during fork. */ -+ -+void -+_IO_proc_file_chain_lock (void) -+{ -+ _IO_lock_lock (proc_file_chain_lock); -+} -+ -+void -+_IO_proc_file_chain_unlock (void) -+{ -+ _IO_lock_unlock (proc_file_chain_lock); -+} -+ -+void -+_IO_proc_file_chain_resetlock (void) -+{ -+ _IO_lock_init (proc_file_chain_lock); -+} -+ - /* POSIX states popen shall ensure that any streams from previous popen() - calls that remain open in the parent process should be closed in the new - child process. -diff --git a/libio/libioP.h b/libio/libioP.h -index 616253fcd0..a83a411fdf 100644 ---- a/libio/libioP.h -+++ b/libio/libioP.h -@@ -429,6 +429,12 @@ libc_hidden_proto (_IO_list_resetlock) - extern void _IO_enable_locks (void) __THROW; - libc_hidden_proto (_IO_enable_locks) - -+/* Functions for operating popen's proc_file_chain_lock during fork. */ -+ -+extern void _IO_proc_file_chain_lock (void) __THROW attribute_hidden; -+extern void _IO_proc_file_chain_unlock (void) __THROW attribute_hidden; -+extern void _IO_proc_file_chain_resetlock (void) __THROW attribute_hidden; -+ - /* Default jumptable functions. */ - - extern int _IO_default_underflow (FILE *) __THROW; -diff --git a/libio/tst-popen-fork.c b/libio/tst-popen-fork.c -new file mode 100644 -index 0000000000..1df30fc6c0 ---- /dev/null -+++ b/libio/tst-popen-fork.c -@@ -0,0 +1,80 @@ -+/* Test concurrent popen and fork. -+ Copyright (C) 2024 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+static void -+popen_and_pclose (void) -+{ -+ FILE *f = popen ("true", "r"); -+ TEST_VERIFY_EXIT (f != NULL); -+ pclose (f); -+ return; -+} -+ -+static atomic_bool done = ATOMIC_VAR_INIT (0); -+ -+static void * -+popen_and_pclose_forever (__attribute__ ((unused)) -+ void *arg) -+{ -+ while (!atomic_load_explicit (&done, memory_order_acquire)) -+ popen_and_pclose (); -+ return NULL; -+} -+ -+static int -+do_test (void) -+{ -+ -+ /* Repeatedly call popen in a loop during the entire test. */ -+ pthread_t t = xpthread_create (NULL, popen_and_pclose_forever, NULL); -+ -+ /* Repeatedly fork off and reap child processes one-by-one. -+ Each child calls popen once, then exits, leading to the possibility -+ that a child forks *during* our own popen call, thus inheriting any -+ intermediate popen state, possibly including lock state(s). */ -+ for (int i = 0; i < 100; i++) -+ { -+ int cpid = xfork (); -+ -+ if (cpid == 0) -+ { -+ popen_and_pclose (); -+ _exit (0); -+ } -+ else -+ xwaitpid (cpid, NULL, 0); -+ } -+ -+ /* Stop calling popen. */ -+ atomic_store_explicit (&done, 1, memory_order_release); -+ xpthread_join (t); -+ -+ return 0; -+} -+ -+#include -diff --git a/posix/fork.c b/posix/fork.c -index 298765a1ff..cf9b80e7c0 100644 ---- a/posix/fork.c -+++ b/posix/fork.c -@@ -62,6 +62,7 @@ __libc_fork (void) - call_function_static_weak (__nss_database_fork_prepare_parent, - &nss_database_data); - -+ _IO_proc_file_chain_lock (); - _IO_list_lock (); - - /* Acquire malloc locks. This needs to come last because fork -@@ -92,6 +93,7 @@ __libc_fork (void) - - /* Reset locks in the I/O code. */ - _IO_list_resetlock (); -+ _IO_proc_file_chain_resetlock (); - - call_function_static_weak (__nss_database_fork_subprocess, - &nss_database_data); -@@ -121,6 +123,7 @@ __libc_fork (void) - - /* We execute this even if the 'fork' call failed. */ - _IO_list_unlock (); -+ _IO_proc_file_chain_unlock (); - } - - /* Run the handlers registered for the parent. */ - -commit 7c3c9ae28685a9142a8cfa3521bbca74c1007d0b -Author: Arjun Shankar -Date: Fri Oct 25 09:33:45 2024 +0200 - - libio: Correctly link tst-popen-fork against libpthread - - tst-popen-fork failed to build for Hurd due to not being linked with - libpthread. This commit fixes that. - - Tested with build-many-glibcs.py for i686-gnu. - - Reviewed-by: Florian Weimer - (cherry picked from commit 6a290b2895b77be839fcb7c44a6a9879560097ad) - -diff --git a/libio/Makefile b/libio/Makefile -index 7faba230ac..f2e98f96eb 100644 ---- a/libio/Makefile -+++ b/libio/Makefile -@@ -142,6 +142,8 @@ tests = \ - tst_wscanf \ - # tests - -+$(objpfx)tst-popen-fork: $(shared-thread-library) -+ - tests-internal = tst-vtables tst-vtables-interposed - - ifeq (yes,$(build-shared)) - -commit 8667345b83c8ca528a093d4db53f57a1bb1688e4 -Author: Florian Weimer -Date: Thu Feb 13 21:56:52 2025 +0100 - - elf: Keep using minimal malloc after early DTV resize (bug 32412) - - If an auditor loads many TLS-using modules during startup, it is - possible to trigger DTV resizing. Previously, the DTV was marked - as allocated by the main malloc afterwards, even if the minimal - malloc was still in use. With this change, _dl_resize_dtv marks - the resized DTV as allocated with the minimal malloc. - - The new test reuses TLS-using modules from other auditing tests. - - Reviewed-by: DJ Delorie - (cherry picked from commit aa3d7bd5299b33bffc118aa618b59bfa66059bcb) - -diff --git a/elf/Makefile b/elf/Makefile -index dc686c3bff..be64c59887 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -378,6 +378,7 @@ tests += \ - tst-align3 \ - tst-audit-tlsdesc \ - tst-audit-tlsdesc-dlopen \ -+ tst-audit-tlsdesc-dlopen2 \ - tst-audit1 \ - tst-audit2 \ - tst-audit8 \ -@@ -817,6 +818,7 @@ modules-names += \ - tst-auditmanymod8 \ - tst-auditmanymod9 \ - tst-auditmod-tlsdesc \ -+ tst-auditmod-tlsdesc2 \ - tst-auditmod1 \ - tst-auditmod11 \ - tst-auditmod12 \ -@@ -3040,6 +3042,9 @@ $(objpfx)tst-audit-tlsdesc.out: $(objpfx)tst-auditmod-tlsdesc.so - tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so - $(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so - tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so -+$(objpfx)tst-audit-tlsdesc-dlopen2.out: $(objpfx)tst-auditmod-tlsdesc2.so \ -+ $(patsubst %, $(objpfx)%.so, $(tlsmod17a-modules)) -+tst-audit-tlsdesc-dlopen2-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc2.so - - $(objpfx)tst-dlmopen-twice.out: \ - $(objpfx)tst-dlmopen-twice-mod1.so \ -diff --git a/elf/dl-tls.c b/elf/dl-tls.c -index 3d529b722c..b13e752358 100644 ---- a/elf/dl-tls.c -+++ b/elf/dl-tls.c -@@ -528,6 +528,13 @@ _dl_resize_dtv (dtv_t *dtv, size_t max_modid) - if (newp == NULL) - oom (); - memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); -+#ifdef SHARED -+ /* Auditors can trigger a DTV resize event while the full malloc -+ is not yet in use. Mark the new DTV allocation as the -+ initial allocation. */ -+ if (!__rtld_malloc_is_complete ()) -+ GL(dl_initial_dtv) = &newp[1]; -+#endif - } - else - { -diff --git a/elf/tst-audit-tlsdesc-dlopen2.c b/elf/tst-audit-tlsdesc-dlopen2.c -new file mode 100644 -index 0000000000..7ba2c4129a ---- /dev/null -+++ b/elf/tst-audit-tlsdesc-dlopen2.c -@@ -0,0 +1,46 @@ -+/* Loading TLS-using modules from auditors (bug 32412). Main program. -+ Copyright (C) 2021-2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ puts ("info: start of main program"); -+ -+ /* Load TLS-using modules, to trigger DTV resizing. The dynamic -+ linker will load them again (requiring their own TLS) because the -+ dlopen calls from the auditor were in the auditing namespace. */ -+ for (int i = 1; i <= 19; ++i) -+ { -+ char dso[30]; -+ snprintf (dso, sizeof (dso), "tst-tlsmod17a%d.so", i); -+ char sym[30]; -+ snprintf (sym, sizeof(sym), "tlsmod17a%d", i); -+ -+ void *handle = xdlopen (dso, RTLD_LAZY); -+ int (*func) (void) = xdlsym (handle, sym); -+ /* Trigger TLS allocation. */ -+ func (); -+ } -+ -+ return 0; -+} -+ -+#include -diff --git a/elf/tst-auditmod-tlsdesc2.c b/elf/tst-auditmod-tlsdesc2.c -new file mode 100644 -index 0000000000..50275cd34d ---- /dev/null -+++ b/elf/tst-auditmod-tlsdesc2.c -@@ -0,0 +1,59 @@ -+/* Loading TLS-using modules from auditors (bug 32412). Audit module. -+ Copyright (C) 2021-2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+unsigned int -+la_version (unsigned int version) -+{ -+ /* Open some modules, to trigger DTV resizing before the switch to -+ the main malloc. */ -+ for (int i = 1; i <= 19; ++i) -+ { -+ char dso[30]; -+ snprintf (dso, sizeof (dso), "tst-tlsmod17a%d.so", i); -+ char sym[30]; -+ snprintf (sym, sizeof(sym), "tlsmod17a%d", i); -+ -+ void *handle = dlopen (dso, RTLD_LAZY); -+ if (handle == NULL) -+ { -+ printf ("error: dlmopen from auditor: %s\n", dlerror ()); -+ fflush (stdout); -+ _exit (1); -+ } -+ int (*func) (void) = dlsym (handle, sym); -+ if (func == NULL) -+ { -+ printf ("error: dlsym from auditor: %s\n", dlerror ()); -+ fflush (stdout); -+ _exit (1); -+ } -+ /* Trigger TLS allocation. */ -+ func (); -+ } -+ -+ puts ("info: TLS-using modules loaded from auditor"); -+ fflush (stdout); -+ -+ return LAV_CURRENT; -+} - -commit b3002f303cedb8262cbc1ec22999ea36482efa0e -Author: Florian Weimer -Date: Tue May 20 19:36:02 2025 +0200 - - support: Use const char * argument in support_capture_subprogram_self_sgid - - The function does not modify the passed-in string, so make this clear - via the prototype. - - Reviewed-by: Carlos O'Donell - (cherry picked from commit f0c09fe61678df6f7f18fe1ebff074e62fa5ca7a) - -diff --git a/support/capture_subprocess.h b/support/capture_subprocess.h -index 93b7245d2a..5406d9f6c0 100644 ---- a/support/capture_subprocess.h -+++ b/support/capture_subprocess.h -@@ -45,8 +45,7 @@ struct support_capture_subprocess support_capture_subprogram - /* Copy the running program into a setgid binary and run it with CHILD_ID - argument. If execution is successful, return the exit status of the child - program, otherwise return a non-zero failure exit code. */ --int support_capture_subprogram_self_sgid -- (char *child_id); -+int support_capture_subprogram_self_sgid (const char *child_id); - - /* Deallocate the subprocess data captured by - support_capture_subprocess. */ -diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c -index 53847194cb..2383481911 100644 ---- a/support/support_capture_subprocess.c -+++ b/support/support_capture_subprocess.c -@@ -110,7 +110,7 @@ support_capture_subprogram (const char *file, char *const argv[], - safely make it SGID with the TARGET group ID. Then runs the - executable. */ - static int --copy_and_spawn_sgid (char *child_id, gid_t gid) -+copy_and_spawn_sgid (const char *child_id, gid_t gid) - { - char *dirname = xasprintf ("%s/tst-tunables-setuid.%jd", - test_dir, (intmax_t) getpid ()); -@@ -182,7 +182,7 @@ copy_and_spawn_sgid (char *child_id, gid_t gid) - ret = 0; - infd = outfd = -1; - -- char * const args[] = {execname, child_id, NULL}; -+ char * const args[] = {execname, (char *) child_id, NULL}; - - status = support_subprogram_wait (args[0], args); - -@@ -211,7 +211,7 @@ err: - } - - int --support_capture_subprogram_self_sgid (char *child_id) -+support_capture_subprogram_self_sgid (const char *child_id) - { - gid_t target = 0; - const int count = 64; - -commit 61dcce21e06834f7248a8d516c9ec20788fc728c -Author: Florian Weimer -Date: Mon Dec 23 13:57:55 2024 +0100 - - support: Add support_record_failure_barrier - - This can be used to stop execution after a TEST_COMPARE_BLOB - failure, for example. - - (cherry picked from commit d0b8aa6de4529231fadfe604ac2c434e559c2d9e) - -diff --git a/support/check.h b/support/check.h -index 7ea22c7a2c..8f41e5b99f 100644 ---- a/support/check.h -+++ b/support/check.h -@@ -207,6 +207,9 @@ void support_record_failure_reset (void); - failures or not. */ - int support_record_failure_is_failed (void); - -+/* Terminate the process if any failures have been encountered so far. */ -+void support_record_failure_barrier (void); -+ - __END_DECLS - - #endif /* SUPPORT_CHECK_H */ -diff --git a/support/support_record_failure.c b/support/support_record_failure.c -index 978123701d..72ee2b232f 100644 ---- a/support/support_record_failure.c -+++ b/support/support_record_failure.c -@@ -112,3 +112,13 @@ support_record_failure_is_failed (void) - synchronization for reliable test error reporting anyway. */ - return __atomic_load_n (&state->failed, __ATOMIC_RELAXED); - } -+ -+void -+support_record_failure_barrier (void) -+{ -+ if (__atomic_load_n (&state->failed, __ATOMIC_RELAXED)) -+ { -+ puts ("error: exiting due to previous errors"); -+ exit (1); -+ } -+} - -commit 079ac4a172a8f6ba37acf1e80e57f5042d2c7561 -Author: Florian Weimer -Date: Tue May 20 19:45:06 2025 +0200 - - elf: Test case for bug 32976 (CVE-2025-4802) - - Check that LD_LIBRARY_PATH is ignored for AT_SECURE statically - linked binaries, using support_capture_subprogram_self_sgid. - - Reviewed-by: Carlos O'Donell - (cherry picked from commit d8f7a79335b0d861c12c42aec94c04cd5bb181e2) - -diff --git a/elf/Makefile b/elf/Makefile -index be64c59887..afd4eb6fdd 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -266,6 +266,7 @@ tests-static-normal := \ - tst-array1-static \ - tst-array5-static \ - tst-dl-iter-static \ -+ tst-dlopen-sgid \ - tst-dst-static \ - tst-env-setuid-static \ - tst-getauxval-static \ -@@ -859,6 +860,7 @@ modules-names += \ - tst-dlmopen-twice-mod1 \ - tst-dlmopen-twice-mod2 \ - tst-dlmopen1mod \ -+ tst-dlopen-sgid-mod \ - tst-dlopen-tlsreinitmod1 \ - tst-dlopen-tlsreinitmod2 \ - tst-dlopen-tlsreinitmod3 \ -@@ -3153,3 +3155,5 @@ $(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so - tst-dlopen-tlsreinit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so - $(objpfx)tst-dlopen-tlsreinit4.out: $(objpfx)tst-auditmod1.so - tst-dlopen-tlsreinit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so -+ -+$(objpfx)tst-dlopen-sgid.out: $(objpfx)tst-dlopen-sgid-mod.so -diff --git a/elf/tst-dlopen-sgid-mod.c b/elf/tst-dlopen-sgid-mod.c -new file mode 100644 -index 0000000000..5eb79eef48 ---- /dev/null -+++ b/elf/tst-dlopen-sgid-mod.c -@@ -0,0 +1 @@ -+/* Opening this object should not succeed. */ -diff --git a/elf/tst-dlopen-sgid.c b/elf/tst-dlopen-sgid.c -new file mode 100644 -index 0000000000..47829a405e ---- /dev/null -+++ b/elf/tst-dlopen-sgid.c -@@ -0,0 +1,104 @@ -+/* Test case for ignored LD_LIBRARY_PATH in static startug (bug 32976). -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* This is the name of our test object. Use a custom module for -+ testing, so that this object does not get picked up from the system -+ path. */ -+static const char dso_name[] = "tst-dlopen-sgid-mod.so"; -+ -+/* Used to mark the recursive invocation. */ -+static const char magic_argument[] = "run-actual-test"; -+ -+static int -+do_test (void) -+{ -+/* Pathname of the directory that receives the shared objects this -+ test attempts to load. */ -+ char *libdir = support_create_temp_directory ("tst-dlopen-sgid-"); -+ -+ /* This is supposed to be ignored and stripped. */ -+ TEST_COMPARE (setenv ("LD_LIBRARY_PATH", libdir, 1), 0); -+ -+ /* Copy of libc.so.6. */ -+ { -+ char *from = xasprintf ("%s/%s", support_objdir_root, LIBC_SO); -+ char *to = xasprintf ("%s/%s", libdir, LIBC_SO); -+ add_temp_file (to); -+ support_copy_file (from, to); -+ free (to); -+ free (from); -+ } -+ -+ /* Copy of the test object. */ -+ { -+ char *from = xasprintf ("%s/elf/%s", support_objdir_root, dso_name); -+ char *to = xasprintf ("%s/%s", libdir, dso_name); -+ add_temp_file (to); -+ support_copy_file (from, to); -+ free (to); -+ free (from); -+ } -+ -+ TEST_COMPARE (support_capture_subprogram_self_sgid (magic_argument), 0); -+ -+ free (libdir); -+ -+ return 0; -+} -+ -+static void -+alternative_main (int argc, char **argv) -+{ -+ if (argc == 2 && strcmp (argv[1], magic_argument) == 0) -+ { -+ if (getgid () == getegid ()) -+ /* This can happen if the file system is mounted nosuid. */ -+ FAIL_UNSUPPORTED ("SGID failed: GID and EGID match (%jd)\n", -+ (intmax_t) getgid ()); -+ -+ /* Should be removed due to SGID. */ -+ TEST_COMPARE_STRING (getenv ("LD_LIBRARY_PATH"), NULL); -+ -+ TEST_VERIFY (dlopen (dso_name, RTLD_NOW) == NULL); -+ { -+ const char *message = dlerror (); -+ TEST_COMPARE_STRING (message, -+ "tst-dlopen-sgid-mod.so:" -+ " cannot open shared object file:" -+ " No such file or directory"); -+ } -+ -+ support_record_failure_barrier (); -+ exit (EXIT_SUCCESS); -+ } -+} -+ -+#define PREPARE alternative_main -+#include - -commit 56e75b810ac39b0e390be5b66397dca0cdfa4d80 -Author: Sunil K Pandey -Date: Tue May 20 10:07:27 2025 -0700 - - x86_64: Fix typo in ifunc-impl-list.c. - - Fix wcsncpy and wcpncpy typo in ifunc-impl-list.c. - - Reviewed-by: H.J. Lu - (cherry picked from commit f2aeb6ff941dccc4c777b5621e77addea6cc076c) - -diff --git a/sysdeps/x86_64/multiarch/ifunc-impl-list.c b/sysdeps/x86_64/multiarch/ifunc-impl-list.c -index 0bbb71bbbf..3db45db39b 100644 ---- a/sysdeps/x86_64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/x86_64/multiarch/ifunc-impl-list.c -@@ -922,7 +922,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, - (CPU_FEATURE_USABLE (AVX2) - && CPU_FEATURE_USABLE (BMI2)), - __wcsncpy_avx2) -- X86_IFUNC_IMPL_ADD_V2 (array, i, wcpncpy, -+ X86_IFUNC_IMPL_ADD_V2 (array, i, wcsncpy, - 1, - __wcsncpy_generic)) - -@@ -952,7 +952,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, - (CPU_FEATURE_USABLE (AVX2) - && CPU_FEATURE_USABLE (BMI2)), - __wcpncpy_avx2) -- X86_IFUNC_IMPL_ADD_V2 (array, i, wcsncpy, -+ X86_IFUNC_IMPL_ADD_V2 (array, i, wcpncpy, - 1, - __wcpncpy_generic)) - - -commit c8e10f14328518954072df64aafd574e67cfdde5 -Author: Florian Weimer -Date: Wed May 21 08:43:32 2025 +0200 - - elf: Fix subprocess status handling for tst-dlopen-sgid (bug 32987) - - This should really move into support_capture_subprogram_self_sgid. - - Reviewed-by: Sam James - (cherry picked from commit 35fc356fa3b4f485bd3ba3114c9f774e5df7d3c2) - -diff --git a/NEWS b/NEWS -index 7a6985f5dd..4b290ad4bf 100644 ---- a/NEWS -+++ b/NEWS -@@ -23,6 +23,7 @@ The following bugs are resolved with this release: - [32245] glibc -Wstringop-overflow= build failure on hppa - [32470] x86: Avoid integer truncation with large cache sizes - [32810] Crash on x86-64 if XSAVEC disable via tunable -+ [32987] elf: Fix subprocess status handling for tst-dlopen-sgid - - Version 2.40 - -diff --git a/elf/tst-dlopen-sgid.c b/elf/tst-dlopen-sgid.c -index 47829a405e..5688b79f2e 100644 ---- a/elf/tst-dlopen-sgid.c -+++ b/elf/tst-dlopen-sgid.c -@@ -26,6 +26,8 @@ - #include - #include - #include -+#include -+#include - #include - - /* This is the name of our test object. Use a custom module for -@@ -66,10 +68,16 @@ do_test (void) - free (from); - } - -- TEST_COMPARE (support_capture_subprogram_self_sgid (magic_argument), 0); -- - free (libdir); - -+ int status = support_capture_subprogram_self_sgid (magic_argument); -+ -+ if (WEXITSTATUS (status) == EXIT_UNSUPPORTED) -+ return EXIT_UNSUPPORTED; -+ -+ if (!WIFEXITED (status)) -+ FAIL_EXIT1 ("Unexpected exit status %d from child process\n", status); -+ - return 0; - } - - -commit 42a5a940c974d02540c8da26d6374c744d148cb9 -Author: Carlos O'Donell -Date: Wed Jun 11 09:19:17 2025 -0400 - - ppc64le: Revert "powerpc: Optimized strncmp for power10" (CVE-2025-5745) - - This reverts commit 23f0d81608d0ca6379894ef81670cf30af7fd081 - - Reason for revert: Power10 strncmp clobbers non-volatile vector - registers (Bug 33060) - - Tested on ppc64le with no regressions. - - (cherry picked from commit 63c60101ce7c5eac42be90f698ba02099b41b965) - -diff --git a/sysdeps/powerpc/powerpc64/le/power10/strncmp.S b/sysdeps/powerpc/powerpc64/le/power10/strncmp.S -deleted file mode 100644 -index d4ba76acae..0000000000 ---- a/sysdeps/powerpc/powerpc64/le/power10/strncmp.S -+++ /dev/null -@@ -1,271 +0,0 @@ --/* Optimized strncmp implementation for PowerPC64/POWER10. -- Copyright (C) 2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --/* Implements the function -- -- int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t [r5] n) -- -- The implementation uses unaligned doubleword access to avoid specialized -- code paths depending of data alignment for first 32 bytes and uses -- vectorised loops after that. */ -- --#ifndef STRNCMP --# define STRNCMP strncmp --#endif -- --/* TODO: Change this to actual instructions when minimum binutils is upgraded -- to 2.27. Macros are defined below for these newer instructions in order -- to maintain compatibility. */ -- --#define LXVP(xtp,dq,ra) \ -- .long(((6)<<(32-6)) \ -- | ((((xtp)-32)>>1)<<(32-10)) \ -- | ((1)<<(32-11)) \ -- | ((ra)<<(32-16)) \ -- | dq) -- --#define COMPARE_16(vreg1,vreg2,offset) \ -- lxv vreg1+32,offset(r3); \ -- lxv vreg2+32,offset(r4); \ -- vcmpnezb. v7,vreg1,vreg2; \ -- bne cr6,L(different); \ -- cmpldi cr7,r5,16; \ -- ble cr7,L(ret0); \ -- addi r5,r5,-16; -- --#define COMPARE_32(vreg1,vreg2,offset,label1,label2) \ -- LXVP(vreg1+32,offset,r3); \ -- LXVP(vreg2+32,offset,r4); \ -- vcmpnezb. v7,vreg1+1,vreg2+1; \ -- bne cr6,L(label1); \ -- vcmpnezb. v7,vreg1,vreg2; \ -- bne cr6,L(label2); \ -- cmpldi cr7,r5,32; \ -- ble cr7,L(ret0); \ -- addi r5,r5,-32; -- --#define TAIL_FIRST_16B(vreg1,vreg2) \ -- vctzlsbb r6,v7; \ -- cmpld cr7,r5,r6; \ -- ble cr7,L(ret0); \ -- vextubrx r5,r6,vreg1; \ -- vextubrx r4,r6,vreg2; \ -- subf r3,r4,r5; \ -- blr; -- --#define TAIL_SECOND_16B(vreg1,vreg2) \ -- vctzlsbb r6,v7; \ -- addi r0,r6,16; \ -- cmpld cr7,r5,r0; \ -- ble cr7,L(ret0); \ -- vextubrx r5,r6,vreg1; \ -- vextubrx r4,r6,vreg2; \ -- subf r3,r4,r5; \ -- blr; -- --#define CHECK_N_BYTES(reg1,reg2,len_reg) \ -- sldi r6,len_reg,56; \ -- lxvl 32+v4,reg1,r6; \ -- lxvl 32+v5,reg2,r6; \ -- add reg1,reg1,len_reg; \ -- add reg2,reg2,len_reg; \ -- vcmpnezb v7,v4,v5; \ -- vctzlsbb r6,v7; \ -- cmpld cr7,r6,len_reg; \ -- blt cr7,L(different); \ -- cmpld cr7,r5,len_reg; \ -- ble cr7,L(ret0); \ -- sub r5,r5,len_reg; \ -- -- /* TODO: change this to .machine power10 when the minimum required -- binutils allows it. */ -- .machine power9 --ENTRY_TOCLESS (STRNCMP, 4) -- /* Check if size is 0. */ -- cmpdi cr0,r5,0 -- beq cr0,L(ret0) -- andi. r7,r3,4095 -- andi. r8,r4,4095 -- cmpldi cr0,r7,4096-16 -- cmpldi cr1,r8,4096-16 -- bgt cr0,L(crosses) -- bgt cr1,L(crosses) -- COMPARE_16(v4,v5,0) -- addi r3,r3,16 -- addi r4,r4,16 -- --L(crosses): -- andi. r7,r3,15 -- subfic r7,r7,16 /* r7(nalign1) = 16 - (str1 & 15). */ -- andi. r9,r4,15 -- subfic r8,r9,16 /* r8(nalign2) = 16 - (str2 & 15). */ -- cmpld cr7,r7,r8 -- beq cr7,L(same_aligned) -- blt cr7,L(nalign1_min) -- -- /* nalign2 is minimum and s2 pointer is aligned. */ -- CHECK_N_BYTES(r3,r4,r8) -- /* Are we on the 64B hunk which crosses a page? */ -- andi. r10,r3,63 /* Determine offset into 64B hunk. */ -- andi. r8,r3,15 /* The offset into the 16B hunk. */ -- neg r7,r3 -- andi. r9,r7,15 /* Number of bytes after a 16B cross. */ -- rlwinm. r7,r7,26,0x3F /* ((r4-4096))>>6&63. */ -- beq L(compare_64_pagecross) -- mtctr r7 -- b L(compare_64B_unaligned) -- -- /* nalign1 is minimum and s1 pointer is aligned. */ --L(nalign1_min): -- CHECK_N_BYTES(r3,r4,r7) -- /* Are we on the 64B hunk which crosses a page? */ -- andi. r10,r4,63 /* Determine offset into 64B hunk. */ -- andi. r8,r4,15 /* The offset into the 16B hunk. */ -- neg r7,r4 -- andi. r9,r7,15 /* Number of bytes after a 16B cross. */ -- rlwinm. r7,r7,26,0x3F /* ((r4-4096))>>6&63. */ -- beq L(compare_64_pagecross) -- mtctr r7 -- -- .p2align 5 --L(compare_64B_unaligned): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- COMPARE_16(v4,v5,48) -- addi r3,r3,64 -- addi r4,r4,64 -- bdnz L(compare_64B_unaligned) -- -- /* Cross the page boundary of s2, carefully. Only for first -- iteration we have to get the count of 64B blocks to be checked. -- From second iteration and beyond, loop counter is always 63. */ --L(compare_64_pagecross): -- li r11, 63 -- mtctr r11 -- cmpldi r10,16 -- ble L(cross_4) -- cmpldi r10,32 -- ble L(cross_3) -- cmpldi r10,48 -- ble L(cross_2) --L(cross_1): -- CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- addi r3,r3,48 -- addi r4,r4,48 -- b L(compare_64B_unaligned) --L(cross_2): -- COMPARE_16(v4,v5,0) -- addi r3,r3,16 -- addi r4,r4,16 -- CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- addi r3,r3,32 -- addi r4,r4,32 -- b L(compare_64B_unaligned) --L(cross_3): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- addi r3,r3,32 -- addi r4,r4,32 -- CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- COMPARE_16(v4,v5,0) -- addi r3,r3,16 -- addi r4,r4,16 -- b L(compare_64B_unaligned) --L(cross_4): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- addi r3,r3,48 -- addi r4,r4,48 -- CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- b L(compare_64B_unaligned) -- --L(same_aligned): -- CHECK_N_BYTES(r3,r4,r7) -- /* Align s1 to 32B and adjust s2 address. -- Use lxvp only if both s1 and s2 are 32B aligned. */ -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- COMPARE_16(v4,v5,48) -- addi r3,r3,64 -- addi r4,r4,64 -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- addi r5,r5,32 -- -- clrldi r6,r3,59 -- subfic r7,r6,32 -- add r3,r3,r7 -- add r4,r4,r7 -- subf r5,r7,r5 -- andi. r7,r4,0x1F -- beq cr0,L(32B_aligned_loop) -- -- .p2align 5 --L(16B_aligned_loop): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- COMPARE_16(v4,v5,48) -- addi r3,r3,64 -- addi r4,r4,64 -- b L(16B_aligned_loop) -- -- /* Calculate and return the difference. */ --L(different): -- TAIL_FIRST_16B(v4,v5) -- -- .p2align 5 --L(32B_aligned_loop): -- COMPARE_32(v14,v16,0,tail1,tail2) -- COMPARE_32(v18,v20,32,tail3,tail4) -- COMPARE_32(v22,v24,64,tail5,tail6) -- COMPARE_32(v26,v28,96,tail7,tail8) -- addi r3,r3,128 -- addi r4,r4,128 -- b L(32B_aligned_loop) -- --L(tail1): TAIL_FIRST_16B(v15,v17) --L(tail2): TAIL_SECOND_16B(v14,v16) --L(tail3): TAIL_FIRST_16B(v19,v21) --L(tail4): TAIL_SECOND_16B(v18,v20) --L(tail5): TAIL_FIRST_16B(v23,v25) --L(tail6): TAIL_SECOND_16B(v22,v24) --L(tail7): TAIL_FIRST_16B(v27,v29) --L(tail8): TAIL_SECOND_16B(v26,v28) -- -- .p2align 5 --L(ret0): -- li r3,0 -- blr -- --END(STRNCMP) --libc_hidden_builtin_def(strncmp) -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile -index b847c19049..a38ff46448 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile -@@ -34,7 +34,7 @@ ifneq (,$(filter %le,$(config-machine))) - sysdep_routines += memchr-power10 memcmp-power10 memcpy-power10 \ - memmove-power10 memset-power10 rawmemchr-power9 \ - rawmemchr-power10 strcmp-power9 strcmp-power10 \ -- strncmp-power9 strncmp-power10 strcpy-power9 stpcpy-power9 \ -+ strncmp-power9 strcpy-power9 stpcpy-power9 \ - strlen-power9 strncpy-power9 stpncpy-power9 strlen-power10 - endif - CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -index 2bb47d3527..30fd89e109 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -@@ -164,9 +164,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, - /* Support sysdeps/powerpc/powerpc64/multiarch/strncmp.c. */ - IFUNC_IMPL (i, name, strncmp, - #ifdef __LITTLE_ENDIAN__ -- IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_3_1 -- && hwcap & PPC_FEATURE_HAS_VSX, -- __strncmp_power10) - IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_3_00 - && hwcap & PPC_FEATURE_HAS_ALTIVEC, - __strncmp_power9) -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power10.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power10.S -deleted file mode 100644 -index d7026c12e2..0000000000 ---- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power10.S -+++ /dev/null -@@ -1,25 +0,0 @@ --/* Copyright (C) 2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#if defined __LITTLE_ENDIAN__ && IS_IN (libc) --#define STRNCMP __strncmp_power10 -- --#undef libc_hidden_builtin_def --#define libc_hidden_builtin_def(name) -- --#include --#endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c -index a5ed67f766..6178f4a432 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c -@@ -29,7 +29,6 @@ extern __typeof (strncmp) __strncmp_ppc attribute_hidden; - extern __typeof (strncmp) __strncmp_power8 attribute_hidden; - # ifdef __LITTLE_ENDIAN__ - extern __typeof (strncmp) __strncmp_power9 attribute_hidden; --extern __typeof (strncmp) __strncmp_power10 attribute_hidden; - # endif - # undef strncmp - -@@ -37,9 +36,6 @@ extern __typeof (strncmp) __strncmp_power10 attribute_hidden; - ifunc symbol properly. */ - libc_ifunc_redirected (__redirect_strncmp, strncmp, - # ifdef __LITTLE_ENDIAN__ -- (hwcap2 & PPC_FEATURE2_ARCH_3_1 -- && hwcap & PPC_FEATURE_HAS_VSX) -- ? __strncmp_power10 : - (hwcap2 & PPC_FEATURE2_ARCH_3_00 - && hwcap & PPC_FEATURE_HAS_ALTIVEC) - ? __strncmp_power9 : - -commit 2ad6e55ea5cb23af5af7af35d5f80cd93032f96a -Author: Carlos O'Donell -Date: Wed Jun 11 09:43:50 2025 -0400 - - ppc64le: Revert "powerpc: Fix performance issues of strcmp power10" (CVE-2025-5702) - - This reverts commit 90bcc8721ef82b7378d2b080141228660e862d56 - - This change is in the chain of the final revert that fixes the CVE - i.e. 3367d8e180848030d1646f088759f02b8dfe0d6f - - Reason for revert: Power10 strcmp clobbers non-volatile vector - registers (Bug 33056) - - Tested on ppc64le with no regressions. - - (cherry picked from commit c22de63588df7a8a0edceea9bb02534064c9d201) - -diff --git a/sysdeps/powerpc/powerpc64/le/power10/strcmp.S b/sysdeps/powerpc/powerpc64/le/power10/strcmp.S -index f0d6732a25..00f1e9c170 100644 ---- a/sysdeps/powerpc/powerpc64/le/power10/strcmp.S -+++ b/sysdeps/powerpc/powerpc64/le/power10/strcmp.S -@@ -62,7 +62,7 @@ - lxvl 32+v5,reg2,r0; \ - add reg1,reg1,len_reg; \ - add reg2,reg2,len_reg; \ -- vcmpnezb v7,v4,v5; \ -+ vcmpnezb. v7,v4,v5; \ - vctzlsbb r6,v7; \ - cmpld cr7,r6,len_reg; \ - blt cr7,L(different); \ -@@ -72,110 +72,70 @@ - - .machine power9 - ENTRY_TOCLESS (STRCMP, 4) -- andi. r7,r3,4095 -- andi. r8,r4,4095 -- cmpldi cr0,r7,4096-16 -- cmpldi cr1,r8,4096-16 -- bgt cr0,L(crosses) -- bgt cr1,L(crosses) -- COMPARE_16(v4,v5,0) -- --L(crosses): -- andi. r7,r3,15 -- subfic r7,r7,16 /* r7(nalign1) = 16 - (str1 & 15). */ -- andi. r9,r4,15 -- subfic r5,r9,16 /* r5(nalign2) = 16 - (str2 & 15). */ -- cmpld cr7,r7,r5 -- beq cr7,L(same_aligned) -- blt cr7,L(nalign1_min) -+ li r11,16 -+ /* eq bit of cr1 used as swap status flag to indicate if -+ source pointers were swapped. */ -+ crclr 4*cr1+eq -+ vspltisb v19,-1 -+ andi. r7,r3,15 -+ sub r7,r11,r7 /* r7(nalign1) = 16 - (str1 & 15). */ -+ andi. r9,r4,15 -+ sub r5,r11,r9 /* r5(nalign2) = 16 - (str2 & 15). */ -+ cmpld cr7,r7,r5 -+ beq cr7,L(same_aligned) -+ blt cr7,L(nalign1_min) -+ /* Swap r3 and r4, and r7 and r5 such that r3 and r7 hold the -+ pointer which is closer to the next 16B boundary so that only -+ one CHECK_N_BYTES is needed before entering the loop below. */ -+ mr r8,r4 -+ mr r4,r3 -+ mr r3,r8 -+ mr r12,r7 -+ mr r7,r5 -+ mr r5,r12 -+ crset 4*cr1+eq /* Set bit on swapping source pointers. */ - -- /* nalign2 is minimum and s2 pointer is aligned. */ -- CHECK_N_BYTES(r3,r4,r5) -- /* Are we on the 64B hunk which crosses a page? */ -- andi. r10,r3,63 /* Determine offset into 64B hunk. */ -- andi. r8,r3,15 /* The offset into the 16B hunk. */ -- neg r7,r3 -- andi. r9,r7,15 /* Number of bytes after a 16B cross. */ -- rlwinm. r7,r7,26,0x3F /* ((r3-4096))>>6&63. */ -- beq L(compare_64_pagecross) -- mtctr r7 -- b L(compare_64B_unaligned) -- -- /* nalign1 is minimum and s1 pointer is aligned. */ -+ .p2align 5 - L(nalign1_min): - CHECK_N_BYTES(r3,r4,r7) -- /* Are we on the 64B hunk which crosses a page? */ -- andi. r10,r4,63 /* Determine offset into 64B hunk. */ -- andi. r8,r4,15 /* The offset into the 16B hunk. */ -- neg r7,r4 -- andi. r9,r7,15 /* Number of bytes after a 16B cross. */ -- rlwinm. r7,r7,26,0x3F /* ((r4-4096))>>6&63. */ -- beq L(compare_64_pagecross) -- mtctr r7 - - .p2align 5 --L(compare_64B_unaligned): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- COMPARE_16(v4,v5,48) -- addi r3,r3,64 -- addi r4,r4,64 -- bdnz L(compare_64B_unaligned) -+L(s1_aligned): -+ /* r9 and r5 is number of bytes to be read after and before -+ page boundary correspondingly. */ -+ sub r5,r5,r7 -+ subfic r9,r5,16 -+ /* Now let r7 hold the count of quadwords which can be -+ checked without crossing a page boundary. quadword offset is -+ (str2>>4)&0xFF. */ -+ rlwinm r7,r4,28,0xFF -+ /* Below check is required only for first iteration. For second -+ iteration and beyond, the new loop counter is always 255. */ -+ cmpldi r7,255 -+ beq L(L3) -+ /* Get the initial loop count by 255-((str2>>4)&0xFF). */ -+ subfic r11,r7,255 - -- /* Cross the page boundary of s2, carefully. Only for first -- iteration we have to get the count of 64B blocks to be checked. -- From second iteration and beyond, loop counter is always 63. */ --L(compare_64_pagecross): -- li r11, 63 -+ .p2align 5 -+L(L1): - mtctr r11 -- cmpldi r10,16 -- ble L(cross_4) -- cmpldi r10,32 -- ble L(cross_3) -- cmpldi r10,48 -- ble L(cross_2) --L(cross_1): -- CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- addi r3,r3,48 -- addi r4,r4,48 -- b L(compare_64B_unaligned) --L(cross_2): -- COMPARE_16(v4,v5,0) -- addi r3,r3,16 -- addi r4,r4,16 -- CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- addi r3,r3,32 -- addi r4,r4,32 -- b L(compare_64B_unaligned) --L(cross_3): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- addi r3,r3,32 -- addi r4,r4,32 -- CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- COMPARE_16(v4,v5,0) -+ -+ .p2align 5 -+L(L2): -+ COMPARE_16(v4,v5,0) /* Load 16B blocks using lxv. */ - addi r3,r3,16 - addi r4,r4,16 -- b L(compare_64B_unaligned) --L(cross_4): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- addi r3,r3,48 -- addi r4,r4,48 -+ bdnz L(L2) -+ /* Cross the page boundary of s2, carefully. */ -+ -+ .p2align 5 -+L(L3): -+ CHECK_N_BYTES(r3,r4,r5) - CHECK_N_BYTES(r3,r4,r9) -- CHECK_N_BYTES(r3,r4,r8) -- b L(compare_64B_unaligned) -+ li r11,255 /* Load the new loop counter. */ -+ b L(L1) - -+ .p2align 5 - L(same_aligned): - CHECK_N_BYTES(r3,r4,r7) - /* Align s1 to 32B and adjust s2 address. -@@ -208,7 +168,18 @@ L(16B_aligned_loop): - - /* Calculate and return the difference. */ - L(different): -- TAIL(v4,v5) -+ vctzlsbb r6,v7 -+ vextubrx r5,r6,v4 -+ vextubrx r4,r6,v5 -+ bt 4*cr1+eq,L(swapped) -+ subf r3,r4,r5 -+ blr -+ -+ /* If src pointers were swapped, then swap the -+ indices and calculate the return value. */ -+L(swapped): -+ subf r3,r5,r4 -+ blr - - .p2align 5 - L(32B_aligned_loop): - -commit 672f31b90e501b4ba10ba12ab4c6051f77589912 -Author: Carlos O'Donell -Date: Wed Jun 11 09:33:45 2025 -0400 - - ppc64le: Revert "powerpc : Add optimized memchr for POWER10" (Bug 33059) - - This reverts commit b9182c793caa05df5d697427c0538936e6396d4b - - Reason for revert: Power10 memchr clobbers v20 vector register - (Bug 33059) - - This is not a security issue, unlike CVE-2025-5745 and - CVE-2025-5702. - - Tested on ppc64le without regression. - - (cherry picked from commit a7877bb6685300f159fa095c9f50b22b112cddb8) - -diff --git a/sysdeps/powerpc/powerpc64/le/power10/memchr.S b/sysdeps/powerpc/powerpc64/le/power10/memchr.S -deleted file mode 100644 -index 53e5716d72..0000000000 ---- a/sysdeps/powerpc/powerpc64/le/power10/memchr.S -+++ /dev/null -@@ -1,315 +0,0 @@ --/* Optimized memchr implementation for POWER10 LE. -- Copyright (C) 2021-2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#include -- --# ifndef MEMCHR --# define MEMCHR __memchr --# endif --# define M_VREG_ZERO v20 --# define M_OFF_START_LOOP 256 --# define MEMCHR_SUBTRACT_VECTORS \ -- vsububm v4,v4,v18; \ -- vsububm v5,v5,v18; \ -- vsububm v6,v6,v18; \ -- vsububm v7,v7,v18; --# define M_TAIL(vreg,increment) \ -- vctzlsbb r4,vreg; \ -- cmpld r5,r4; \ -- ble L(null); \ -- addi r4,r4,increment; \ -- add r3,r6,r4; \ -- blr -- --/* TODO: Replace macros by the actual instructions when minimum binutils becomes -- >= 2.35. This is used to keep compatibility with older versions. */ --#define M_VEXTRACTBM(rt,vrb) \ -- .long(((4)<<(32-6)) \ -- | ((rt)<<(32-11)) \ -- | ((8)<<(32-16)) \ -- | ((vrb)<<(32-21)) \ -- | 1602) -- --#define M_LXVP(xtp,dq,ra) \ -- .long(((6)<<(32-6)) \ -- | ((((xtp)-32)>>1)<<(32-10)) \ -- | ((1)<<(32-11)) \ -- | ((ra)<<(32-16)) \ -- | dq) -- --#define CHECK16B(vreg,offset,addr,label) \ -- lxv vreg+32,offset(addr); \ -- vcmpequb. vreg,vreg,v18; \ -- bne cr6,L(label); \ -- cmpldi r5,16; \ -- ble L(null); \ -- addi r5,r5,-16; -- --/* Load 4 quadwords, merge into one VR for speed and check for NULLs. r6 has # -- of bytes already checked. */ --#define CHECK64B(offset,addr,label) \ -- M_LXVP(v4+32,offset,addr); \ -- M_LXVP(v6+32,offset+32,addr); \ -- MEMCHR_SUBTRACT_VECTORS; \ -- vminub v14,v4,v5; \ -- vminub v15,v6,v7; \ -- vminub v16,v14,v15; \ -- vcmpequb. v0,v16,M_VREG_ZERO; \ -- beq cr6,$+12; \ -- li r7,offset; \ -- b L(label); \ -- cmpldi r5,64; \ -- ble L(null); \ -- addi r5,r5,-64 -- --/* Implements the function -- void *[r3] memchr (const void *s [r3], int c [r4], size_t n [r5]). */ -- -- .machine power9 -- --ENTRY_TOCLESS (MEMCHR) -- CALL_MCOUNT 3 -- -- cmpldi r5,0 -- beq L(null) -- mr r0,r5 -- xori r6,r4,0xff -- -- mtvsrd v18+32,r4 /* matching char in v18 */ -- mtvsrd v19+32,r6 /* non matching char in v19 */ -- -- vspltb v18,v18,7 /* replicate */ -- vspltb v19,v19,7 /* replicate */ -- vspltisb M_VREG_ZERO,0 -- -- /* Next 16B-aligned address. Prepare address for L(aligned). */ -- addi r6,r3,16 -- clrrdi r6,r6,4 -- -- /* Align data and fill bytes not loaded with non matching char. */ -- lvx v0,0,r3 -- lvsr v1,0,r3 -- vperm v0,v19,v0,v1 -- -- vcmpequb. v6,v0,v18 -- bne cr6,L(found) -- sub r4,r6,r3 -- cmpld r5,r4 -- ble L(null) -- sub r5,r5,r4 -- -- /* Test up to OFF_START_LOOP-16 bytes in 16B chunks. The main loop is -- optimized for longer strings, so checking the first bytes in 16B -- chunks benefits a lot small strings. */ -- .p2align 5 --L(aligned): -- cmpldi r5,0 -- beq L(null) -- -- CHECK16B(v0,0,r6,tail1) -- CHECK16B(v1,16,r6,tail2) -- CHECK16B(v2,32,r6,tail3) -- CHECK16B(v3,48,r6,tail4) -- CHECK16B(v4,64,r6,tail5) -- CHECK16B(v5,80,r6,tail6) -- CHECK16B(v6,96,r6,tail7) -- CHECK16B(v7,112,r6,tail8) -- CHECK16B(v8,128,r6,tail9) -- CHECK16B(v9,144,r6,tail10) -- CHECK16B(v10,160,r6,tail11) -- CHECK16B(v0,176,r6,tail12) -- CHECK16B(v1,192,r6,tail13) -- CHECK16B(v2,208,r6,tail14) -- CHECK16B(v3,224,r6,tail15) -- -- cmpdi cr5,r4,0 /* Check if c == 0. This will be useful to -- choose how we will perform the main loop. */ -- -- /* Prepare address for the loop. */ -- addi r4,r3,M_OFF_START_LOOP -- clrrdi r4,r4,6 -- sub r6,r4,r3 -- sub r5,r0,r6 -- addi r6,r4,128 -- -- /* If c == 0, use the loop without the vsububm. */ -- beq cr5,L(loop) -- -- /* This is very similar to the block after L(loop), the difference is -- that here MEMCHR_SUBTRACT_VECTORS is not empty, and we subtract -- each byte loaded by the char we are looking for, this way we can keep -- using vminub to merge the results and checking for nulls. */ -- .p2align 5 --L(memchr_loop): -- CHECK64B(0,r4,pre_tail_64b) -- CHECK64B(64,r4,pre_tail_64b) -- addi r4,r4,256 -- -- CHECK64B(0,r6,tail_64b) -- CHECK64B(64,r6,tail_64b) -- addi r6,r6,256 -- -- CHECK64B(0,r4,pre_tail_64b) -- CHECK64B(64,r4,pre_tail_64b) -- addi r4,r4,256 -- -- CHECK64B(0,r6,tail_64b) -- CHECK64B(64,r6,tail_64b) -- addi r6,r6,256 -- -- b L(memchr_loop) -- /* Switch to a more aggressive approach checking 64B each time. Use 2 -- pointers 128B apart and unroll the loop once to make the pointer -- updates and usages separated enough to avoid stalls waiting for -- address calculation. */ -- .p2align 5 --L(loop): --#undef MEMCHR_SUBTRACT_VECTORS --#define MEMCHR_SUBTRACT_VECTORS /* nothing */ -- CHECK64B(0,r4,pre_tail_64b) -- CHECK64B(64,r4,pre_tail_64b) -- addi r4,r4,256 -- -- CHECK64B(0,r6,tail_64b) -- CHECK64B(64,r6,tail_64b) -- addi r6,r6,256 -- -- CHECK64B(0,r4,pre_tail_64b) -- CHECK64B(64,r4,pre_tail_64b) -- addi r4,r4,256 -- -- CHECK64B(0,r6,tail_64b) -- CHECK64B(64,r6,tail_64b) -- addi r6,r6,256 -- -- b L(loop) -- -- .p2align 5 --L(pre_tail_64b): -- mr r6,r4 --L(tail_64b): -- /* OK, we found a null byte. Let's look for it in the current 64-byte -- block and mark it in its corresponding VR. lxvp vx,0(ry) puts the -- low 16B bytes into vx+1, and the high into vx, so the order here is -- v5, v4, v7, v6. */ -- vcmpequb v1,v5,M_VREG_ZERO -- vcmpequb v2,v4,M_VREG_ZERO -- vcmpequb v3,v7,M_VREG_ZERO -- vcmpequb v4,v6,M_VREG_ZERO -- -- /* Take into account the other 64B blocks we had already checked. */ -- add r6,r6,r7 -- /* Extract first bit of each byte. */ -- M_VEXTRACTBM(r8,v1) -- M_VEXTRACTBM(r9,v2) -- M_VEXTRACTBM(r10,v3) -- M_VEXTRACTBM(r11,v4) -- -- /* Shift each value into their corresponding position. */ -- sldi r9,r9,16 -- sldi r10,r10,32 -- sldi r11,r11,48 -- -- /* Merge the results. */ -- or r8,r8,r9 -- or r9,r10,r11 -- or r11,r9,r8 -- -- cnttzd r0,r11 /* Count trailing zeros before the match. */ -- cmpld r5,r0 -- ble L(null) -- add r3,r6,r0 /* Compute final address. */ -- blr -- -- .p2align 5 --L(tail1): -- M_TAIL(v0,0) -- -- .p2align 5 --L(tail2): -- M_TAIL(v1,16) -- -- .p2align 5 --L(tail3): -- M_TAIL(v2,32) -- -- .p2align 5 --L(tail4): -- M_TAIL(v3,48) -- -- .p2align 5 --L(tail5): -- M_TAIL(v4,64) -- -- .p2align 5 --L(tail6): -- M_TAIL(v5,80) -- -- .p2align 5 --L(tail7): -- M_TAIL(v6,96) -- -- .p2align 5 --L(tail8): -- M_TAIL(v7,112) -- -- .p2align 5 --L(tail9): -- M_TAIL(v8,128) -- -- .p2align 5 --L(tail10): -- M_TAIL(v9,144) -- -- .p2align 5 --L(tail11): -- M_TAIL(v10,160) -- -- .p2align 5 --L(tail12): -- M_TAIL(v0,176) -- -- .p2align 5 --L(tail13): -- M_TAIL(v1,192) -- -- .p2align 5 --L(tail14): -- M_TAIL(v2,208) -- -- .p2align 5 --L(tail15): -- M_TAIL(v3,224) -- -- .p2align 5 --L(found): -- vctzlsbb r7,v6 -- cmpld r5,r7 -- ble L(null) -- add r3,r3,r7 -- blr -- -- .p2align 5 --L(null): -- li r3,0 -- blr -- --END (MEMCHR) -- --weak_alias (__memchr, memchr) --libc_hidden_builtin_def (memchr) -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile -index a38ff46448..fa1107dfd9 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile -@@ -31,10 +31,10 @@ sysdep_routines += memcpy-power8-cached memcpy-power7 memcpy-a2 memcpy-power6 \ - strncase-power8 - - ifneq (,$(filter %le,$(config-machine))) --sysdep_routines += memchr-power10 memcmp-power10 memcpy-power10 \ -- memmove-power10 memset-power10 rawmemchr-power9 \ -- rawmemchr-power10 strcmp-power9 strcmp-power10 \ -- strncmp-power9 strcpy-power9 stpcpy-power9 \ -+sysdep_routines += memcmp-power10 memcpy-power10 memmove-power10 memset-power10 \ -+ rawmemchr-power9 rawmemchr-power10 \ -+ strcmp-power9 strcmp-power10 strncmp-power9 \ -+ strcpy-power9 stpcpy-power9 \ - strlen-power9 strncpy-power9 stpncpy-power9 strlen-power10 - endif - CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -index 30fd89e109..9b3e617306 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -@@ -226,12 +226,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, - - /* Support sysdeps/powerpc/powerpc64/multiarch/memchr.c. */ - IFUNC_IMPL (i, name, memchr, --#ifdef __LITTLE_ENDIAN__ -- IFUNC_IMPL_ADD (array, i, memchr, -- hwcap2 & PPC_FEATURE2_ARCH_3_1 -- && hwcap & PPC_FEATURE_HAS_VSX, -- __memchr_power10) --#endif - IFUNC_IMPL_ADD (array, i, memchr, - hwcap2 & PPC_FEATURE2_ARCH_2_07 - && hwcap & PPC_FEATURE_HAS_ALTIVEC, -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-power10.S b/sysdeps/powerpc/powerpc64/multiarch/memchr-power10.S -deleted file mode 100644 -index 7d35ef28a9..0000000000 ---- a/sysdeps/powerpc/powerpc64/multiarch/memchr-power10.S -+++ /dev/null -@@ -1,28 +0,0 @@ --/* Optimized memchr implementation for POWER10/PPC64. -- Copyright (C) 2016-2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#if defined __LITTLE_ENDIAN__ && IS_IN (libc) --#define MEMCHR __memchr_power10 -- --#undef libc_hidden_builtin_def --#define libc_hidden_builtin_def(name) --#undef weak_alias --#define weak_alias(name,alias) -- --#include --#endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr.c b/sysdeps/powerpc/powerpc64/multiarch/memchr.c -index 57d23e7b18..b4655dfcaa 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memchr.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/memchr.c -@@ -25,23 +25,15 @@ extern __typeof (__memchr) __memchr_ppc attribute_hidden; - extern __typeof (__memchr) __memchr_power7 attribute_hidden; - extern __typeof (__memchr) __memchr_power8 attribute_hidden; - --# ifdef __LITTLE_ENDIAN__ --extern __typeof (__memchr) __memchr_power10 attribute_hidden; --# endif - /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle - ifunc symbol properly. */ - libc_ifunc (__memchr, --# ifdef __LITTLE_ENDIAN__ -- (hwcap2 & PPC_FEATURE2_ARCH_3_1 -- && hwcap & PPC_FEATURE_HAS_VSX) -- ? __memchr_power10 : --# endif -- (hwcap2 & PPC_FEATURE2_ARCH_2_07 -- && hwcap & PPC_FEATURE_HAS_ALTIVEC) -- ? __memchr_power8 : -- (hwcap & PPC_FEATURE_ARCH_2_06) -- ? __memchr_power7 -- : __memchr_ppc); -+ (hwcap2 & PPC_FEATURE2_ARCH_2_07 -+ && hwcap & PPC_FEATURE_HAS_ALTIVEC) -+ ? __memchr_power8 : -+ (hwcap & PPC_FEATURE_ARCH_2_06) -+ ? __memchr_power7 -+ : __memchr_ppc); - - weak_alias (__memchr, memchr) - libc_hidden_builtin_def (memchr) - -commit 7e12550b8e3a11764a4a9090ce6bd3fc23fc8a8e -Author: Carlos O'Donell -Date: Mon Jun 16 13:09:57 2025 -0400 - - ppc64le: Revert "powerpc: Optimized strcmp for power10" (CVE-2025-5702) - - This reverts commit 3367d8e180848030d1646f088759f02b8dfe0d6f - - Reason for revert: Power10 strcmp clobbers non-volatile vector - registers (Bug 33056) - - Tested on ppc64le without regression. - - (cherry picked from commit 15808c77b35319e67ee0dc8f984a9a1a434701bc) - -diff --git a/sysdeps/powerpc/powerpc64/le/power10/strcmp.S b/sysdeps/powerpc/powerpc64/le/power10/strcmp.S -deleted file mode 100644 -index 00f1e9c170..0000000000 ---- a/sysdeps/powerpc/powerpc64/le/power10/strcmp.S -+++ /dev/null -@@ -1,204 +0,0 @@ --/* Optimized strcmp implementation for PowerPC64/POWER10. -- Copyright (C) 2021-2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ --#include -- --#ifndef STRCMP --# define STRCMP strcmp --#endif -- --/* Implements the function -- int [r3] strcmp (const char *s1 [r3], const char *s2 [r4]). */ -- --/* TODO: Change this to actual instructions when minimum binutils is upgraded -- to 2.27. Macros are defined below for these newer instructions in order -- to maintain compatibility. */ -- --#define LXVP(xtp,dq,ra) \ -- .long(((6)<<(32-6)) \ -- | ((((xtp)-32)>>1)<<(32-10)) \ -- | ((1)<<(32-11)) \ -- | ((ra)<<(32-16)) \ -- | dq) -- --#define COMPARE_16(vreg1,vreg2,offset) \ -- lxv vreg1+32,offset(r3); \ -- lxv vreg2+32,offset(r4); \ -- vcmpnezb. v7,vreg1,vreg2; \ -- bne cr6,L(different); \ -- --#define COMPARE_32(vreg1,vreg2,offset,label1,label2) \ -- LXVP(vreg1+32,offset,r3); \ -- LXVP(vreg2+32,offset,r4); \ -- vcmpnezb. v7,vreg1+1,vreg2+1; \ -- bne cr6,L(label1); \ -- vcmpnezb. v7,vreg1,vreg2; \ -- bne cr6,L(label2); \ -- --#define TAIL(vreg1,vreg2) \ -- vctzlsbb r6,v7; \ -- vextubrx r5,r6,vreg1; \ -- vextubrx r4,r6,vreg2; \ -- subf r3,r4,r5; \ -- blr; \ -- --#define CHECK_N_BYTES(reg1,reg2,len_reg) \ -- sldi r0,len_reg,56; \ -- lxvl 32+v4,reg1,r0; \ -- lxvl 32+v5,reg2,r0; \ -- add reg1,reg1,len_reg; \ -- add reg2,reg2,len_reg; \ -- vcmpnezb. v7,v4,v5; \ -- vctzlsbb r6,v7; \ -- cmpld cr7,r6,len_reg; \ -- blt cr7,L(different); \ -- -- /* TODO: change this to .machine power10 when the minimum required -- binutils allows it. */ -- -- .machine power9 --ENTRY_TOCLESS (STRCMP, 4) -- li r11,16 -- /* eq bit of cr1 used as swap status flag to indicate if -- source pointers were swapped. */ -- crclr 4*cr1+eq -- vspltisb v19,-1 -- andi. r7,r3,15 -- sub r7,r11,r7 /* r7(nalign1) = 16 - (str1 & 15). */ -- andi. r9,r4,15 -- sub r5,r11,r9 /* r5(nalign2) = 16 - (str2 & 15). */ -- cmpld cr7,r7,r5 -- beq cr7,L(same_aligned) -- blt cr7,L(nalign1_min) -- /* Swap r3 and r4, and r7 and r5 such that r3 and r7 hold the -- pointer which is closer to the next 16B boundary so that only -- one CHECK_N_BYTES is needed before entering the loop below. */ -- mr r8,r4 -- mr r4,r3 -- mr r3,r8 -- mr r12,r7 -- mr r7,r5 -- mr r5,r12 -- crset 4*cr1+eq /* Set bit on swapping source pointers. */ -- -- .p2align 5 --L(nalign1_min): -- CHECK_N_BYTES(r3,r4,r7) -- -- .p2align 5 --L(s1_aligned): -- /* r9 and r5 is number of bytes to be read after and before -- page boundary correspondingly. */ -- sub r5,r5,r7 -- subfic r9,r5,16 -- /* Now let r7 hold the count of quadwords which can be -- checked without crossing a page boundary. quadword offset is -- (str2>>4)&0xFF. */ -- rlwinm r7,r4,28,0xFF -- /* Below check is required only for first iteration. For second -- iteration and beyond, the new loop counter is always 255. */ -- cmpldi r7,255 -- beq L(L3) -- /* Get the initial loop count by 255-((str2>>4)&0xFF). */ -- subfic r11,r7,255 -- -- .p2align 5 --L(L1): -- mtctr r11 -- -- .p2align 5 --L(L2): -- COMPARE_16(v4,v5,0) /* Load 16B blocks using lxv. */ -- addi r3,r3,16 -- addi r4,r4,16 -- bdnz L(L2) -- /* Cross the page boundary of s2, carefully. */ -- -- .p2align 5 --L(L3): -- CHECK_N_BYTES(r3,r4,r5) -- CHECK_N_BYTES(r3,r4,r9) -- li r11,255 /* Load the new loop counter. */ -- b L(L1) -- -- .p2align 5 --L(same_aligned): -- CHECK_N_BYTES(r3,r4,r7) -- /* Align s1 to 32B and adjust s2 address. -- Use lxvp only if both s1 and s2 are 32B aligned. */ -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- COMPARE_16(v4,v5,48) -- addi r3,r3,64 -- addi r4,r4,64 -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- -- clrldi r6,r3,59 -- subfic r5,r6,32 -- add r3,r3,r5 -- add r4,r4,r5 -- andi. r5,r4,0x1F -- beq cr0,L(32B_aligned_loop) -- -- .p2align 5 --L(16B_aligned_loop): -- COMPARE_16(v4,v5,0) -- COMPARE_16(v4,v5,16) -- COMPARE_16(v4,v5,32) -- COMPARE_16(v4,v5,48) -- addi r3,r3,64 -- addi r4,r4,64 -- b L(16B_aligned_loop) -- -- /* Calculate and return the difference. */ --L(different): -- vctzlsbb r6,v7 -- vextubrx r5,r6,v4 -- vextubrx r4,r6,v5 -- bt 4*cr1+eq,L(swapped) -- subf r3,r4,r5 -- blr -- -- /* If src pointers were swapped, then swap the -- indices and calculate the return value. */ --L(swapped): -- subf r3,r5,r4 -- blr -- -- .p2align 5 --L(32B_aligned_loop): -- COMPARE_32(v14,v16,0,tail1,tail2) -- COMPARE_32(v18,v20,32,tail3,tail4) -- COMPARE_32(v22,v24,64,tail5,tail6) -- COMPARE_32(v26,v28,96,tail7,tail8) -- addi r3,r3,128 -- addi r4,r4,128 -- b L(32B_aligned_loop) -- --L(tail1): TAIL(v15,v17) --L(tail2): TAIL(v14,v16) --L(tail3): TAIL(v19,v21) --L(tail4): TAIL(v18,v20) --L(tail5): TAIL(v23,v25) --L(tail6): TAIL(v22,v24) --L(tail7): TAIL(v27,v29) --L(tail8): TAIL(v26,v28) -- --END (STRCMP) --libc_hidden_builtin_def (strcmp) -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile -index fa1107dfd9..9f15f3207f 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile -@@ -33,8 +33,7 @@ sysdep_routines += memcpy-power8-cached memcpy-power7 memcpy-a2 memcpy-power6 \ - ifneq (,$(filter %le,$(config-machine))) - sysdep_routines += memcmp-power10 memcpy-power10 memmove-power10 memset-power10 \ - rawmemchr-power9 rawmemchr-power10 \ -- strcmp-power9 strcmp-power10 strncmp-power9 \ -- strcpy-power9 stpcpy-power9 \ -+ strcmp-power9 strncmp-power9 strcpy-power9 stpcpy-power9 \ - strlen-power9 strncpy-power9 stpncpy-power9 strlen-power10 - endif - CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -index 9b3e617306..78443b7f34 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -@@ -377,10 +377,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, - /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c. */ - IFUNC_IMPL (i, name, strcmp, - #ifdef __LITTLE_ENDIAN__ -- IFUNC_IMPL_ADD (array, i, strcmp, -- (hwcap2 & PPC_FEATURE2_ARCH_3_1) -- && (hwcap & PPC_FEATURE_HAS_VSX), -- __strcmp_power10) - IFUNC_IMPL_ADD (array, i, strcmp, - hwcap2 & PPC_FEATURE2_ARCH_3_00 - && hwcap & PPC_FEATURE_HAS_ALTIVEC, -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S -deleted file mode 100644 -index 1a9f6069f5..0000000000 ---- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S -+++ /dev/null -@@ -1,26 +0,0 @@ --/* Optimized strcmp implementation for POWER10/PPC64. -- Copyright (C) 2021-2024 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, see -- . */ -- --#if defined __LITTLE_ENDIAN__ && IS_IN (libc) --#define STRCMP __strcmp_power10 -- --#undef libc_hidden_builtin_def --#define libc_hidden_builtin_def(name) -- --#include --#endif /* __LITTLE_ENDIAN__ && IS_IN (libc) */ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c -index ff32496fab..06b9b4090f 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c -@@ -29,16 +29,12 @@ extern __typeof (strcmp) __strcmp_power7 attribute_hidden; - extern __typeof (strcmp) __strcmp_power8 attribute_hidden; - # ifdef __LITTLE_ENDIAN__ - extern __typeof (strcmp) __strcmp_power9 attribute_hidden; --extern __typeof (strcmp) __strcmp_power10 attribute_hidden; - # endif - - # undef strcmp - - libc_ifunc_redirected (__redirect_strcmp, strcmp, - # ifdef __LITTLE_ENDIAN__ -- (hwcap2 & PPC_FEATURE2_ARCH_3_1 -- && hwcap & PPC_FEATURE_HAS_VSX) -- ? __strcmp_power10 : - (hwcap2 & PPC_FEATURE2_ARCH_3_00 - && hwcap & PPC_FEATURE_HAS_ALTIVEC) - ? __strcmp_power9 : - -commit 23a02e382c8ffebfed00a082d8898f1aa468b5da -Author: Florian Weimer -Date: Wed May 21 16:47:34 2025 +0200 - - support: Pick group in support_capture_subprogram_self_sgid if UID == 0 - - When running as root, it is likely that we can run under any group. - Pick a harmless group from /etc/group in this case. - - Reviewed-by: Carlos O'Donell - (cherry picked from commit 2f769cec448d84a62b7dd0d4ff56978fe22c0cd6) - -diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c -index 2383481911..1cb344eb04 100644 ---- a/support/support_capture_subprocess.c -+++ b/support/support_capture_subprocess.c -@@ -21,7 +21,11 @@ - - #include - #include -+#include -+#include -+#include - #include -+#include - #include - #include - #include -@@ -210,10 +214,48 @@ err: - return status; - } - -+/* Returns true if a group with NAME has been found, and writes its -+ GID to *TARGET. */ -+static bool -+find_sgid_group (gid_t *target, const char *name) -+{ -+ /* Do not use getgrname_r because it does not work in statically -+ linked binaries if the system libc is different. */ -+ FILE *fp = fopen ("/etc/group", "rce"); -+ if (fp == NULL) -+ return false; -+ __fsetlocking (fp, FSETLOCKING_BYCALLER); -+ -+ bool ok = false; -+ struct scratch_buffer buf; -+ scratch_buffer_init (&buf); -+ while (true) -+ { -+ struct group grp; -+ struct group *result = NULL; -+ int status = fgetgrent_r (fp, &grp, buf.data, buf.length, &result); -+ if (status == 0 && result != NULL) -+ { -+ if (strcmp (result->gr_name, name) == 0) -+ { -+ *target = result->gr_gid; -+ ok = true; -+ break; -+ } -+ } -+ else if (errno != ERANGE) -+ break; -+ else if (!scratch_buffer_grow (&buf)) -+ break; -+ } -+ scratch_buffer_free (&buf); -+ fclose (fp); -+ return ok; -+} -+ - int - support_capture_subprogram_self_sgid (const char *child_id) - { -- gid_t target = 0; - const int count = 64; - gid_t groups[count]; - -@@ -225,6 +267,7 @@ support_capture_subprogram_self_sgid (const char *child_id) - (intmax_t) getuid ()); - - gid_t current = getgid (); -+ gid_t target = current; - for (int i = 0; i < ret; ++i) - { - if (groups[i] != current) -@@ -234,9 +277,16 @@ support_capture_subprogram_self_sgid (const char *child_id) - } - } - -- if (target == 0) -- FAIL_UNSUPPORTED("Could not find a suitable GID for user %jd\n", -- (intmax_t) getuid ()); -+ if (target == current) -+ { -+ /* If running as root, try to find a harmless group for SGID. */ -+ if (getuid () != 0 -+ || (!find_sgid_group (&target, "nogroup") -+ && !find_sgid_group (&target, "bin") -+ && !find_sgid_group (&target, "daemon"))) -+ FAIL_UNSUPPORTED("Could not find a suitable GID for user %jd\n", -+ (intmax_t) getuid ()); -+ } - - return copy_and_spawn_sgid (child_id, target); - } - -commit dbc83657e290bdad3245259be80fb84cbe10304c -Author: Florian Weimer -Date: Thu May 22 14:36:37 2025 +0200 - - Fix error reporting (false negatives) in SGID tests - - And simplify the interface of support_capture_subprogram_self_sgid. - - Use the existing framework for temporary directories (now with - mode 0700) and directory/file deletion. Handle all execution - errors within support_capture_subprogram_self_sgid. In particular, - this includes test failures because the invoked program did not - exit with exit status zero. Existing tests that expect exit - status 42 are adjusted to use zero instead. - - In addition, fix callers not to call exit (0) with test failures - pending (which may mask them, especially when running with --direct). - - Fixes commit 35fc356fa3b4f485bd3ba3114c9f774e5df7d3c2 - ("elf: Fix subprocess status handling for tst-dlopen-sgid (bug 32987)"). - - Reviewed-by: Carlos O'Donell - (cherry picked from commit 3a3fb2ed83f79100c116c824454095ecfb335ad7) - -diff --git a/elf/tst-dlopen-sgid.c b/elf/tst-dlopen-sgid.c -index 5688b79f2e..8aec52e19f 100644 ---- a/elf/tst-dlopen-sgid.c -+++ b/elf/tst-dlopen-sgid.c -@@ -70,13 +70,7 @@ do_test (void) - - free (libdir); - -- int status = support_capture_subprogram_self_sgid (magic_argument); -- -- if (WEXITSTATUS (status) == EXIT_UNSUPPORTED) -- return EXIT_UNSUPPORTED; -- -- if (!WIFEXITED (status)) -- FAIL_EXIT1 ("Unexpected exit status %d from child process\n", status); -+ support_capture_subprogram_self_sgid (magic_argument); - - return 0; - } -diff --git a/elf/tst-env-setuid-tunables.c b/elf/tst-env-setuid-tunables.c -index a47219047f..233eec7631 100644 ---- a/elf/tst-env-setuid-tunables.c -+++ b/elf/tst-env-setuid-tunables.c -@@ -105,10 +105,7 @@ do_test (int argc, char **argv) - - if (ret != 0) - exit (1); -- -- /* Special return code to make sure that the child executed all the way -- through. */ -- exit (42); -+ return 0; - } - else - { -@@ -127,18 +124,7 @@ do_test (int argc, char **argv) - continue; - } - -- int status = support_capture_subprogram_self_sgid (buf); -- -- /* Bail out early if unsupported. */ -- if (WEXITSTATUS (status) == EXIT_UNSUPPORTED) -- return EXIT_UNSUPPORTED; -- -- if (WEXITSTATUS (status) != 42) -- { -- printf (" [%d] child failed with status %d\n", i, -- WEXITSTATUS (status)); -- support_record_failure (); -- } -+ support_capture_subprogram_self_sgid (buf); - } - return 0; - } -diff --git a/elf/tst-env-setuid.c b/elf/tst-env-setuid.c -index 59f2ffeb88..ee3f058468 100644 ---- a/elf/tst-env-setuid.c -+++ b/elf/tst-env-setuid.c -@@ -147,10 +147,7 @@ do_test (int argc, char **argv) - - if (ret != 0) - exit (1); -- -- /* Special return code to make sure that the child executed all the way -- through. */ -- exit (42); -+ return 0; - } - else - { -@@ -174,17 +171,7 @@ do_test (int argc, char **argv) - free (profilepath); - } - -- int status = support_capture_subprogram_self_sgid (SETGID_CHILD); -- -- if (WEXITSTATUS (status) == EXIT_UNSUPPORTED) -- exit (EXIT_UNSUPPORTED); -- -- if (WEXITSTATUS (status) != 42) -- { -- printf (" child failed with status %d\n", -- WEXITSTATUS (status)); -- support_record_failure (); -- } -+ support_capture_subprogram_self_sgid (SETGID_CHILD); - - return 0; - } -diff --git a/stdlib/tst-secure-getenv.c b/stdlib/tst-secure-getenv.c -index cc26ed6d15..cefee58d46 100644 ---- a/stdlib/tst-secure-getenv.c -+++ b/stdlib/tst-secure-getenv.c -@@ -57,13 +57,7 @@ do_test (void) - exit (1); - } - -- int status = support_capture_subprogram_self_sgid (MAGIC_ARGUMENT); -- -- if (WEXITSTATUS (status) == EXIT_UNSUPPORTED) -- return EXIT_UNSUPPORTED; -- -- if (!WIFEXITED (status)) -- FAIL_EXIT1 ("Unexpected exit status %d from child process\n", status); -+ support_capture_subprogram_self_sgid (MAGIC_ARGUMENT); - - return 0; - } -@@ -82,6 +76,7 @@ alternative_main (int argc, char **argv) - if (secure_getenv ("PATH") != NULL) - FAIL_EXIT (4, "PATH variable not filtered out\n"); - -+ support_record_failure_barrier (); - exit (EXIT_SUCCESS); - } - } -diff --git a/support/capture_subprocess.h b/support/capture_subprocess.h -index 5406d9f6c0..57bb941e7d 100644 ---- a/support/capture_subprocess.h -+++ b/support/capture_subprocess.h -@@ -42,10 +42,12 @@ struct support_capture_subprocess support_capture_subprocess - struct support_capture_subprocess support_capture_subprogram - (const char *file, char *const argv[], char *const envp[]); - --/* Copy the running program into a setgid binary and run it with CHILD_ID -- argument. If execution is successful, return the exit status of the child -- program, otherwise return a non-zero failure exit code. */ --int support_capture_subprogram_self_sgid (const char *child_id); -+/* Copy the running program into a setgid binary and run it with -+ CHILD_ID argument. If the program exits with a non-zero status, -+ exit with that exit status (or status 1 if the program did not exit -+ normally). If the test cannot be performed, exit with -+ EXIT_UNSUPPORTED. */ -+void support_capture_subprogram_self_sgid (const char *child_id); - - /* Deallocate the subprocess data captured by - support_capture_subprocess. */ -diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c -index 1cb344eb04..cbc6951064 100644 ---- a/support/support_capture_subprocess.c -+++ b/support/support_capture_subprocess.c -@@ -31,6 +31,7 @@ - #include - #include - #include -+#include - #include - - static void -@@ -113,105 +114,44 @@ support_capture_subprogram (const char *file, char *const argv[], - /* Copies the executable into a restricted directory, so that we can - safely make it SGID with the TARGET group ID. Then runs the - executable. */ --static int -+static void - copy_and_spawn_sgid (const char *child_id, gid_t gid) - { -- char *dirname = xasprintf ("%s/tst-tunables-setuid.%jd", -- test_dir, (intmax_t) getpid ()); -+ char *dirname = support_create_temp_directory ("tst-glibc-sgid-"); - char *execname = xasprintf ("%s/bin", dirname); -- int infd = -1; -- int outfd = -1; -- int ret = 1, status = 1; -- -- TEST_VERIFY (mkdir (dirname, 0700) == 0); -- if (support_record_failure_is_failed ()) -- goto err; -+ add_temp_file (execname); - -- infd = open ("/proc/self/exe", O_RDONLY); -- if (infd < 0) -+ if (access ("/proc/self/exe", R_OK) != 0) - FAIL_UNSUPPORTED ("unsupported: Cannot read binary from procfs\n"); - -- outfd = open (execname, O_WRONLY | O_CREAT | O_EXCL, 0700); -- TEST_VERIFY (outfd >= 0); -- if (support_record_failure_is_failed ()) -- goto err; -- -- char buf[4096]; -- for (;;) -- { -- ssize_t rdcount = read (infd, buf, sizeof (buf)); -- TEST_VERIFY (rdcount >= 0); -- if (support_record_failure_is_failed ()) -- goto err; -- if (rdcount == 0) -- break; -- char *p = buf; -- char *end = buf + rdcount; -- while (p != end) -- { -- ssize_t wrcount = write (outfd, buf, end - p); -- if (wrcount == 0) -- errno = ENOSPC; -- TEST_VERIFY (wrcount > 0); -- if (support_record_failure_is_failed ()) -- goto err; -- p += wrcount; -- } -- } -+ support_copy_file ("/proc/self/exe", execname); - -- bool chowned = false; -- TEST_VERIFY ((chowned = fchown (outfd, getuid (), gid) == 0) -- || errno == EPERM); -- if (support_record_failure_is_failed ()) -- goto err; -- else if (!chowned) -- { -- ret = 77; -- goto err; -- } -+ if (chown (execname, getuid (), gid) != 0) -+ FAIL_UNSUPPORTED ("cannot change group of \"%s\" to %jd: %m", -+ execname, (intmax_t) gid); - -- TEST_VERIFY (fchmod (outfd, 02750) == 0); -- if (support_record_failure_is_failed ()) -- goto err; -- TEST_VERIFY (close (outfd) == 0); -- if (support_record_failure_is_failed ()) -- goto err; -- TEST_VERIFY (close (infd) == 0); -- if (support_record_failure_is_failed ()) -- goto err; -+ if (chmod (execname, 02750) != 0) -+ FAIL_UNSUPPORTED ("cannot make \"%s\" SGID: %m ", execname); - - /* We have the binary, now spawn the subprocess. Avoid using - support_subprogram because we only want the program exit status, not the - contents. */ -- ret = 0; -- infd = outfd = -1; - - char * const args[] = {execname, (char *) child_id, NULL}; -+ int status = support_subprogram_wait (args[0], args); - -- status = support_subprogram_wait (args[0], args); -+ free (execname); -+ free (dirname); - --err: -- if (outfd >= 0) -- close (outfd); -- if (infd >= 0) -- close (infd); -- if (execname != NULL) -- { -- unlink (execname); -- free (execname); -- } -- if (dirname != NULL) -+ if (WIFEXITED (status)) - { -- rmdir (dirname); -- free (dirname); -+ if (WEXITSTATUS (status) == 0) -+ return; -+ else -+ exit (WEXITSTATUS (status)); - } -- -- if (ret == 77) -- FAIL_UNSUPPORTED ("Failed to make sgid executable for test\n"); -- if (ret != 0) -- FAIL_EXIT1 ("Failed to make sgid executable for test\n"); -- -- return status; -+ else -+ FAIL_EXIT1 ("subprogram failed with status %d", status); - } - - /* Returns true if a group with NAME has been found, and writes its -@@ -253,7 +193,7 @@ find_sgid_group (gid_t *target, const char *name) - return ok; - } - --int -+void - support_capture_subprogram_self_sgid (const char *child_id) - { - const int count = 64; -@@ -288,7 +228,7 @@ support_capture_subprogram_self_sgid (const char *child_id) - (intmax_t) getuid ()); - } - -- return copy_and_spawn_sgid (child_id, target); -+ copy_and_spawn_sgid (child_id, target); - } - - void - -commit 2eb180377b96771b8368b0915669c8c7b267e739 -Author: Florian Weimer -Date: Mon Jul 21 21:43:49 2025 +0200 - - posix: Fix double-free after allocation failure in regcomp (bug 33185) - - If a memory allocation failure occurs during bracket expression - parsing in regcomp, a double-free error may result. - - Reported-by: Anastasia Belova - Co-authored-by: Paul Eggert - Reviewed-by: Andreas K. Huettel - (cherry picked from commit 7ea06e994093fa0bcca0d0ee2c1db271d8d7885d) - -diff --git a/NEWS b/NEWS -index 4b290ad4bf..253b07ae99 100644 ---- a/NEWS -+++ b/NEWS -@@ -24,6 +24,7 @@ The following bugs are resolved with this release: - [32470] x86: Avoid integer truncation with large cache sizes - [32810] Crash on x86-64 if XSAVEC disable via tunable - [32987] elf: Fix subprocess status handling for tst-dlopen-sgid -+ [33185] Fix double-free after allocation failure in regcomp - - Version 2.40 - -diff --git a/posix/Makefile b/posix/Makefile -index 2c598cd20a..830278a423 100644 ---- a/posix/Makefile -+++ b/posix/Makefile -@@ -303,6 +303,7 @@ tests := \ - tst-posix_spawn-setsid \ - tst-preadwrite \ - tst-preadwrite64 \ -+ tst-regcomp-bracket-free \ - tst-regcomp-truncated \ - tst-regex \ - tst-regex2 \ -diff --git a/posix/regcomp.c b/posix/regcomp.c -index 5380d3c7b9..6595bb3c0d 100644 ---- a/posix/regcomp.c -+++ b/posix/regcomp.c -@@ -3384,6 +3384,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, - { - #ifdef RE_ENABLE_I18N - free_charset (mbcset); -+ mbcset = NULL; - #endif - /* Build a tree for simple bracket. */ - br_token.type = SIMPLE_BRACKET; -@@ -3399,7 +3400,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, - parse_bracket_exp_free_return: - re_free (sbcset); - #ifdef RE_ENABLE_I18N -- free_charset (mbcset); -+ if (__glibc_likely (mbcset != NULL)) -+ free_charset (mbcset); - #endif /* RE_ENABLE_I18N */ - return NULL; - } -diff --git a/posix/tst-regcomp-bracket-free.c b/posix/tst-regcomp-bracket-free.c -new file mode 100644 -index 0000000000..3c091d8c44 ---- /dev/null -+++ b/posix/tst-regcomp-bracket-free.c -@@ -0,0 +1,176 @@ -+/* Test regcomp bracket parsing with injected allocation failures (bug 33185). -+ Copyright (C) 2025 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* This test invokes regcomp multiple times, failing one memory -+ allocation in each call. The function call should fail with -+ REG_ESPACE (or succeed if it can recover from the allocation -+ failure). Previously, there was double-free bug. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* Data structure allocated via MAP_SHARED, so that writes from the -+ subprocess are visible. */ -+struct shared_data -+{ -+ /* Number of tracked allocations performed so far. */ -+ volatile unsigned int allocation_count; -+ -+ /* If this number is reached, one allocation fails. */ -+ volatile unsigned int failing_allocation; -+ -+ /* The subprocess stores the expected name here. */ -+ char name[100]; -+}; -+ -+/* Allocation count in shared mapping. */ -+static struct shared_data *shared; -+ -+/* Returns true if a failure should be injected for this allocation. */ -+static bool -+fail_this_allocation (void) -+{ -+ if (shared != NULL) -+ { -+ unsigned int count = shared->allocation_count; -+ shared->allocation_count = count + 1; -+ return count == shared->failing_allocation; -+ } -+ else -+ return false; -+} -+ -+/* Failure-injecting wrappers for allocation functions used by glibc. */ -+ -+void * -+malloc (size_t size) -+{ -+ if (fail_this_allocation ()) -+ { -+ errno = ENOMEM; -+ return NULL; -+ } -+ extern __typeof (malloc) __libc_malloc; -+ return __libc_malloc (size); -+} -+ -+void * -+calloc (size_t a, size_t b) -+{ -+ if (fail_this_allocation ()) -+ { -+ errno = ENOMEM; -+ return NULL; -+ } -+ extern __typeof (calloc) __libc_calloc; -+ return __libc_calloc (a, b); -+} -+ -+void * -+realloc (void *ptr, size_t size) -+{ -+ if (fail_this_allocation ()) -+ { -+ errno = ENOMEM; -+ return NULL; -+ } -+ extern __typeof (realloc) __libc_realloc; -+ return __libc_realloc (ptr, size); -+} -+ -+/* No-op subprocess to verify that support_isolate_in_subprocess does -+ not perform any heap allocations. */ -+static void -+no_op (void *ignored) -+{ -+} -+ -+/* Perform a regcomp call in a subprocess. Used to count its -+ allocations. */ -+static void -+initialize (void *regexp1) -+{ -+ const char *regexp = regexp1; -+ -+ shared->allocation_count = 0; -+ -+ regex_t reg; -+ TEST_COMPARE (regcomp (®, regexp, 0), 0); -+} -+ -+/* Perform regcomp in a subprocess with fault injection. */ -+static void -+test_in_subprocess (void *regexp1) -+{ -+ const char *regexp = regexp1; -+ unsigned int inject_at = shared->failing_allocation; -+ -+ regex_t reg; -+ int ret = regcomp (®, regexp, 0); -+ -+ if (ret != 0) -+ { -+ TEST_COMPARE (ret, REG_ESPACE); -+ printf ("info: allocation %u failure results in return value %d," -+ " error %s (%d)\n", -+ inject_at, ret, strerrorname_np (errno), errno); -+ } -+} -+ -+static int -+do_test (void) -+{ -+ char regexp[] = "[:alpha:]"; -+ -+ shared = support_shared_allocate (sizeof (*shared)); -+ -+ /* Disable fault injection. */ -+ shared->failing_allocation = ~0U; -+ -+ support_isolate_in_subprocess (no_op, NULL); -+ TEST_COMPARE (shared->allocation_count, 0); -+ -+ support_isolate_in_subprocess (initialize, regexp); -+ -+ /* The number of allocations in the successful case, plus some -+ slack. Once the number of expected allocations is exceeded, -+ injecting further failures does not make a difference. */ -+ unsigned int maximum_allocation_count = shared->allocation_count; -+ printf ("info: successful call performs %u allocations\n", -+ maximum_allocation_count); -+ maximum_allocation_count += 10; -+ -+ for (unsigned int inject_at = 0; inject_at <= maximum_allocation_count; -+ ++inject_at) -+ { -+ shared->allocation_count = 0; -+ shared->failing_allocation = inject_at; -+ support_isolate_in_subprocess (test_in_subprocess, regexp); -+ } -+ -+ support_shared_free (shared); -+ -+ return 0; -+} -+ -+#include diff --git a/pkgs/development/libraries/glibc/2.42-master.patch b/pkgs/development/libraries/glibc/2.42-master.patch new file mode 100644 index 0000000000000..efed2a43b7e2a --- /dev/null +++ b/pkgs/development/libraries/glibc/2.42-master.patch @@ -0,0 +1,5372 @@ +commit bdea6c37197a3c9bd976911cce5f580dea1c28dd +Author: Andreas K. Hüttel +Date: Mon Jul 28 20:35:38 2025 +0200 + + Replace advisories directory with pointer file + + Signed-off-by: Andreas K. Hüttel + +diff --git a/advisories/GLIBC-SA-2023-0001 b/advisories/GLIBC-SA-2023-0001 +deleted file mode 100644 +index 3d19c91b6a..0000000000 +--- a/advisories/GLIBC-SA-2023-0001 ++++ /dev/null +@@ -1,14 +0,0 @@ +-printf: incorrect output for integers with thousands separator and width field +- +-When the printf family of functions is called with a format specifier +-that uses an (enable grouping) and a minimum width +-specifier, the resulting output could be larger than reasonably expected +-by a caller that computed a tight bound on the buffer size. The +-resulting larger than expected output could result in a buffer overflow +-in the printf family of functions. +- +-CVE-Id: CVE-2023-25139 +-Public-Date: 2023-02-02 +-Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37) +-Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38) +-Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4) +diff --git a/advisories/GLIBC-SA-2023-0002 b/advisories/GLIBC-SA-2023-0002 +deleted file mode 100644 +index 5122669a64..0000000000 +--- a/advisories/GLIBC-SA-2023-0002 ++++ /dev/null +@@ -1,15 +0,0 @@ +-getaddrinfo: Stack read overflow in no-aaaa mode +- +-If the system is configured in no-aaaa mode via /etc/resolv.conf, +-getaddrinfo is called for the AF_UNSPEC address family, and a DNS +-response is received over TCP that is larger than 2048 bytes, +-getaddrinfo may potentially disclose stack contents via the returned +-address data, or crash. +- +-CVE-Id: CVE-2023-4527 +-Public-Date: 2023-09-12 +-Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36) +-Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39) +-Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113) +-Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38) +-Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19) +diff --git a/advisories/GLIBC-SA-2023-0003 b/advisories/GLIBC-SA-2023-0003 +deleted file mode 100644 +index d3aef80348..0000000000 +--- a/advisories/GLIBC-SA-2023-0003 ++++ /dev/null +@@ -1,15 +0,0 @@ +-getaddrinfo: Potential use-after-free +- +-When an NSS plugin only implements the _gethostbyname2_r and +-_getcanonname_r callbacks, getaddrinfo could use memory that was freed +-during buffer resizing, potentially causing a crash or read or write to +-arbitrary memory. +- +-CVE-Id: CVE-2023-4806 +-Public-Date: 2023-09-12 +-Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39) +-Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) +-Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) +-Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) +-Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) +-Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) +diff --git a/advisories/GLIBC-SA-2023-0004 b/advisories/GLIBC-SA-2023-0004 +deleted file mode 100644 +index 5286a7aa54..0000000000 +--- a/advisories/GLIBC-SA-2023-0004 ++++ /dev/null +@@ -1,16 +0,0 @@ +-tunables: local privilege escalation through buffer overflow +- +-If a tunable of the form NAME=NAME=VAL is passed in the environment of a +-setuid program and NAME is valid, it may result in a buffer overflow, +-which could be exploited to achieve escalated privileges. This flaw was +-introduced in glibc 2.34. +- +-CVE-Id: CVE-2023-4911 +-Public-Date: 2023-10-03 +-Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34) +-Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39) +-Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423) +-Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274) +-Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118) +-Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45) +-Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27) +diff --git a/advisories/GLIBC-SA-2023-0005 b/advisories/GLIBC-SA-2023-0005 +deleted file mode 100644 +index cc4eb90b82..0000000000 +--- a/advisories/GLIBC-SA-2023-0005 ++++ /dev/null +@@ -1,18 +0,0 @@ +-getaddrinfo: DoS due to memory leak +- +-The fix for CVE-2023-4806 introduced a memory leak when an application +-calls getaddrinfo for AF_INET6 with AI_CANONNAME, AI_ALL and AI_V4MAPPED +-flags set. +- +-CVE-Id: CVE-2023-5156 +-Public-Date: 2023-09-25 +-Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) +-Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) +-Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) +-Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) +-Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) +-Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421) +-Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272) +-Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116) +-Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42) +-Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24) +diff --git a/advisories/GLIBC-SA-2024-0001 b/advisories/GLIBC-SA-2024-0001 +deleted file mode 100644 +index 28931c75ae..0000000000 +--- a/advisories/GLIBC-SA-2024-0001 ++++ /dev/null +@@ -1,15 +0,0 @@ +-syslog: Heap buffer overflow in __vsyslog_internal +- +-__vsyslog_internal did not handle a case where printing a SYSLOG_HEADER +-containing a long program name failed to update the required buffer +-size, leading to the allocation and overflow of a too-small buffer on +-the heap. +- +-CVE-Id: CVE-2023-6246 +-Public-Date: 2024-01-30 +-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) +-Fix-Commit: 6bd0e4efcc78f3c0115e5ea9739a1642807450da (2.39) +-Fix-Commit: 23514c72b780f3da097ecf33a793b7ba9c2070d2 (2.38-42) +-Fix-Commit: 97a4292aa4a2642e251472b878d0ec4c46a0e59a (2.37-57) +-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) +-Fix-Commit: d1a83b6767f68b3cb5b4b4ea2617254acd040c82 (2.36-126) +diff --git a/advisories/GLIBC-SA-2024-0002 b/advisories/GLIBC-SA-2024-0002 +deleted file mode 100644 +index 940bfcf2fc..0000000000 +--- a/advisories/GLIBC-SA-2024-0002 ++++ /dev/null +@@ -1,15 +0,0 @@ +-syslog: Heap buffer overflow in __vsyslog_internal +- +-__vsyslog_internal used the return value of snprintf/vsnprintf to +-calculate buffer sizes for memory allocation. If these functions (for +-any reason) failed and returned -1, the resulting buffer would be too +-small to hold output. +- +-CVE-Id: CVE-2023-6779 +-Public-Date: 2024-01-30 +-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) +-Fix-Commit: 7e5a0c286da33159d47d0122007aac016f3e02cd (2.39) +-Fix-Commit: d0338312aace5bbfef85e03055e1212dd0e49578 (2.38-43) +-Fix-Commit: 67062eccd9a65d7fda9976a56aeaaf6c25a80214 (2.37-58) +-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) +-Fix-Commit: 2bc9d7c002bdac38b5c2a3f11b78e309d7765b83 (2.36-127) +diff --git a/advisories/GLIBC-SA-2024-0003 b/advisories/GLIBC-SA-2024-0003 +deleted file mode 100644 +index b43a5150ab..0000000000 +--- a/advisories/GLIBC-SA-2024-0003 ++++ /dev/null +@@ -1,13 +0,0 @@ +-syslog: Integer overflow in __vsyslog_internal +- +-__vsyslog_internal calculated a buffer size by adding two integers, but +-did not first check if the addition would overflow. +- +-CVE-Id: CVE-2023-6780 +-Public-Date: 2024-01-30 +-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) +-Fix-Commit: ddf542da94caf97ff43cc2875c88749880b7259b (2.39) +-Fix-Commit: d37c2b20a4787463d192b32041c3406c2bd91de0 (2.38-44) +-Fix-Commit: 2b58cba076e912961ceaa5fa58588e4b10f791c0 (2.37-59) +-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) +-Fix-Commit: b9b7d6a27aa0632f334352fa400771115b3c69b7 (2.36-128) +diff --git a/advisories/GLIBC-SA-2024-0004 b/advisories/GLIBC-SA-2024-0004 +deleted file mode 100644 +index 08df2b3118..0000000000 +--- a/advisories/GLIBC-SA-2024-0004 ++++ /dev/null +@@ -1,28 +0,0 @@ +-ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence +- +-The iconv() function in the GNU C Library versions 2.39 and older may +-overflow the output buffer passed to it by up to 4 bytes when converting +-strings to the ISO-2022-CN-EXT character set, which may be used to +-crash an application or overwrite a neighbouring variable. +- +-ISO-2022-CN-EXT uses escape sequences to indicate character set changes +-(as specified by RFC 1922). While the SOdesignation has the expected +-bounds checks, neither SS2designation nor SS3designation have its; +-allowing a write overflow of 1, 2, or 3 bytes with fixed values: +-'$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'. +- +-CVE-Id: CVE-2024-2961 +-Public-Date: 2024-04-17 +-Vulnerable-Commit: 755104edc75c53f4a0e7440334e944ad3c6b32fc (2.1.93-169) +-Fix-Commit: f9dc609e06b1136bb0408be9605ce7973a767ada (2.40) +-Fix-Commit: 31da30f23cddd36db29d5b6a1c7619361b271fb4 (2.39-31) +-Fix-Commit: e1135387deded5d73924f6ca20c72a35dc8e1bda (2.38-66) +-Fix-Commit: 89ce64b269a897a7780e4c73a7412016381c6ecf (2.37-89) +-Fix-Commit: 4ed98540a7fd19f458287e783ae59c41e64df7b5 (2.36-164) +-Fix-Commit: 36280d1ce5e245aabefb877fe4d3c6cff95dabfa (2.35-315) +-Fix-Commit: a8b0561db4b9847ebfbfec20075697d5492a363c (2.34-459) +-Fix-Commit: ed4f16ff6bed3037266f1fa682ebd32a18fce29c (2.33-263) +-Fix-Commit: 682ad4c8623e611a971839990ceef00346289cc9 (2.32-140) +-Fix-Commit: 3703c32a8d304c1ee12126134ce69be965f38000 (2.31-154) +- +-Reported-By: Charles Fol +diff --git a/advisories/GLIBC-SA-2024-0005 b/advisories/GLIBC-SA-2024-0005 +deleted file mode 100644 +index a59596610a..0000000000 +--- a/advisories/GLIBC-SA-2024-0005 ++++ /dev/null +@@ -1,22 +0,0 @@ +-nscd: Stack-based buffer overflow in netgroup cache +- +-If the Name Service Cache Daemon's (nscd) fixed size cache is exhausted +-by client requests then a subsequent client request for netgroup data +-may result in a stack-based buffer overflow. This flaw was introduced +-in glibc 2.15 when the cache was added to nscd. +- +-This vulnerability is only present in the nscd binary. +- +-CVE-Id: CVE-2024-33599 +-Public-Date: 2024-04-23 +-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) +-Fix-Commit: 69c58d5ef9f584ea198bd00f7964d364d0e6b921 (2.31-155) +-Fix-Commit: a77064893bfe8a701770e2f53a4d33805bc47a5a (2.32-141) +-Fix-Commit: 5c75001a96abcd50cbdb74df24c3f013188d076e (2.33-264) +-Fix-Commit: 52f73e5c4e29b14e79167272297977f360ae1e97 (2.34-460) +-Fix-Commit: 7a95873543ce225376faf13bb71c43dea6d24f86 (2.35-316) +-Fix-Commit: caa3151ca460bdd9330adeedd68c3112d97bffe4 (2.36-165) +-Fix-Commit: f75c298e747b2b8b41b1c2f551c011a52c41bfd1 (2.37-91) +-Fix-Commit: 5968aebb86164034b8f8421b4abab2f837a5bdaf (2.38-72) +-Fix-Commit: 1263d583d2e28afb8be53f8d6922f0842036f35d (2.39-35) +-Fix-Commit: 87801a8fd06db1d654eea3e4f7626ff476a9bdaa (2.40) +diff --git a/advisories/GLIBC-SA-2024-0006 b/advisories/GLIBC-SA-2024-0006 +deleted file mode 100644 +index d44148d3d9..0000000000 +--- a/advisories/GLIBC-SA-2024-0006 ++++ /dev/null +@@ -1,32 +0,0 @@ +-nscd: Null pointer crash after notfound response +- +-If the Name Service Cache Daemon's (nscd) cache fails to add a not-found +-netgroup response to the cache, the client request can result in a null +-pointer dereference. This flaw was introduced in glibc 2.15 when the +-cache was added to nscd. +- +-This vulnerability is only present in the nscd binary. +- +-CVE-Id: CVE-2024-33600 +-Public-Date: 2024-04-24 +-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) +-Fix-Commit: b048a482f088e53144d26a61c390bed0210f49f2 (2.40) +-Fix-Commit: 7835b00dbce53c3c87bbbb1754a95fb5e58187aa (2.40) +-Fix-Commit: c99f886de54446cd4447db6b44be93dabbdc2f8b (2.39-37) +-Fix-Commit: 5a508e0b508c8ad53bd0d2fb48fd71b242626341 (2.39-36) +-Fix-Commit: 2ae9446c1b7a3064743b4a51c0bbae668ee43e4c (2.38-74) +-Fix-Commit: 541ea5172aa658c4bd5c6c6d6fd13903c3d5bb0a (2.38-73) +-Fix-Commit: a8070b31043c7585c36ba68a74298c4f7af075c3 (2.37-93) +-Fix-Commit: 5eea50c4402e39588de98aa1d4469a79774703d4 (2.37-92) +-Fix-Commit: f205b3af56740e3b014915b1bd3b162afe3407ef (2.36-167) +-Fix-Commit: c34f470a615b136170abd16142da5dd0c024f7d1 (2.36-166) +-Fix-Commit: bafadc589fbe21ae330e8c2af74db9da44a17660 (2.35-318) +-Fix-Commit: 4370bef52b0f3f3652c6aa13d7a9bb3ac079746d (2.35-317) +-Fix-Commit: 1f94122289a9bf7dba573f5d60327aaa2b85cf2e (2.34-462) +-Fix-Commit: 966d6ac9e40222b84bb21674cc4f83c8d72a5a26 (2.34-461) +-Fix-Commit: e3eef1b8fbdd3a7917af466ca9c4b7477251ca79 (2.33-266) +-Fix-Commit: f20a8d696b13c6261b52a6434899121f8b19d5a7 (2.33-265) +-Fix-Commit: be602180146de37582a3da3a0caa4b719645de9c (2.32-143) +-Fix-Commit: 394eae338199078b7961b051c191539870742d7b (2.32-142) +-Fix-Commit: 8d7949183760170c61e55def723c1d8050187874 (2.31-157) +-Fix-Commit: 304ce5fe466c4762b21b36c26926a4657b59b53e (2.31-156) +diff --git a/advisories/GLIBC-SA-2024-0007 b/advisories/GLIBC-SA-2024-0007 +deleted file mode 100644 +index b6928fa27a..0000000000 +--- a/advisories/GLIBC-SA-2024-0007 ++++ /dev/null +@@ -1,28 +0,0 @@ +-nscd: netgroup cache may terminate daemon on memory allocation failure +- +-The Name Service Cache Daemon's (nscd) netgroup cache uses xmalloc or +-xrealloc and these functions may terminate the process due to a memory +-allocation failure resulting in a denial of service to the clients. The +-flaw was introduced in glibc 2.15 when the cache was added to nscd. +- +-This vulnerability is only present in the nscd binary. +- +-Subsequent refactoring of the netgroup cache only added more uses of +-xmalloc and xrealloc. Uses of xmalloc and xrealloc in other parts of +-nscd only occur during startup of the daemon and so are not affected by +-client requests that could trigger an out of memory followed by +-termination. +- +-CVE-Id: CVE-2024-33601 +-Public-Date: 2024-04-24 +-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) +-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) +-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) +-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) +-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) +-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) +-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) +-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) +-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) +-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) +-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) +diff --git a/advisories/GLIBC-SA-2024-0008 b/advisories/GLIBC-SA-2024-0008 +deleted file mode 100644 +index d93e2a6f0b..0000000000 +--- a/advisories/GLIBC-SA-2024-0008 ++++ /dev/null +@@ -1,26 +0,0 @@ +-nscd: netgroup cache assumes NSS callback uses in-buffer strings +- +-The Name Service Cache Daemon's (nscd) netgroup cache can corrupt memory +-when the NSS callback does not store all strings in the provided buffer. +-The flaw was introduced in glibc 2.15 when the cache was added to nscd. +- +-This vulnerability is only present in the nscd binary. +- +-There is no guarantee from the NSS callback API that the returned +-strings are all within the buffer. However, the netgroup cache code +-assumes that the NSS callback uses in-buffer strings and if it doesn't +-the buffer resizing logic could lead to potential memory corruption. +- +-CVE-Id: CVE-2024-33602 +-Public-Date: 2024-04-24 +-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) +-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) +-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) +-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) +-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) +-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) +-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) +-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) +-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) +-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) +-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) +diff --git a/advisories/GLIBC-SA-2025-0001 b/advisories/GLIBC-SA-2025-0001 +deleted file mode 100644 +index b053d32e91..0000000000 +--- a/advisories/GLIBC-SA-2025-0001 ++++ /dev/null +@@ -1,40 +0,0 @@ +-assert: Buffer overflow when printing assertion failure message +- +-When the assert() function fails, it does not allocate enough space for the +-assertion failure message string and size information, which may lead to a +-buffer overflow if the message string size aligns to page size. +- +-This bug can be triggered when an assertion in a program fails. The assertion +-failure message is allocated to allow developers to see this failure in core +-dumps and it typically includes, in addition to the invariant assertion +-string and function name, the name of the program. If the name of the failing +-program is user controlled, for example on a local system, this could allow an +-attacker to control the assertion failure to trigger this buffer overflow. +- +-The only viable vector for exploitation of this bug is local, if a setuid +-program exists that has an existing bug that results in an assertion failure. +-No such program has been discovered at the time of publishing this advisory, +-but the presence of custom setuid programs, although strongly discouraged as a +-security practice, cannot be discounted. +- +-CVE-Id: CVE-2025-0395 +-Public-Date: 2025-01-22 +-Vulnerable-Commit: f8a3b5bf8fa1d0c43d2458e03cc109a04fdef194 (2.13-175) +-Fix-Commit: 68ee0f704cb81e9ad0a78c644a83e1e9cd2ee578 (2.41) +-Fix-Commit: cdb9ba84191ce72e86346fb8b1d906e7cd930ea2 (2.42) +-Fix-Commit: 69fda28279b497bd405fdd442a6d8e4d3d5f681b (2.41-7) +-Fix-Commit: 7d4b6bcae91f29d7b4daf15bab06b66cf1d2217c (2.40-66) +-Fix-Commit: d6c156c326999f144cb5b73d29982108d549ad8a (2.40-71) +-Fix-Commit: 808a84a8b81468b517a4d721fdc62069cb8c211f (2.39-146) +-Fix-Commit: f6d48470aef9264d2d56f4c4533eb76db7f9c2e4 (2.39-150) +-Fix-Commit: c32fd59314c343db88c3ea4a203870481d33c3d2 (2.38-122) +-Fix-Commit: f984e2d7e8299726891a1a497a3c36cd5542a0bf (2.38-124) +-Fix-Commit: a3d7865b098a3a67c44f7812208d9ce4718873ba (2.37-143) +-Fix-Commit: b989519fe1683c204ac24ec92830e3fe3bfaccad (2.37-146) +-Fix-Commit: 7971add7ee4171fdd8dfd17e7c04c4ed77a18845 (2.36-216) +-Fix-Commit: 0487893d5c5bc6710d83d7c3152d888a0339559e (2.36-219) +-Fix-Commit: 8b5d4be762419c4f6176261c6fea40ac559b88dc (2.35-370) +-Fix-Commit: 8b3d09dc0d350191985f9d291cc30ce96f034b49 (2.35-373) +-Fix-Commit: df4e1f4a5096b385c9bcc94424cf2eaa227b3761 (2.34-500) +-Fix-Commit: 31eb872cb21449832ab47ad5db83281d240e1d03 (2.34-503) +-Reported-By: Qualys Security Advisory +diff --git a/advisories/GLIBC-SA-2025-0002 b/advisories/GLIBC-SA-2025-0002 +deleted file mode 100644 +index 161da13dd4..0000000000 +--- a/advisories/GLIBC-SA-2025-0002 ++++ /dev/null +@@ -1,23 +0,0 @@ +-elf: static setuid binary dlopen may incorrectly search LD_LIBRARY_PATH +- +-A statically linked setuid binary that calls dlopen (including internal +-dlopen calls after setlocale or calls to NSS functions such as getaddrinfo) +-may incorrectly search LD_LIBRARY_PATH to determine which library to load, +-leading to the execution of library code that is attacker controlled. +- +-The only viable vector for exploitation of this bug is local, if a static +-setuid program exists, and that program calls dlopen, then it may search +-LD_LIBRARY_PATH to locate the SONAME to load. No such program has been +-discovered at the time of publishing this advisory, but the presence of +-custom setuid programs, although strongly discouraged as a security +-practice, cannot be discounted. +- +-CVE-Id: CVE-2025-4802 +-Public-Date: 2025-05-16 +-Vulnerable-Commit: 10e93d968716ab82931d593bada121c17c0a4b93 (2.27) +-Fix-Commit: 5451fa962cd0a90a0e2ec1d8910a559ace02bba0 (2.39) +-Fix-Commit: 3be3728df2f1912c80abd3288bc6e3a25ad679e4 (2.38-132) +-Fix-Commit: 7403ede2d7752e59e0c47d5d33d73c2bf850e7be (2.37-154) +-Fix-Commit: 2ef7850279b2931caf6d6d6743ebaa91839e1cf7 (2.36-227) +-Fix-Commit: 621c65ccf12ddd415ceeb2234423bd1acd0fabb3 (2.35-387) +-Fix-Commit: 35018c0fd20eac9ceaf60060fed2745b3177359d (2.34-517) +diff --git a/advisories/GLIBC-SA-2025-0003 b/advisories/GLIBC-SA-2025-0003 +deleted file mode 100644 +index 2adeb3ce00..0000000000 +--- a/advisories/GLIBC-SA-2025-0003 ++++ /dev/null +@@ -1,30 +0,0 @@ +-power10: strcmp fails to save and restore nonvolatile vector registers +- +-The Power 10 implementation of strcmp in +-sysdeps/powerpc/powerpc64/le/power10/strcmp.S failed to save/restore +-nonvolatile vector registers in the 32-byte aligned loop path. This +-results in callers reading content from those registers in a different +-context, potentially altering program logic. +- +-There could be a program context where a user controlled string could +-leak through strcmp into program code, thus altering its logic. There +-is also a potential for sensitive strings passed into strcmp leaking +-through the clobbered registers into parts of the calling program that +-should otherwise not have had access to those strings. +- +-The impact of this flaw is limited to applications running on Power 10 +-hardware that use the nonvolatile vector registers, i.e. v20 to v31 +-assuming that they have been treated in accordance with the OpenPower +-psABI. It is possible to work around the issue for those specific +-applications by setting the glibc.cpu.hwcaps tunable to "-arch_3_1" like +-so: +- +- export GLIBC_TUNABLES=glibc.cpu.hwcaps=-arch_3_1 +- +-CVE-Id: CVE-2025-5702 +-Public-Date: 2025-06-04 +-Vulnerable-Commit: 3367d8e180848030d1646f088759f02b8dfe0d6f (2.39) +-Fix-Commit: 15808c77b35319e67ee0dc8f984a9a1a434701bc (2.42) +-Fix-Commit: 0c76c951620f9e12df2a89b2c684878b55bb6795 (2.41-60) +-Fix-Commit: 7e12550b8e3a11764a4a9090ce6bd3fc23fc8a8e (2.40-139) +-Fix-Commit: 06a70769fd0b2e1f2a3085ad50ab620282bd77b3 (2.39-209) +diff --git a/advisories/GLIBC-SA-2025-0004 b/advisories/GLIBC-SA-2025-0004 +deleted file mode 100644 +index 9409ca27c4..0000000000 +--- a/advisories/GLIBC-SA-2025-0004 ++++ /dev/null +@@ -1,29 +0,0 @@ +-power10: strncmp fails to save and restore nonvolatile vector registers +- +-The Power 10 implementation of strncmp in +-sysdeps/powerpc/powerpc64/le/power10/strncmp.S failed to save/restore +-nonvolatile vector registers in the 32-byte aligned loop path. This +-results in callers reading content from those registers in a different +-context, potentially altering program logic. +- +-There could be a program context where a user controlled string could +-leak through strncmp into program code, thus altering its logic. There +-is also a potential for sensitive strings passed into strncmp leaking +-through the clobbered registers into parts of the calling program that +-should otherwise not have had access to those strings. +- +-The impact of this flaw is limited to applications running on Power 10 +-hardware that use the nonvolatile vector registers, i.e. v20 to v31 +-assuming that they have been treated in accordance with the OpenPower +-psABI. It is possible to work around the issue for those specific +-applications by setting the glibc.cpu.hwcaps tunable to "-arch_3_1" like +-so: +- +- export GLIBC_TUNABLES=glibc.cpu.hwcaps=-arch_3_1 +- +-CVE-Id: CVE-2025-5745 +-Public-Date: 2025-06-05 +-Vulnerable-Commit: 23f0d81608d0ca6379894ef81670cf30af7fd081 (2.40) +-Fix-Commit: 63c60101ce7c5eac42be90f698ba02099b41b965 (2.42) +-Fix-Commit: 84bdbf8a6f2fdafd3661489dbb7f79835a52da82 (2.41-57) +-Fix-Commit: 42a5a940c974d02540c8da26d6374c744d148cb9 (2.40-136) +diff --git a/advisories/GLIBC-SA-2025-0005 b/advisories/GLIBC-SA-2025-0005 +deleted file mode 100644 +index 8bcccc59a5..0000000000 +--- a/advisories/GLIBC-SA-2025-0005 ++++ /dev/null +@@ -1,14 +0,0 @@ +-posix: Fix double-free after allocation failure in regcomp +- +-The regcomp function in the GNU C library version from 2.4 to 2.41 is +-subject to a double free if some previous allocation fails. It can be +-accomplished either by a malloc failure or by using an interposed +-malloc that injects random malloc failures. The double free can allow +-buffer manipulation depending of how the regex is constructed. +-This issue affects all architectures and ABIs supported by the GNU C +-library. +- +-CVE-Id: CVE-2025-8058 +-Public-Date: 2025-07-22 +-Vulnerable-Commit: 963d8d782fc98fb6dc3a66f0068795f9920c269d (2.3.3-1596) +-Fix-Commit: 7ea06e994093fa0bcca0d0ee2c1db271d8d7885d (2.42) +diff --git a/advisories/README b/advisories/README +deleted file mode 100644 +index b8f8a829ca..0000000000 +--- a/advisories/README ++++ /dev/null +@@ -1,77 +0,0 @@ +-GNU C Library Security Advisory Format +-====================================== +- +-Security advisories in this directory follow a simple git commit log +-format, with a heading and free-format description augmented with tags +-to allow parsing key information. References to code changes are +-specific to the glibc repository and follow a specific format: +- +- Tag-name: (release-version) +- +-The indicates a specific commit in the repository. The +-release-version indicates the publicly consumable release in which this +-commit is known to exist. The release-version is derived from the +-git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and +-is of the form 2.34-NNN. If the -NNN suffix is absent, it means that +-the change is in that release tarball, otherwise the change is on the +-release/2.YY/master branch and not in any released tarball. +- +-The following tags are currently being used: +- +-CVE-Id: +-This is the CVE-Id assigned under the CVE Program +-(https://www.cve.org/). +- +-Public-Date: +-The date this issue became publicly known. +- +-Vulnerable-Commit: +-The commit that introduced this vulnerability. There could be multiple +-entries, one for each release branch in the glibc repository; the +-release-version portion of this tag should tell you which branch this is +-on. +- +-Fix-Commit: +-The commit that fixed this vulnerability. There could be multiple +-entries for each release branch in the glibc repository, indicating that +-all of those commits contributed to fixing that issue in each of those +-branches. +- +-Reported-By: +-The entity that reported this issue. There could be multiple entries, one for +-each reporter. +- +-Adding an Advisory +------------------- +- +-An advisory for a CVE needs to be added on the master branch in two steps: +- +-1. Add the text of the advisory without any Fix-Commit tags along with +- the fix for the CVE. Add the Vulnerable-Commit tag, if applicable. +- The advisories directory does not exist in release branches, so keep +- the advisory text commit distinct from the code changes, to ease +- backports. Ask for the GLIBC-SA advisory number from the security +- team. +- +-2. Finish all backports on release branches and then back on the msater +- branch, add all commit refs to the advisory using the Fix-Commit +- tags. Don't bother adding the release-version subscript since the +- next step will overwrite it. +- +-3. Run the process-advisories.sh script in the scripts directory on the +- advisory: +- +- scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN +- +- (replace YYYY-NNNN with the actual advisory number). +- +-4. Verify the updated advisory and push the result. +- +-Getting a NEWS snippet from advisories +--------------------------------------- +- +-Run: +- +- scripts/process-advisories.sh news +- +-and copy the content into the NEWS file. + +commit 3ec4dd77f648da031bba4d3fa14825e057b5a40d +Author: Andreas K. Hüttel +Date: Mon Jul 28 23:39:48 2025 +0200 + + NEWS: add new section + + Signed-off-by: Andreas K. Hüttel + +diff --git a/NEWS b/NEWS +index f0b0e924a4..9cb8de11f9 100644 +--- a/NEWS ++++ b/NEWS +@@ -5,6 +5,12 @@ See the end for copying conditions. + Please send GNU C library bug reports via + using `glibc' in the "product" field. + ++Version 2.42.1 ++ ++The following bugs were resolved with this release: ++ ++ [insert bugs here] ++ + Version 2.42 + + Major new features: + +commit bc13db73937730401d592b33092db6df806d193e +Author: Sam James +Date: Mon Jul 28 21:55:30 2025 +0100 + + inet-fortified: fix namespace violation (bug 33227) + + We need to use __sz, not sz, as we do elsewhere. + + Reviewed-by: Florian Weimer + (cherry picked from commit 87afbd7a1ad9c1dd116921817fa97198171045db) + +diff --git a/inet/bits/inet-fortified.h b/inet/bits/inet-fortified.h +index 6738221a54..cc476ebcfd 100644 +--- a/inet/bits/inet-fortified.h ++++ b/inet/bits/inet-fortified.h +@@ -45,15 +45,15 @@ __NTH (inet_pton (int __af, + __fortify_clang_warning_only_if_bos0_lt + (4, __dst, "inet_pton called with destination buffer size less than 4") + { +- size_t sz = 0; ++ size_t __sz = 0; + if (__af == AF_INET) +- sz = sizeof (struct in_addr); ++ __sz = sizeof (struct in_addr); + else if (__af == AF_INET6) +- sz = sizeof (struct in6_addr); ++ __sz = sizeof (struct in6_addr); + else + return __inet_pton_alias (__af, __src, __dst); + +- return __glibc_fortify (inet_pton, sz, sizeof (char), ++ return __glibc_fortify (inet_pton, __sz, sizeof (char), + __glibc_objsize (__dst), + __af, __src, __dst); + }; + +commit fd18059c0fcf5568db3688da47403b663cf91c5e +Author: Davide Cavalca +Date: Thu Jul 31 17:32:58 2025 +0200 + + stdlib: resolve a double lock init issue after fork [BZ #32994] + + The __abort_fork_reset_child (introduced in + d40ac01cbbc66e6d9dbd8e3485605c63b2178251) call resets the lock after the + fork. This causes a DRD regression in valgrind + (https://bugs.kde.org/show_bug.cgi?id=503668), as it's effectively a + double initialization, despite it being actually ok in this case. As + suggested in https://sourceware.org/bugzilla/show_bug.cgi?id=32994#c2 + we replace it here with a memcpy of another initialized lock instead, + which makes valgrind happy. + + Reviewed-by: Florian Weimer + (cherry picked from commit d9a348d0927c7a1aec5caf3df3fcd36956b3eb23) + +diff --git a/NEWS b/NEWS +index 9cb8de11f9..4610b8bbc6 100644 +--- a/NEWS ++++ b/NEWS +@@ -9,7 +9,7 @@ Version 2.42.1 + + The following bugs were resolved with this release: + +- [insert bugs here] ++ [32994] stdlib: resolve a double lock init issue after fork + + Version 2.42 + +diff --git a/stdlib/abort.c b/stdlib/abort.c +index caa9e6dc04..904244a2fb 100644 +--- a/stdlib/abort.c ++++ b/stdlib/abort.c +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + + /* Try to get a machine dependent instruction which will make the +@@ -42,7 +43,10 @@ __libc_rwlock_define_initialized (static, lock); + void + __abort_fork_reset_child (void) + { +- __libc_rwlock_init (lock); ++ /* Reinitialize lock without calling pthread_rwlock_init, to ++ avoid a valgrind DRD false positive. */ ++ __libc_rwlock_define_initialized (, reset_lock); ++ memcpy (&lock, &reset_lock, sizeof (lock)); + } + + void + +commit 2fadee530155bae6682ab2965d6ff3a2fc9eced6 +Author: Florian Weimer +Date: Fri Aug 1 19:27:04 2025 +0200 + + elf: Extract rtld_setup_phdr function from dl_main + + Remove historic binutils reference from comment and update + how this data is used by applications. + + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 2cac9559e06044ba520e785c151fbbd25011865f) + +diff --git a/elf/rtld.c b/elf/rtld.c +index 493f9696ea..6fb900fb31 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -1239,6 +1239,37 @@ rtld_setup_main_map (struct link_map *main_map) + return has_interp; + } + ++/* Set up the program header information for the dynamic linker ++ itself. It can be accessed via _r_debug and dl_iterate_phdr ++ callbacks. */ ++static void ++rtld_setup_phdr (void) ++{ ++ /* Starting from binutils-2.23, the linker will define the magic ++ symbol __ehdr_start to point to our own ELF header if it is ++ visible in a segment that also includes the phdrs. */ ++ ++ const ElfW(Ehdr) *rtld_ehdr = &__ehdr_start; ++ assert (rtld_ehdr->e_ehsize == sizeof *rtld_ehdr); ++ assert (rtld_ehdr->e_phentsize == sizeof (ElfW(Phdr))); ++ ++ const ElfW(Phdr) *rtld_phdr = (const void *) rtld_ehdr + rtld_ehdr->e_phoff; ++ ++ _dl_rtld_map.l_phdr = rtld_phdr; ++ _dl_rtld_map.l_phnum = rtld_ehdr->e_phnum; ++ ++ ++ /* PT_GNU_RELRO is usually the last phdr. */ ++ size_t cnt = rtld_ehdr->e_phnum; ++ while (cnt-- > 0) ++ if (rtld_phdr[cnt].p_type == PT_GNU_RELRO) ++ { ++ _dl_rtld_map.l_relro_addr = rtld_phdr[cnt].p_vaddr; ++ _dl_rtld_map.l_relro_size = rtld_phdr[cnt].p_memsz; ++ break; ++ } ++} ++ + /* Adjusts the contents of the stack and related globals for the user + entry point. The ld.so processed skip_args arguments and bumped + _dl_argv and _dl_argc accordingly. Those arguments are removed from +@@ -1705,33 +1736,7 @@ dl_main (const ElfW(Phdr) *phdr, + ++GL(dl_ns)[LM_ID_BASE]._ns_nloaded; + ++GL(dl_load_adds); + +- /* Starting from binutils-2.23, the linker will define the magic symbol +- __ehdr_start to point to our own ELF header if it is visible in a +- segment that also includes the phdrs. If that's not available, we use +- the old method that assumes the beginning of the file is part of the +- lowest-addressed PT_LOAD segment. */ +- +- /* Set up the program header information for the dynamic linker +- itself. It is needed in the dl_iterate_phdr callbacks. */ +- const ElfW(Ehdr) *rtld_ehdr = &__ehdr_start; +- assert (rtld_ehdr->e_ehsize == sizeof *rtld_ehdr); +- assert (rtld_ehdr->e_phentsize == sizeof (ElfW(Phdr))); +- +- const ElfW(Phdr) *rtld_phdr = (const void *) rtld_ehdr + rtld_ehdr->e_phoff; +- +- _dl_rtld_map.l_phdr = rtld_phdr; +- _dl_rtld_map.l_phnum = rtld_ehdr->e_phnum; +- +- +- /* PT_GNU_RELRO is usually the last phdr. */ +- size_t cnt = rtld_ehdr->e_phnum; +- while (cnt-- > 0) +- if (rtld_phdr[cnt].p_type == PT_GNU_RELRO) +- { +- _dl_rtld_map.l_relro_addr = rtld_phdr[cnt].p_vaddr; +- _dl_rtld_map.l_relro_size = rtld_phdr[cnt].p_memsz; +- break; +- } ++ rtld_setup_phdr (); + + /* Add the dynamic linker to the TLS list if it also uses TLS. */ + if (_dl_rtld_map.l_tls_blocksize != 0) + +commit 5e298d2d937b6da06500478be956abeb24357e05 +Author: Florian Weimer +Date: Fri Aug 1 19:27:35 2025 +0200 + + elf: Handle ld.so with LOAD segment gaps in _dl_find_object (bug 31943) + + Detect if ld.so not contiguous and handle that case in _dl_find_object. + Set l_find_object_processed even for initially loaded link maps, + otherwise dlopen of an initially loaded object adds it to + _dlfo_loaded_mappings (where maps are expected to be contiguous), + in addition to _dlfo_nodelete_mappings. + + Test elf/tst-link-map-contiguous-ldso iterates over the loader + image, reading every word to make sure memory is actually mapped. + It only does that if the l_contiguous flag is set for the link map. + Otherwise, it finds gaps with mmap and checks that _dl_find_object + does not return the ld.so mapping for them. + + The test elf/tst-link-map-contiguous-main does the same thing for + the libc.so shared object. This only works if the kernel loaded + the main program because the glibc dynamic loader may fill + the gaps with PROT_NONE mappings in some cases, making it contiguous, + but accesses to individual words may still fault. + + Test elf/tst-link-map-contiguous-libc is again slightly different + because the dynamic loader always fills the gaps with PROT_NONE + mappings, so a different form of probing has to be used. + + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 20681be149b9eb1b6c1f4246bf4bd801221c86cd) + +diff --git a/NEWS b/NEWS +index 4610b8bbc6..cbe11ac95b 100644 +--- a/NEWS ++++ b/NEWS +@@ -9,6 +9,7 @@ Version 2.42.1 + + The following bugs were resolved with this release: + ++ [31943] _dl_find_object can fail if ld.so contains gaps between load segments + [32994] stdlib: resolve a double lock init issue after fork + + Version 2.42 +diff --git a/elf/Makefile b/elf/Makefile +index 48aa0b57e5..3a5596e2bb 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -543,6 +543,8 @@ tests-internal += \ + tst-dl_find_object-threads \ + tst-dlmopen2 \ + tst-hash-collision3 \ ++ tst-link-map-contiguous-ldso \ ++ tst-link-map-contiguous-libc \ + tst-ptrguard1 \ + tst-stackguard1 \ + tst-tls-surplus \ +@@ -554,6 +556,10 @@ tests-internal += \ + unload2 \ + # tests-internal + ++ifeq ($(build-hardcoded-path-in-tests),yes) ++tests-internal += tst-link-map-contiguous-main ++endif ++ + tests-container += \ + tst-dlopen-self-container \ + tst-dlopen-tlsmodid-container \ +diff --git a/elf/dl-find_object.c b/elf/dl-find_object.c +index 1e76373292..c9f4c1c8d1 100644 +--- a/elf/dl-find_object.c ++++ b/elf/dl-find_object.c +@@ -465,6 +465,37 @@ _dl_find_object (void *pc1, struct dl_find_object *result) + } + rtld_hidden_def (_dl_find_object) + ++/* Subroutine of _dlfo_process_initial to split out noncontigous link ++ maps. NODELETE is the number of used _dlfo_nodelete_mappings ++ elements. It is incremented as needed, and the new NODELETE value ++ is returned. */ ++static size_t ++_dlfo_process_initial_noncontiguous_map (struct link_map *map, ++ size_t nodelete) ++{ ++ struct dl_find_object_internal dlfo; ++ _dl_find_object_from_map (map, &dlfo); ++ ++ /* PT_LOAD segments for a non-contiguous link map are added to the ++ non-closeable mappings. */ ++ const ElfW(Phdr) *ph = map->l_phdr; ++ const ElfW(Phdr) *ph_end = map->l_phdr + map->l_phnum; ++ for (; ph < ph_end; ++ph) ++ if (ph->p_type == PT_LOAD) ++ { ++ if (_dlfo_nodelete_mappings != NULL) ++ { ++ /* Second pass only. */ ++ _dlfo_nodelete_mappings[nodelete] = dlfo; ++ ElfW(Addr) start = ph->p_vaddr + map->l_addr; ++ _dlfo_nodelete_mappings[nodelete].map_start = start; ++ _dlfo_nodelete_mappings[nodelete].map_end = start + ph->p_memsz; ++ } ++ ++nodelete; ++ } ++ return nodelete; ++} ++ + /* _dlfo_process_initial is called twice. First to compute the array + sizes from the initial loaded mappings. Second to fill in the + bases and infos arrays with the (still unsorted) data. Returns the +@@ -476,29 +507,8 @@ _dlfo_process_initial (void) + + size_t nodelete = 0; + if (!main_map->l_contiguous) +- { +- struct dl_find_object_internal dlfo; +- _dl_find_object_from_map (main_map, &dlfo); +- +- /* PT_LOAD segments for a non-contiguous are added to the +- non-closeable mappings. */ +- for (const ElfW(Phdr) *ph = main_map->l_phdr, +- *ph_end = main_map->l_phdr + main_map->l_phnum; +- ph < ph_end; ++ph) +- if (ph->p_type == PT_LOAD) +- { +- if (_dlfo_nodelete_mappings != NULL) +- { +- /* Second pass only. */ +- _dlfo_nodelete_mappings[nodelete] = dlfo; +- _dlfo_nodelete_mappings[nodelete].map_start +- = ph->p_vaddr + main_map->l_addr; +- _dlfo_nodelete_mappings[nodelete].map_end +- = _dlfo_nodelete_mappings[nodelete].map_start + ph->p_memsz; +- } +- ++nodelete; +- } +- } ++ /* Contiguous case already handled in _dl_find_object_init. */ ++ nodelete = _dlfo_process_initial_noncontiguous_map (main_map, nodelete); + + size_t loaded = 0; + for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns) +@@ -510,11 +520,18 @@ _dlfo_process_initial (void) + /* lt_library link maps are implicitly NODELETE. */ + if (l->l_type == lt_library || l->l_nodelete_active) + { +- if (_dlfo_nodelete_mappings != NULL) +- /* Second pass only. */ +- _dl_find_object_from_map +- (l, _dlfo_nodelete_mappings + nodelete); +- ++nodelete; ++ /* The kernel may have loaded ld.so with gaps. */ ++ if (!l->l_contiguous && is_rtld_link_map (l)) ++ nodelete ++ = _dlfo_process_initial_noncontiguous_map (l, nodelete); ++ else ++ { ++ if (_dlfo_nodelete_mappings != NULL) ++ /* Second pass only. */ ++ _dl_find_object_from_map ++ (l, _dlfo_nodelete_mappings + nodelete); ++ ++nodelete; ++ } + } + else if (l->l_type == lt_loaded) + { +@@ -764,7 +781,6 @@ _dl_find_object_update_1 (struct link_map **loaded, size_t count) + /* Prefer newly loaded link map. */ + assert (loaded_index1 > 0); + _dl_find_object_from_map (loaded[loaded_index1 - 1], dlfo); +- loaded[loaded_index1 - 1]->l_find_object_processed = 1; + --loaded_index1; + } + +diff --git a/elf/dl-find_object.h b/elf/dl-find_object.h +index 9aa2439eaa..d9d75c4ad9 100644 +--- a/elf/dl-find_object.h ++++ b/elf/dl-find_object.h +@@ -94,7 +94,7 @@ _dl_find_object_to_external (struct dl_find_object_internal *internal, + } + + /* Extract the object location data from a link map and writes it to +- *RESULT using relaxed MO stores. */ ++ *RESULT using relaxed MO stores. Set L->l_find_object_processed. */ + static void __attribute__ ((unused)) + _dl_find_object_from_map (struct link_map *l, + struct dl_find_object_internal *result) +@@ -141,8 +141,11 @@ _dl_find_object_from_map (struct link_map *l, + break; + } + if (read_seg == 3) +- return; ++ goto done; + } ++ ++ done: ++ l->l_find_object_processed = 1; + } + + /* Called by the dynamic linker to set up the data structures for the +diff --git a/elf/rtld.c b/elf/rtld.c +index 6fb900fb31..ef4d96c053 100644 +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -1241,7 +1241,7 @@ rtld_setup_main_map (struct link_map *main_map) + + /* Set up the program header information for the dynamic linker + itself. It can be accessed via _r_debug and dl_iterate_phdr +- callbacks. */ ++ callbacks, and it is used by _dl_find_object. */ + static void + rtld_setup_phdr (void) + { +@@ -1259,6 +1259,29 @@ rtld_setup_phdr (void) + _dl_rtld_map.l_phnum = rtld_ehdr->e_phnum; + + ++ _dl_rtld_map.l_contiguous = 1; ++ /* The linker may not have produced a contiguous object. The kernel ++ will load the object with actual gaps (unlike the glibc loader ++ for shared objects, which always produces a contiguous mapping). ++ See similar logic in rtld_setup_main_map above. */ ++ { ++ ElfW(Addr) expected_load_address = 0; ++ for (const ElfW(Phdr) *ph = rtld_phdr; ph < &rtld_phdr[rtld_ehdr->e_phnum]; ++ ++ph) ++ if (ph->p_type == PT_LOAD) ++ { ++ ElfW(Addr) mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); ++ if (_dl_rtld_map.l_contiguous && expected_load_address != 0 ++ && expected_load_address != mapstart) ++ _dl_rtld_map.l_contiguous = 0; ++ ElfW(Addr) allocend = ph->p_vaddr + ph->p_memsz; ++ /* The next expected address is the page following this load ++ segment. */ ++ expected_load_address = ((allocend + GLRO(dl_pagesize) - 1) ++ & ~(GLRO(dl_pagesize) - 1)); ++ } ++ } ++ + /* PT_GNU_RELRO is usually the last phdr. */ + size_t cnt = rtld_ehdr->e_phnum; + while (cnt-- > 0) +diff --git a/elf/tst-link-map-contiguous-ldso.c b/elf/tst-link-map-contiguous-ldso.c +new file mode 100644 +index 0000000000..04de808bb2 +--- /dev/null ++++ b/elf/tst-link-map-contiguous-ldso.c +@@ -0,0 +1,98 @@ ++/* Check that _dl_find_object behavior matches up with gaps. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int ++do_test (void) ++{ ++ struct link_map *l = xdlopen (LD_SO, RTLD_NOW); ++ if (!l->l_contiguous) ++ { ++ puts ("info: ld.so link map is not contiguous"); ++ ++ /* Try to find holes by probing with mmap. */ ++ int pagesize = getpagesize (); ++ bool gap_found = false; ++ ElfW(Addr) addr = l->l_map_start; ++ TEST_COMPARE (addr % pagesize, 0); ++ while (addr < l->l_map_end) ++ { ++ void *expected = (void *) addr; ++ void *ptr = xmmap (expected, 1, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE | MAP_ANONYMOUS, -1); ++ struct dl_find_object dlfo; ++ int dlfo_ret = _dl_find_object (expected, &dlfo); ++ if (ptr == expected) ++ { ++ if (dlfo_ret < 0) ++ { ++ TEST_COMPARE (dlfo_ret, -1); ++ printf ("info: hole without mapping data found at %p\n", ptr); ++ } ++ else ++ FAIL ("object \"%s\" found in gap at %p", ++ dlfo.dlfo_link_map->l_name, ptr); ++ gap_found = true; ++ } ++ else if (dlfo_ret == 0) ++ { ++ if ((void *) dlfo.dlfo_link_map != (void *) l) ++ { ++ printf ("info: object \"%s\" found at %p\n", ++ dlfo.dlfo_link_map->l_name, ptr); ++ gap_found = true; ++ } ++ } ++ else ++ TEST_COMPARE (dlfo_ret, -1); ++ xmunmap (ptr, 1); ++ addr += pagesize; ++ } ++ if (!gap_found) ++ FAIL ("no ld.so gap found"); ++ } ++ else ++ { ++ puts ("info: ld.so link map is contiguous"); ++ ++ /* Assert that ld.so is truly contiguous in memory. */ ++ volatile long int *p = (volatile long int *) l->l_map_start; ++ volatile long int *end = (volatile long int *) l->l_map_end; ++ while (p < end) ++ { ++ *p; ++ ++p; ++ } ++ } ++ ++ xdlclose (l); ++ ++ return 0; ++} ++ ++#include +diff --git a/elf/tst-link-map-contiguous-libc.c b/elf/tst-link-map-contiguous-libc.c +new file mode 100644 +index 0000000000..eb5728c765 +--- /dev/null ++++ b/elf/tst-link-map-contiguous-libc.c +@@ -0,0 +1,57 @@ ++/* Check that the entire libc.so program image is readable if contiguous. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int ++do_test (void) ++{ ++ struct link_map *l = xdlopen (LIBC_SO, RTLD_NOW); ++ ++ /* The dynamic loader fills holes with PROT_NONE mappings. */ ++ if (!l->l_contiguous) ++ FAIL_EXIT1 ("libc.so link map is not contiguous"); ++ ++ /* Direct probing does not work because not everything is readable ++ due to PROT_NONE mappings. */ ++ int pagesize = getpagesize (); ++ ElfW(Addr) addr = l->l_map_start; ++ TEST_COMPARE (addr % pagesize, 0); ++ while (addr < l->l_map_end) ++ { ++ void *expected = (void *) addr; ++ void *ptr = xmmap (expected, 1, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE | MAP_ANONYMOUS, -1); ++ if (ptr == expected) ++ FAIL ("hole in libc.so memory image after %lu bytes", ++ (unsigned long int) (addr - l->l_map_start)); ++ xmunmap (ptr, 1); ++ addr += pagesize; ++ } ++ ++ xdlclose (l); ++ ++ return 0; ++} ++#include +diff --git a/elf/tst-link-map-contiguous-main.c b/elf/tst-link-map-contiguous-main.c +new file mode 100644 +index 0000000000..2d1a054f0f +--- /dev/null ++++ b/elf/tst-link-map-contiguous-main.c +@@ -0,0 +1,45 @@ ++/* Check that the entire main program image is readable if contiguous. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++ ++static int ++do_test (void) ++{ ++ struct link_map *l = xdlopen ("", RTLD_NOW); ++ if (!l->l_contiguous) ++ FAIL_UNSUPPORTED ("main link map is not contiguous"); ++ ++ /* This check only works if the kernel loaded the main program. The ++ dynamic loader replaces gaps with PROT_NONE mappings, resulting ++ in faults. */ ++ volatile long int *p = (volatile long int *) l->l_map_start; ++ volatile long int *end = (volatile long int *) l->l_map_end; ++ while (p < end) ++ { ++ *p; ++ ++p; ++ } ++ ++ xdlclose (l); ++ ++ return 0; ++} ++#include + +commit b38f3f60d5b157edcf4d8bd1fd3ed02d417889e0 +Author: Adhemerval Zanella +Date: Fri Aug 1 15:00:25 2025 -0300 + + nptl: Fix SYSCALL_CANCEL for return values larger than INT_MAX (BZ 33245) + + The SYSCALL_CANCEL calls __syscall_cancel, which in turn + calls __internal_syscall_cancel with an 'int' return instead of the + expected 'long int'. This causes issues with syscalls that return + values larger than INT_MAX, such as copy_file_range [1]. + + Checked on x86_64-linux-gnu. + + [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79139 + + Reviewed-by: Andreas K. Huettel + (cherry picked from commit 7107bebf19286f42dcb0a97581137a5893c16206) + +diff --git a/NEWS b/NEWS +index cbe11ac95b..1d04bdfef8 100644 +--- a/NEWS ++++ b/NEWS +@@ -11,6 +11,7 @@ The following bugs were resolved with this release: + + [31943] _dl_find_object can fail if ld.so contains gaps between load segments + [32994] stdlib: resolve a double lock init issue after fork ++ [33245] nptl: nptl: error in internal cancellation syscall handling + + Version 2.42 + +diff --git a/nptl/cancellation.c b/nptl/cancellation.c +index 156e63dcf0..bed0383a23 100644 +--- a/nptl/cancellation.c ++++ b/nptl/cancellation.c +@@ -72,8 +72,8 @@ __syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a5, __syscall_arg_t a6, + __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t nr) + { +- int r = __internal_syscall_cancel (a1, a2, a3, a4, a5, a6, +- __SYSCALL_CANCEL7_ARG nr); ++ long int r = __internal_syscall_cancel (a1, a2, a3, a4, a5, a6, ++ __SYSCALL_CANCEL7_ARG nr); + return __glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (r)) + ? SYSCALL_ERROR_LABEL (INTERNAL_SYSCALL_ERRNO (r)) + : r; + +commit 9d5bf9c17db0f35268cd798660c8bbeea1f4071d +Author: H.J. Lu +Date: Sat Jul 19 07:43:26 2025 -0700 + + Delete temporary files in support_subprocess + + Call support_delete_temp_files to delete temporary files before exit in + support_subprocess. + + This partially fixes BZ #33182. + + Signed-off-by: H.J. Lu + Reviewed-by: Adhemerval Zanella + (cherry picked from commit d27b1a71cd424710813bd3d81afb32a36470d643) + +diff --git a/support/support_subprocess.c b/support/support_subprocess.c +index be00dde3a7..8bf9a33ea2 100644 +--- a/support/support_subprocess.c ++++ b/support/support_subprocess.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + static struct support_subprocess + support_subprocess_init (void) +@@ -60,6 +61,8 @@ support_subprocess (void (*callback) (void *), void *closure) + xclose (result.stdout_pipe[1]); + xclose (result.stderr_pipe[1]); + callback (closure); ++ /* Make sure that temporary files are deleted. */ ++ support_delete_temp_files (); + _exit (0); + } + xclose (result.stdout_pipe[1]); + +commit 9ec7a532ffdb9a6e0a4b220d7a694d6120701035 +Author: H.J. Lu +Date: Sat Jul 19 07:43:27 2025 -0700 + + tst-fopen-threaded.c: Delete temporary file + + Update tst-fopen-threaded.c to call support_create_temp_directory to + create a temporary directory and open "file" in the temporary directory, + instead of using /tmp/openclosetest and leaving it behind. + + This partially fixes BZ #33182. + + Signed-off-by: H.J. Lu + Reviewed-by: Adhemerval Zanella + (cherry picked from commit e7db5150603bb2224a2bfd9628cae04ddcbe49e3) + +diff --git a/sysdeps/pthread/tst-fopen-threaded.c b/sysdeps/pthread/tst-fopen-threaded.c +index ade58ad19e..c17f1eaa13 100644 +--- a/sysdeps/pthread/tst-fopen-threaded.c ++++ b/sysdeps/pthread/tst-fopen-threaded.c +@@ -34,11 +34,13 @@ + #include + #include + #include ++#include + + #include + #include + #include + #include ++#include + + #define NUM_THREADS 100 + #define ITERS 10 +@@ -111,7 +113,8 @@ threadOpenCloseRoutine (void *argv) + /* Wait for all threads to be ready to call fopen and fclose. */ + xpthread_barrier_wait (&barrier); + +- FILE *fd = xfopen ("/tmp/openclosetest", "w+"); ++ char *file = (char *) argv; ++ FILE *fd = xfopen (file, "w+"); + xfclose (fd); + return NULL; + } +@@ -235,6 +238,10 @@ do_test (void) + xfclose (fd_file); + } + ++ char *tempdir = support_create_temp_directory ("openclosetest-"); ++ char *file = xasprintf ("%s/file", tempdir); ++ add_temp_file (file); ++ + /* Test 3: Concurrent open/close. */ + for (int reps = 1; reps <= ITERS; reps++) + { +@@ -243,7 +250,7 @@ do_test (void) + { + threads[i] = + xpthread_create (support_small_stack_thread_attribute (), +- threadOpenCloseRoutine, NULL); ++ threadOpenCloseRoutine, file); + } + for (int i = 0; i < NUM_THREADS; i++) + { +@@ -252,6 +259,9 @@ do_test (void) + xpthread_barrier_destroy (&barrier); + } + ++ free (file); ++ free (tempdir); ++ + return 0; + } + + +commit 41a77b78cff821007e3dd874619ebec7ce708c3d +Author: H.J. Lu +Date: Sat Jul 19 07:43:28 2025 -0700 + + tst-freopen4-main.c: Call support_capture_subprocess with chroot + + Update tst-freopen4-main.c to call support_capture_subprocess with chroot, + which makes temporary files inaccessible, so that temporary files can be + deleted. + + This partially fixes BZ #33182. + + Signed-off-by: H.J. Lu + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 6463d4a7b28e5ee3891c34a8a1f0a59c24dfa9de) + +diff --git a/stdio-common/tst-freopen4-main.c b/stdio-common/tst-freopen4-main.c +index 3336f5327d..436da4d203 100644 +--- a/stdio-common/tst-freopen4-main.c ++++ b/stdio-common/tst-freopen4-main.c +@@ -28,25 +28,15 @@ + #include + #include + #include ++#include + +-int +-do_test (void) ++static void ++do_test_chroot (void *data) + { +- mtrace (); +- char *temp_dir; ++ char *temp_dir = (char *) data; + FILE *fp; + int ret; + +- /* These chroot tests verify that either reopening a renamed or +- deleted file works even in the absence of /proc, or that it fails +- (without memory leaks); thus, for example, such reopening does +- not crash in the absence of /proc. */ +- +- support_become_root (); +- if (!support_can_chroot ()) +- return EXIT_UNSUPPORTED; +- +- temp_dir = support_create_temp_directory ("tst-freopen4"); + xchroot (temp_dir); + + /* Test freopen with NULL, renamed file. This verifies that +@@ -96,6 +86,32 @@ do_test (void) + puts ("freopen of deleted file failed (OK)"); + + free (temp_dir); ++} ++ ++int ++do_test (void) ++{ ++ mtrace (); ++ char *temp_dir; ++ ++ /* These chroot tests verify that either reopening a renamed or ++ deleted file works even in the absence of /proc, or that it fails ++ (without memory leaks); thus, for example, such reopening does ++ not crash in the absence of /proc. */ ++ ++ support_become_root (); ++ if (!support_can_chroot ()) ++ return EXIT_UNSUPPORTED; ++ ++ temp_dir = support_create_temp_directory ("tst-freopen4"); ++ ++ struct support_capture_subprocess result; ++ result = support_capture_subprocess (do_test_chroot, temp_dir); ++ support_capture_subprocess_check (&result, "freopen4", 0, ++ sc_allow_stdout); ++ fputs (result.out.buffer, stdout); ++ support_capture_subprocess_free (&result); ++ + return 0; + } + + +commit c090b0cb1cde74aaeec01663dd55d6681dc92075 +Author: H.J. Lu +Date: Sat Jul 19 07:43:29 2025 -0700 + + tst-env-setuid: Delete LD_DEBUG_OUTPUT output + + Update tst-env-setuid.c to delete LD_DEBUG_OUTPUT output, instead of + leaving it behind. + + This partially fixes BZ #33182. + + Signed-off-by: H.J. Lu + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 5d23dfb289174d73b8907b86d2bef7a3ca889840) + +diff --git a/elf/tst-env-setuid.c b/elf/tst-env-setuid.c +index 7209acd616..ff3eda7f91 100644 +--- a/elf/tst-env-setuid.c ++++ b/elf/tst-env-setuid.c +@@ -40,6 +40,8 @@ static char SETGID_CHILD[] = "setgid-child"; + # define PROFILE_LIB "tst-sonamemove-runmod2.so" + #endif + ++#define LD_DEBUG_OUTPUT "/tmp/some-file" ++ + struct envvar_t + { + const char *env; +@@ -61,7 +63,7 @@ static const struct envvar_t filtered_envvars[] = + { "MALLOC_TRIM_THRESHOLD_", FILTERED_VALUE }, + { "RES_OPTIONS", FILTERED_VALUE }, + { "LD_DEBUG", "all" }, +- { "LD_DEBUG_OUTPUT", "/tmp/some-file" }, ++ { "LD_DEBUG_OUTPUT", LD_DEBUG_OUTPUT }, + { "LD_WARN", FILTERED_VALUE }, + { "LD_VERBOSE", FILTERED_VALUE }, + { "LD_BIND_NOW", "0" }, +@@ -74,6 +76,14 @@ static const struct envvar_t unfiltered_envvars[] = + { "LD_ASSUME_KERNEL", UNFILTERED_VALUE }, + }; + ++static void ++unlink_ld_debug_output (pid_t pid) ++{ ++ char *output = xasprintf ("%s.%d", LD_DEBUG_OUTPUT, pid); ++ unlink (output); ++ free (output); ++} ++ + static int + test_child (void) + { +@@ -138,13 +148,21 @@ do_test (int argc, char **argv) + /* Setgid child process. */ + if (argc == 2 && strcmp (argv[1], SETGID_CHILD) == 0) + { ++ pid_t ppid = getppid (); ++ + if (getgid () == getegid ()) +- /* This can happen if the file system is mounted nosuid. */ +- FAIL_UNSUPPORTED ("SGID failed: GID and EGID match (%jd)\n", +- (intmax_t) getgid ()); ++ { ++ /* This can happen if the file system is mounted nosuid. */ ++ unlink_ld_debug_output (ppid); ++ ++ FAIL_UNSUPPORTED ("SGID failed: GID and EGID match (%jd)\n", ++ (intmax_t) getgid ()); ++ } + + int ret = test_child (); + ++ unlink_ld_debug_output (ppid); ++ + if (ret != 0) + exit (1); + return 0; + +commit e5754399b542640f3f69c5e2513c57a307656032 +Author: H.J. Lu +Date: Tue Aug 5 09:16:14 2025 -0700 + + Revert "tst-freopen4-main.c: Call support_capture_subprocess with chroot" + + Revert commit 6463d4a7b28e5ee3891c34a8a1f0a59c24dfa9de to fix + + FAIL: stdio-common/tst-freopen4-mem + FAIL: stdio-common/tst-freopen64-4-mem + + This fixes BZ #33254. + + Reviewed-by: Sam James + (cherry picked from commit adec0bf05bc23ec35573c7a5b96440089b69265e) + +diff --git a/stdio-common/tst-freopen4-main.c b/stdio-common/tst-freopen4-main.c +index 436da4d203..3336f5327d 100644 +--- a/stdio-common/tst-freopen4-main.c ++++ b/stdio-common/tst-freopen4-main.c +@@ -28,15 +28,25 @@ + #include + #include + #include +-#include + +-static void +-do_test_chroot (void *data) ++int ++do_test (void) + { +- char *temp_dir = (char *) data; ++ mtrace (); ++ char *temp_dir; + FILE *fp; + int ret; + ++ /* These chroot tests verify that either reopening a renamed or ++ deleted file works even in the absence of /proc, or that it fails ++ (without memory leaks); thus, for example, such reopening does ++ not crash in the absence of /proc. */ ++ ++ support_become_root (); ++ if (!support_can_chroot ()) ++ return EXIT_UNSUPPORTED; ++ ++ temp_dir = support_create_temp_directory ("tst-freopen4"); + xchroot (temp_dir); + + /* Test freopen with NULL, renamed file. This verifies that +@@ -86,32 +96,6 @@ do_test_chroot (void *data) + puts ("freopen of deleted file failed (OK)"); + + free (temp_dir); +-} +- +-int +-do_test (void) +-{ +- mtrace (); +- char *temp_dir; +- +- /* These chroot tests verify that either reopening a renamed or +- deleted file works even in the absence of /proc, or that it fails +- (without memory leaks); thus, for example, such reopening does +- not crash in the absence of /proc. */ +- +- support_become_root (); +- if (!support_can_chroot ()) +- return EXIT_UNSUPPORTED; +- +- temp_dir = support_create_temp_directory ("tst-freopen4"); +- +- struct support_capture_subprocess result; +- result = support_capture_subprocess (do_test_chroot, temp_dir); +- support_capture_subprocess_check (&result, "freopen4", 0, +- sc_allow_stdout); +- fputs (result.out.buffer, stdout); +- support_capture_subprocess_free (&result); +- + return 0; + } + + +commit c5476b7907d01207ede6bf57b26cef151b601f35 +Author: Samuel Thibault +Date: Fri Jul 18 23:14:40 2025 +0200 + + hurd: support: Fix running SGID tests + + Secure mode is enabled only if SGID actually provides a new privilege, + so we have to drop it before gaining it again. + + Fixes commit 3a3fb2ed83f79100c116c824454095ecfb335ad7 + ("Fix error reporting (false negatives) in SGID tests") + + (cherry picked from commit ad4589e2d834c80a042a8c354fb00cf33e06802c) + +diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c +index b4e4bf9502..c89e65b534 100644 +--- a/support/support_capture_subprocess.c ++++ b/support/support_capture_subprocess.c +@@ -133,6 +133,27 @@ copy_and_spawn_sgid (const char *child_id, gid_t gid) + if (chmod (execname, 02750) != 0) + FAIL_UNSUPPORTED ("cannot make \"%s\" SGID: %m ", execname); + ++ /* Now we can drop the privilege of that group. */ ++ const int count = 64; ++ gid_t groups[count]; ++ int ngroups = getgroups(count, groups); ++ ++ if (ngroups < 0) ++ FAIL_UNSUPPORTED ("Could not get group list again for user %jd\n", ++ (intmax_t) getuid ()); ++ ++ int n = 0; ++ for (int i = 0; i < ngroups; i++) ++ { ++ if (groups[i] != gid) ++ { ++ if (n != i) ++ groups[n] = groups[i]; ++ n++; ++ } ++ } ++ setgroups (n, groups); ++ + /* We have the binary, now spawn the subprocess. Avoid using + support_subprogram because we only want the program exit status, not the + contents. */ + +commit 8a726b63047241c6dd4b55bf85eacd02244362a2 +Author: Wilco Dijkstra +Date: Thu Jul 10 15:49:14 2025 +0000 + + malloc: Remove redundant NULL check + + Remove a redundant NULL check from tcache_get_n. + + Reviewed-by: Cupertino Miranda + (cherry picked from commit 089b4fb90fac8ed53039bc4c465c4d333c6b4048) + +diff --git a/malloc/malloc.c b/malloc/malloc.c +index 5ca390cc22..cf5c02ff64 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -3208,11 +3208,10 @@ tcache_get_n (size_t tc_idx, tcache_entry **ep, bool mangled) + if (__glibc_unlikely (misaligned_mem (e))) + malloc_printerr ("malloc(): unaligned tcache chunk detected"); + +- void *ne = e == NULL ? NULL : REVEAL_PTR (e->next); + if (!mangled) +- *ep = ne; ++ *ep = REVEAL_PTR (e->next); + else +- *ep = PROTECT_PTR (ep, ne); ++ *ep = PROTECT_PTR (ep, REVEAL_PTR (e->next)); + + ++(tcache->num_slots[tc_idx]); + e->key = 0; +@@ -3229,7 +3228,7 @@ tcache_put (mchunkptr chunk, size_t tc_idx) + static __always_inline void * + tcache_get (size_t tc_idx) + { +- return tcache_get_n (tc_idx, & tcache->entries[tc_idx], false); ++ return tcache_get_n (tc_idx, &tcache->entries[tc_idx], false); + } + + static __always_inline tcache_entry ** + +commit c491dabd8a3de090d1ccb4589421a44e79c5b185 +Author: Wilco Dijkstra +Date: Thu Jul 17 14:31:06 2025 +0000 + + malloc: Fix MAX_TCACHE_SMALL_SIZE + + MAX_TCACHE_SMALL_SIZE should use chunk size since it is used after + checked_request2size. Increase limit of tcache_max_bytes by 1 since all + comparisons use '<'. As a result, the last tcache entry is now used as + expected. + + Reviewed-by: DJ Delorie + (cherry picked from commit ad4caba4146583fc543cd434221dec7113c03e09) + +diff --git a/malloc/malloc.c b/malloc/malloc.c +index cf5c02ff64..b89b654f17 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -294,9 +294,9 @@ + # define TCACHE_SMALL_BINS 64 + # define TCACHE_LARGE_BINS 12 /* Up to 4M chunks */ + # define TCACHE_MAX_BINS (TCACHE_SMALL_BINS + TCACHE_LARGE_BINS) +-# define MAX_TCACHE_SMALL_SIZE tidx2usize (TCACHE_SMALL_BINS-1) ++# define MAX_TCACHE_SMALL_SIZE tidx2csize (TCACHE_SMALL_BINS-1) + +-/* Only used to pre-fill the tunables. */ ++# define tidx2csize(idx) (((size_t) idx) * MALLOC_ALIGNMENT + MINSIZE) + # define tidx2usize(idx) (((size_t) idx) * MALLOC_ALIGNMENT + MINSIZE - SIZE_SZ) + + /* When "x" is from chunksize(). */ +@@ -1932,7 +1932,7 @@ static struct malloc_par mp_ = + , + .tcache_count = TCACHE_FILL_COUNT, + .tcache_small_bins = TCACHE_SMALL_BINS, +- .tcache_max_bytes = MAX_TCACHE_SMALL_SIZE, ++ .tcache_max_bytes = MAX_TCACHE_SMALL_SIZE + 1, + .tcache_unsorted_limit = 0 /* No limit. */ + #endif + }; +@@ -5586,15 +5586,13 @@ do_set_arena_max (size_t value) + static __always_inline int + do_set_tcache_max (size_t value) + { ++ if (value > PTRDIFF_MAX) ++ return 0; ++ + size_t nb = request2size (value); + size_t tc_idx = csize2tidx (nb); + +- /* To check that value is not too big and request2size does not return an +- overflown value. */ +- if (value > nb) +- return 0; +- +- if (nb > MAX_TCACHE_SMALL_SIZE) ++ if (tc_idx >= TCACHE_SMALL_BINS) + tc_idx = large_csize2tidx (nb); + + LIBC_PROBE (memory_tunable_tcache_max_bytes, 2, value, mp_.tcache_max_bytes); +@@ -5603,7 +5601,7 @@ do_set_tcache_max (size_t value) + { + if (tc_idx < TCACHE_SMALL_BINS) + mp_.tcache_small_bins = tc_idx + 1; +- mp_.tcache_max_bytes = nb; ++ mp_.tcache_max_bytes = nb + 1; + return 1; + } + + +commit a96a82c4a5efd3139e75cd11fd2a5554164dd5a0 +Author: Samuel Thibault +Date: Wed Jul 30 01:55:22 2025 +0200 + + malloc: Make sure tcache_key is odd enough + + We want tcache_key not to be a commonly-occurring value in memory, so ensure + a minimum amount of one and zero bits. + + And we need it non-zero, otherwise even if tcache_double_free_verify sets + e->key to 0 before calling __libc_free, it gets called again by __libc_free, + thus looping indefinitely. + + Fixes: c968fe50628db74b52124d863cd828225a1d305c ("malloc: Use tailcalls in __libc_free") + (cherry picked from commit 2536c4f8584082a1ac4c5e0a2a6222e290d43983) + +diff --git a/malloc/malloc.c b/malloc/malloc.c +index b89b654f17..e4e2f03600 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -230,6 +230,9 @@ + /* For uintptr_t. */ + #include + ++/* For stdc_count_ones. */ ++#include ++ + /* For va_arg, va_start, va_end. */ + #include + +@@ -3152,6 +3155,19 @@ tcache_key_initialize (void) + if (__getrandom_nocancel_nostatus_direct (&tcache_key, sizeof(tcache_key), + GRND_NONBLOCK) + != sizeof (tcache_key)) ++ tcache_key = 0; ++ ++ /* We need tcache_key to be non-zero (otherwise tcache_double_free_verify's ++ clearing of e->key would go unnoticed and it would loop getting called ++ through __libc_free), and we want tcache_key not to be a ++ commonly-occurring value in memory, so ensure a minimum amount of one and ++ zero bits. */ ++ int minimum_bits = __WORDSIZE / 4; ++ int maximum_bits = __WORDSIZE - minimum_bits; ++ ++ while (labs (tcache_key) <= 0x1000000 ++ || stdc_count_ones (tcache_key) < minimum_bits ++ || stdc_count_ones (tcache_key) > maximum_bits) + { + tcache_key = random_bits (); + #if __WORDSIZE == 64 + +commit d7274d718e6f3655eabe311d4eb70fabb5ffa7ef +Author: Samuel Thibault +Date: Sun Aug 10 23:43:37 2025 +0200 + + malloc: Fix checking for small negative values of tcache_key + + tcache_key is unsigned so we should turn it explicitly to signed before + taking its absolute value. + + (cherry picked from commit 8543577b04ded6d979ffcc5a818930e4d74d0645) + +diff --git a/malloc/malloc.c b/malloc/malloc.c +index e4e2f03600..5f3e701fd1 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -3165,7 +3165,7 @@ tcache_key_initialize (void) + int minimum_bits = __WORDSIZE / 4; + int maximum_bits = __WORDSIZE - minimum_bits; + +- while (labs (tcache_key) <= 0x1000000 ++ while (labs ((intptr_t) tcache_key) <= 0x1000000 + || stdc_count_ones (tcache_key) < minimum_bits + || stdc_count_ones (tcache_key) > maximum_bits) + { + +commit 8dbaecbe92ac7ab73b7d0aae84626af59131e41b +Author: Jens Remus +Date: Fri Jul 25 15:40:03 2025 +0200 + + Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables [BZ #33234] + + Commit 10a66a8e421b ("Remove ") removed the TLS initial-exec + (IE) model attribute from the __libc_tsd_CTYPE_* thread variable declarations + and definitions. Commit a894f04d8776 ("Optimize __libc_tsd_* thread + variable access") restored it on declarations. + + Restore the TLS initial-exec model attribute on __libc_tsd_CTYPE_* thread + variable definitions. + + This resolves test tst-locale1 failure on s390 32-bit, when using a + GNU linker without the fix from GNU binutils commit aefebe82dc89 + ("IBM zSystems: Fix offset relative to static TLS"). + + Reviewed-by: Florian Weimer + (cherry picked from commit e5363e6f460c2d58809bf10fc96d70fd1ef8b5b2) + +diff --git a/NEWS b/NEWS +index 1d04bdfef8..69aa600c6d 100644 +--- a/NEWS ++++ b/NEWS +@@ -11,6 +11,7 @@ The following bugs were resolved with this release: + + [31943] _dl_find_object can fail if ld.so contains gaps between load segments + [32994] stdlib: resolve a double lock init issue after fork ++ [33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables + [33245] nptl: nptl: error in internal cancellation syscall handling + + Version 2.42 +diff --git a/ctype/ctype-info.c b/ctype/ctype-info.c +index b7d3422726..fb5acf9419 100644 +--- a/ctype/ctype-info.c ++++ b/ctype/ctype-info.c +@@ -24,11 +24,11 @@ + __ctype_init before user code runs, but this does not happen for + threads in secondary namespaces. With the initializers, secondary + namespaces at least get locale data from the C locale. */ +-__thread const uint16_t * __libc_tsd_CTYPE_B ++__thread const uint16_t * __libc_tsd_CTYPE_B attribute_tls_model_ie + = (const uint16_t *) _nl_C_LC_CTYPE_class + 128; +-__thread const int32_t * __libc_tsd_CTYPE_TOLOWER ++__thread const int32_t * __libc_tsd_CTYPE_TOLOWER attribute_tls_model_ie + = (const int32_t *) _nl_C_LC_CTYPE_tolower + 128; +-__thread const int32_t * __libc_tsd_CTYPE_TOUPPER ++__thread const int32_t * __libc_tsd_CTYPE_TOUPPER attribute_tls_model_ie + = (const int32_t *) _nl_C_LC_CTYPE_toupper + 128; + + + +commit d0f72b96f2e91e1aa93f7e826c71f74078ada7d0 +Author: H.J. Lu +Date: Mon Jul 28 12:16:11 2025 -0700 + + i386: Add GLIBC_ABI_GNU_TLS version [BZ #33221] + + On i386, programs and shared libraries with __thread usage may fail + silently at run-time against glibc without the TLS run-time fix for: + + https://sourceware.org/bugzilla/show_bug.cgi?id=32996 + + Add GLIBC_ABI_GNU_TLS version to indicate that glibc has the working + GNU TLS run-time. Linker can add the GLIBC_ABI_GNU_TLS version to + binaries which depend on the working TLS run-time so that such programs + and shared libraries will fail to load and run at run-time against + libc.so without the GLIBC_ABI_GNU_TLS version, instead of fail silently + at random. + + This fixes BZ #33221. + + Signed-off-by: H.J. Lu + Reviewed-by: Sam James + (cherry picked from commit ed1b7a5a489ab555a27fad9c101ebe2e1c1ba881) + +diff --git a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile +index ee6470d78e..c0c017b899 100644 +--- a/sysdeps/i386/Makefile ++++ b/sysdeps/i386/Makefile +@@ -60,6 +60,15 @@ $(objpfx)tst-ld-sse-use.out: ../sysdeps/i386/tst-ld-sse-use.sh $(objpfx)ld.so + @echo "Checking ld.so for SSE register use. This will take a few seconds..." + $(BASH) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@; \ + $(evaluate-test) ++ ++tests-special += $(objpfx)check-gnu-tls.out ++ ++$(objpfx)check-gnu-tls.out: $(common-objpfx)libc.so ++ LC_ALL=C $(READELF) -V -W $< \ ++ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ ++ | grep GLIBC_ABI_GNU_TLS > $@; \ ++ $(evaluate-test) ++generated += check-gnu-tls.out + else + CFLAGS-.os += $(if $(filter rtld-%.os,$(@F)), $(rtld-CFLAGS)) + endif +diff --git a/sysdeps/i386/Versions b/sysdeps/i386/Versions +index 36e23b466a..9c84c8ef04 100644 +--- a/sysdeps/i386/Versions ++++ b/sysdeps/i386/Versions +@@ -28,6 +28,11 @@ libc { + GLIBC_2.13 { + __fentry__; + } ++ GLIBC_ABI_GNU_TLS { ++ # This symbol is used only for empty version map and will be removed ++ # by scripts/versions.awk. ++ __placeholder_only_for_empty_version_map; ++ } + } + libm { + GLIBC_2.1 { + +commit 3970785bebcc3f1de4460072f3a041d178f64846 +Author: H.J. Lu +Date: Mon Jul 28 12:18:22 2025 -0700 + + x86-64: Add GLIBC_ABI_GNU2_TLS version [BZ #33129] + + Programs and shared libraries compiled with -mtls-dialect=gnu2 may fail + silently at run-time against glibc without the GNU2 TLS run-time fix + for: + + https://sourceware.org/bugzilla/show_bug.cgi?id=31372 + + Add GLIBC_ABI_GNU2_TLS version to indicate that glibc has the working + GNU2 TLS run-time. Linker can add the GLIBC_ABI_GNU2_TLS version to + binaries which depend on the working GNU2 TLS run-time: + + https://sourceware.org/bugzilla/show_bug.cgi?id=33130 + + so that such programs and shared libraries will fail to load and run at + run-time against libc.so without the GLIBC_ABI_GNU2_TLS version, instead + of fail silently at random. + + This fixes BZ #33129. + + Signed-off-by: H.J. Lu + Reviewed-by: Sam James + (cherry picked from commit 9df8fa397d515dc86ff5565f6c45625e672d539e) + +diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile +index c3e1065c81..3ab8c1ed0f 100644 +--- a/sysdeps/x86_64/Makefile ++++ b/sysdeps/x86_64/Makefile +@@ -212,6 +212,15 @@ LDFLAGS-tst-plt-rewrite2 = -Wl,-z,now + LDFLAGS-tst-plt-rewritemod2.so = -Wl,-z,now,-z,undefs + tst-plt-rewrite2-ENV = GLIBC_TUNABLES=glibc.cpu.plt_rewrite=2 + $(objpfx)tst-plt-rewrite2: $(objpfx)tst-plt-rewritemod2.so ++ ++tests-special += $(objpfx)check-gnu2-tls.out ++ ++$(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so ++ LC_ALL=C $(READELF) -V -W $< \ ++ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ ++ | grep GLIBC_ABI_GNU2_TLS > $@; \ ++ $(evaluate-test) ++generated += check-gnu2-tls.out + endif + + test-internal-extras += tst-gnu2-tls2mod1 +diff --git a/sysdeps/x86_64/Versions b/sysdeps/x86_64/Versions +index e94758b236..a63c11bcb2 100644 +--- a/sysdeps/x86_64/Versions ++++ b/sysdeps/x86_64/Versions +@@ -5,6 +5,11 @@ libc { + GLIBC_2.13 { + __fentry__; + } ++ GLIBC_ABI_GNU2_TLS { ++ # This symbol is used only for empty version map and will be removed ++ # by scripts/versions.awk. ++ __placeholder_only_for_empty_version_map; ++ } + } + libm { + GLIBC_2.1 { + +commit 7a8f3c6ee4b565a02da4ba0dad9aaeaeed4639ce +Author: H.J. Lu +Date: Thu Aug 14 07:03:20 2025 -0700 + + x86-64: Add GLIBC_ABI_DT_X86_64_PLT [BZ #33212] + + When the linker -z mark-plt option is used to add DT_X86_64_PLT, + DT_X86_64_PLTSZ and DT_X86_64_PLTENT, the r_addend field of the + R_X86_64_JUMP_SLOT relocation stores the offset of the indirect + branch instruction. However, glibc versions without the commit: + + commit f8587a61892cbafd98ce599131bf4f103466f084 + Author: H.J. Lu + Date: Fri May 20 19:21:48 2022 -0700 + + x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT + + According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT + and R_X86_64_JUMP_SLOT. Since linkers always set their r_addends to 0, we + can ignore their r_addends. + + Reviewed-by: Fangrui Song + + won't ignore the r_addend value in the R_X86_64_JUMP_SLOT relocation. + Such programs and shared libraries will fail at run-time randomly. + + Add GLIBC_ABI_DT_X86_64_PLT version to indicate that glibc is compatible + with DT_X86_64_PLT. + + The linker can add the glibc GLIBC_ABI_DT_X86_64_PLT version dependency + whenever -z mark-plt is passed to the linker. The resulting programs and + shared libraries will fail to load at run-time against libc.so without the + GLIBC_ABI_DT_X86_64_PLT version, instead of fail randomly. + + This fixes BZ #33212. + + Signed-off-by: H.J. Lu + Reviewed-by: Sam James + (cherry picked from commit 399384e0c8193e31aea014220ccfa24300ae5938) + +diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile +index 3ab8c1ed0f..01100597a8 100644 +--- a/sysdeps/x86_64/Makefile ++++ b/sysdeps/x86_64/Makefile +@@ -213,6 +213,15 @@ LDFLAGS-tst-plt-rewritemod2.so = -Wl,-z,now,-z,undefs + tst-plt-rewrite2-ENV = GLIBC_TUNABLES=glibc.cpu.plt_rewrite=2 + $(objpfx)tst-plt-rewrite2: $(objpfx)tst-plt-rewritemod2.so + ++tests-special += $(objpfx)check-dt-x86-64-plt.out ++ ++$(objpfx)check-dt-x86-64-plt.out: $(common-objpfx)libc.so ++ LC_ALL=C $(READELF) -V -W $< \ ++ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ ++ | grep GLIBC_ABI_DT_X86_64_PLT > $@; \ ++ $(evaluate-test) ++generated += check-dt-x86-64-plt.out ++ + tests-special += $(objpfx)check-gnu2-tls.out + + $(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so +diff --git a/sysdeps/x86_64/Versions b/sysdeps/x86_64/Versions +index a63c11bcb2..0a759029e5 100644 +--- a/sysdeps/x86_64/Versions ++++ b/sysdeps/x86_64/Versions +@@ -10,6 +10,11 @@ libc { + # by scripts/versions.awk. + __placeholder_only_for_empty_version_map; + } ++ GLIBC_ABI_DT_X86_64_PLT { ++ # This symbol is used only for empty version map and will be removed ++ # by scripts/versions.awk. ++ __placeholder_only_for_empty_version_map; ++ } + } + libm { + GLIBC_2.1 { + +commit e87844ec42b77363a499ea4da6c4a6ab85eba310 +Author: H.J. Lu +Date: Mon Aug 18 09:06:48 2025 -0700 + + i386: Also add GLIBC_ABI_GNU2_TLS version [BZ #33129] + + Since the GNU2 TLS run-time bug: + + https://sourceware.org/bugzilla/show_bug.cgi?id=31372 + + affects both i386 and x86-64, also add GLIBC_ABI_GNU2_TLS version to i386 + to indicate the working GNU2 TLS run-time. For x86-64, the additional + GNU2 TLS run-time bug fix is needed for + + https://sourceware.org/bugzilla/show_bug.cgi?id=31501 + + Signed-off-by: H.J. Lu + Reviewed-by: Sam James + (cherry picked from commit bd4628f3f18ac312408782eea450429c6f044860) + +diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile +index 4fbd48e1c8..9e1c8cce85 100644 +--- a/sysdeps/x86/Makefile ++++ b/sysdeps/x86/Makefile +@@ -135,6 +135,15 @@ LDFLAGS-tst-tls23 += -rdynamic + tst-tls23-mod.so-no-z-defs = yes + + $(objpfx)tst-tls23-mod.so: $(libsupport) ++ ++tests-special += $(objpfx)check-gnu2-tls.out ++ ++$(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so ++ LC_ALL=C $(READELF) -V -W $< \ ++ | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ ++ | grep GLIBC_ABI_GNU2_TLS > $@; \ ++ $(evaluate-test) ++generated += check-gnu2-tls.out + endif + + ifeq ($(subdir),gmon) +diff --git a/sysdeps/x86/Versions b/sysdeps/x86/Versions +index 4b10c4b5d7..e8dcfccbe4 100644 +--- a/sysdeps/x86/Versions ++++ b/sysdeps/x86/Versions +@@ -7,4 +7,9 @@ libc { + GLIBC_2.33 { + __x86_get_cpuid_feature_leaf; + } ++ GLIBC_ABI_GNU2_TLS { ++ # This symbol is used only for empty version map and will be removed ++ # by scripts/versions.awk. ++ __placeholder_only_for_empty_version_map; ++ } + } +diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile +index 01100597a8..fe9f1cdddb 100644 +--- a/sysdeps/x86_64/Makefile ++++ b/sysdeps/x86_64/Makefile +@@ -221,15 +221,6 @@ $(objpfx)check-dt-x86-64-plt.out: $(common-objpfx)libc.so + | grep GLIBC_ABI_DT_X86_64_PLT > $@; \ + $(evaluate-test) + generated += check-dt-x86-64-plt.out +- +-tests-special += $(objpfx)check-gnu2-tls.out +- +-$(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so +- LC_ALL=C $(READELF) -V -W $< \ +- | sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \ +- | grep GLIBC_ABI_GNU2_TLS > $@; \ +- $(evaluate-test) +-generated += check-gnu2-tls.out + endif + + test-internal-extras += tst-gnu2-tls2mod1 +diff --git a/sysdeps/x86_64/Versions b/sysdeps/x86_64/Versions +index 0a759029e5..6a989ad3b3 100644 +--- a/sysdeps/x86_64/Versions ++++ b/sysdeps/x86_64/Versions +@@ -5,11 +5,6 @@ libc { + GLIBC_2.13 { + __fentry__; + } +- GLIBC_ABI_GNU2_TLS { +- # This symbol is used only for empty version map and will be removed +- # by scripts/versions.awk. +- __placeholder_only_for_empty_version_map; +- } + GLIBC_ABI_DT_X86_64_PLT { + # This symbol is used only for empty version map and will be removed + # by scripts/versions.awk. + +commit e34453cd6a8c592c325756ff3c7ac0afd3975cb4 +Author: Pierre Blanchard +Date: Wed Aug 20 17:41:50 2025 +0000 + + AArch64: Fix SVE powf routine [BZ #33299] + + Fix a bug in predicate logic introduced in last change. + A slight performance improvement from relying on all true + predicates during conversion from single to double. + This fixes BZ #33299. + + Reviewed-by: Wilco Dijkstra + (cherry picked from commit aac077645a645bba0d67f3250e82017c539d0f4b) + +diff --git a/sysdeps/aarch64/fpu/powf_sve.c b/sysdeps/aarch64/fpu/powf_sve.c +index 7046990aa1..65e9bd29d9 100644 +--- a/sysdeps/aarch64/fpu/powf_sve.c ++++ b/sysdeps/aarch64/fpu/powf_sve.c +@@ -223,15 +223,15 @@ sv_powf_core (const svbool_t pg, svuint32_t i, svuint32_t iz, svint32_t k, + const svbool_t ptrue = svptrue_b64 (); + + /* Unpack and promote input vectors (pg, y, z, i, k and sign_bias) into two +- * in order to perform core computation in double precision. */ ++ in order to perform core computation in double precision. */ + const svbool_t pg_lo = svunpklo (pg); + const svbool_t pg_hi = svunpkhi (pg); +- svfloat64_t y_lo +- = svcvt_f64_x (pg, svreinterpret_f32 (svunpklo (svreinterpret_u32 (y)))); +- svfloat64_t y_hi +- = svcvt_f64_x (pg, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (y)))); +- svfloat64_t z_lo = svcvt_f64_x (pg, svreinterpret_f32 (svunpklo (iz))); +- svfloat64_t z_hi = svcvt_f64_x (pg, svreinterpret_f32 (svunpkhi (iz))); ++ svfloat64_t y_lo = svcvt_f64_x ( ++ ptrue, svreinterpret_f32 (svunpklo (svreinterpret_u32 (y)))); ++ svfloat64_t y_hi = svcvt_f64_x ( ++ ptrue, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (y)))); ++ svfloat64_t z_lo = svcvt_f64_x (ptrue, svreinterpret_f32 (svunpklo (iz))); ++ svfloat64_t z_hi = svcvt_f64_x (ptrue, svreinterpret_f32 (svunpkhi (iz))); + svuint64_t i_lo = svunpklo (i); + svuint64_t i_hi = svunpkhi (i); + svint64_t k_lo = svunpklo (k); +@@ -312,7 +312,7 @@ svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg) + (23 - V_POWF_EXP2_TABLE_BITS)); + + /* Compute core in extended precision and return intermediate ylogx results +- * to handle cases of underflow and underflow in exp. */ ++ to handle cases of underflow and overflow in exp. */ + svfloat32_t ylogx; + svfloat32_t ret + = sv_powf_core (yint_or_xpos, i, iz, k, y, sign_bias, &ylogx, d); + +commit 1166170d95863e5a6f8121a5ca9d97713f524f49 +Author: Florian Weimer +Date: Fri Sep 5 19:02:57 2025 +0200 + + libio: Define AT_RENAME_* with the same tokens as Linux + + Linux uses different expressions for the RENAME_* and AT_RENAME_* + constants. Mirror that in , so that the macro redefinitions + do not result in preprocessor warnings. + + Reviewed-by: Collin Funk + (cherry picked from commit b173557da978a04ac3bdfc0bd3b0e7ac583b44d5) + +diff --git a/libio/stdio.h b/libio/stdio.h +index d042b36618..e0e70945fa 100644 +--- a/libio/stdio.h ++++ b/libio/stdio.h +@@ -168,11 +168,11 @@ extern int renameat (int __oldfd, const char *__old, int __newfd, + #ifdef __USE_GNU + /* Flags for renameat2. */ + # define RENAME_NOREPLACE (1 << 0) +-# define AT_RENAME_NOREPLACE RENAME_NOREPLACE ++# define AT_RENAME_NOREPLACE 0x0001 + # define RENAME_EXCHANGE (1 << 1) +-# define AT_RENAME_EXCHANGE RENAME_EXCHANGE ++# define AT_RENAME_EXCHANGE 0x0002 + # define RENAME_WHITEOUT (1 << 2) +-# define AT_RENAME_WHITEOUT RENAME_WHITEOUT ++# define AT_RENAME_WHITEOUT 0x0004 + + /* Rename file OLD relative to OLDFD to NEW relative to NEWFD, with + additional flags. */ +diff --git a/stdio-common/tst-renameat2.c b/stdio-common/tst-renameat2.c +index 12aa0f8b0f..6213e1376d 100644 +--- a/stdio-common/tst-renameat2.c ++++ b/stdio-common/tst-renameat2.c +@@ -28,6 +28,12 @@ + #include + #include + ++/* These constants are defined with different token sequences, ++ matching the Linux definitions, to avoid preprocessor warnings. */ ++_Static_assert (RENAME_NOREPLACE == AT_RENAME_NOREPLACE, "RENAME_NOREPLACE"); ++_Static_assert (RENAME_EXCHANGE == AT_RENAME_EXCHANGE, "RENAME_EXCHANGE"); ++_Static_assert (RENAME_WHITEOUT == AT_RENAME_WHITEOUT, "RENAME_WHITEOUT"); ++ + /* Directory with the temporary files. */ + static char *directory; + static int directory_fd; + +commit 46b4e37c9e0619d0cf065ba207c29996b326a06f +Author: Florian Weimer +Date: Fri Sep 12 21:33:34 2025 +0200 + + nss: Group merge does not react to ERANGE during merge (bug 33361) + + The break statement in CHECK_MERGE is expected to exit the surrounding + while loop, not the do-while loop with in the macro. Remove the + do-while loop from the macro. It is not needed to turn the macro + expansion into a single statement due to the way CHECK_MERGE is used + (and the statement expression would cover this anyway). + + Reviewed-by: Collin Funk + (cherry picked from commit 0fceed254559836b57ee05188deac649bc505d05) + +diff --git a/NEWS b/NEWS +index 69aa600c6d..06c27a8e17 100644 +--- a/NEWS ++++ b/NEWS +@@ -13,6 +13,7 @@ The following bugs were resolved with this release: + [32994] stdlib: resolve a double lock init issue after fork + [33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables + [33245] nptl: nptl: error in internal cancellation syscall handling ++ [33361] nss: Group merge does not react to ERANGE during merge + + Version 2.42 + +diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c +index eae6c3480e..2b0735fb6a 100644 +--- a/nss/getXXbyYY_r.c ++++ b/nss/getXXbyYY_r.c +@@ -157,19 +157,15 @@ __merge_einval (LOOKUP_TYPE *a, + + #define CHECK_MERGE(err, status) \ + ({ \ +- do \ ++ if (err) \ + { \ +- if (err) \ +- { \ +- __set_errno (err); \ +- if (err == ERANGE) \ +- status = NSS_STATUS_TRYAGAIN; \ +- else \ +- status = NSS_STATUS_UNAVAIL; \ +- break; \ +- } \ ++ __set_errno (err); \ ++ if (err == ERANGE) \ ++ status = NSS_STATUS_TRYAGAIN; \ ++ else \ ++ status = NSS_STATUS_UNAVAIL; \ ++ break; \ + } \ +- while (0); \ + }) + + /* Type of the lookup function we need here. */ + +commit 18fd689cdced8348e42991964557cddea0ba2dc5 +Author: Adhemerval Zanella +Date: Mon Sep 8 13:06:13 2025 -0300 + + nptl: Fix MADV_GUARD_INSTALL logic for thread without guard page (BZ 33356) + + The main issue is that setup_stack_prot fails to account for cases where + the cached thread stack lacks a guard page, which can cause madvise to + fail. Update the logic to also handle whether MADV_GUARD_INSTALL is + supported when resizing the guard page. + + Checked on x86_64-linux-gnu with 6.8.0 and 6.15 kernels. + + Reviewed-by: Florian Weimer + (cherry picked from commit 855bfa2566bbefefa27c516b344df58a75824a5c) + +diff --git a/NEWS b/NEWS +index 06c27a8e17..ed3c114c7a 100644 +--- a/NEWS ++++ b/NEWS +@@ -13,6 +13,8 @@ The following bugs were resolved with this release: + [32994] stdlib: resolve a double lock init issue after fork + [33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables + [33245] nptl: nptl: error in internal cancellation syscall handling ++ [33356] nptl: creating thread stack with guardsize 0 can erroneously ++ conclude MADV_GUARD_INSTALL is available + [33361] nss: Group merge does not react to ERANGE during merge + + Version 2.42 +diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c +index 800ca89720..fb8a60a21d 100644 +--- a/nptl/allocatestack.c ++++ b/nptl/allocatestack.c +@@ -240,7 +240,7 @@ setup_stack_prot (char *mem, size_t size, struct pthread *pd, + /* Update the guard area of the thread stack MEM of size SIZE with the new + GUARDISZE. It uses the method defined by PD stack_mode. */ + static inline bool +-adjust_stack_prot (char *mem, size_t size, const struct pthread *pd, ++adjust_stack_prot (char *mem, size_t size, struct pthread *pd, + size_t guardsize, size_t pagesize_m1) + { + /* The required guard area is larger than the current one. For +@@ -258,11 +258,23 @@ adjust_stack_prot (char *mem, size_t size, const struct pthread *pd, + so use the new guard placement with the new size. */ + if (guardsize > pd->guardsize) + { ++ /* There was no need to previously setup a guard page, so we need ++ to check whether the kernel supports guard advise. */ + char *guard = guard_position (mem, size, guardsize, pd, pagesize_m1); +- if (pd->stack_mode == ALLOCATE_GUARD_MADV_GUARD) +- return __madvise (guard, guardsize, MADV_GUARD_INSTALL) == 0; +- else if (pd->stack_mode == ALLOCATE_GUARD_PROT_NONE) +- return __mprotect (guard, guardsize, PROT_NONE) == 0; ++ if (atomic_load_relaxed (&allocate_stack_mode) ++ == ALLOCATE_GUARD_MADV_GUARD) ++ { ++ if (__madvise (guard, guardsize, MADV_GUARD_INSTALL) == 0) ++ { ++ pd->stack_mode = ALLOCATE_GUARD_MADV_GUARD; ++ return true; ++ } ++ atomic_store_relaxed (&allocate_stack_mode, ++ ALLOCATE_GUARD_PROT_NONE); ++ } ++ ++ pd->stack_mode = ALLOCATE_GUARD_PROT_NONE; ++ return __mprotect (guard, guardsize, PROT_NONE) == 0; + } + /* The current guard area is larger than the required one. For + _STACK_GROWS_DOWN is means change the guard as: +diff --git a/nptl/tst-guard1.c b/nptl/tst-guard1.c +index e3e06df0fc..1c73d3fc93 100644 +--- a/nptl/tst-guard1.c ++++ b/nptl/tst-guard1.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -202,7 +203,7 @@ tf (void *closure) + + /* Test 1: caller provided stack without guard. */ + static void +-do_test1 (void) ++do_test1 (void *closure) + { + pthread_attr_t attr; + xpthread_attr_init (&attr); +@@ -227,7 +228,7 @@ do_test1 (void) + + /* Test 2: same as 1., but with a guard area. */ + static void +-do_test2 (void) ++do_test2 (void *closure) + { + pthread_attr_t attr; + xpthread_attr_init (&attr); +@@ -250,18 +251,9 @@ do_test2 (void) + xmunmap (stack, stacksize); + } + +-/* Test 3: pthread_create with default values. */ ++/* Test 3: pthread_create without a guard area. */ + static void +-do_test3 (void) +-{ +- pthread_t t = xpthread_create (NULL, tf, NULL); +- void *status = xpthread_join (t); +- TEST_VERIFY (status == 0); +-} +- +-/* Test 4: pthread_create without a guard area. */ +-static void +-do_test4 (void) ++do_test3 (void *closure) + { + pthread_attr_t attr; + xpthread_attr_init (&attr); +@@ -277,9 +269,18 @@ do_test4 (void) + xpthread_attr_destroy (&attr); + } + ++/* Test 4: pthread_create with default values. */ ++static void ++do_test4 (void *closure) ++{ ++ pthread_t t = xpthread_create (NULL, tf, NULL); ++ void *status = xpthread_join (t); ++ TEST_VERIFY (status == 0); ++} ++ + /* Test 5: pthread_create with non default stack and guard size value. */ + static void +-do_test5 (void) ++do_test5 (void *closure) + { + pthread_attr_t attr; + xpthread_attr_init (&attr); +@@ -299,7 +300,7 @@ do_test5 (void) + test 3, but with a larger guard area. The pthread_create will need to + increase the guard area. */ + static void +-do_test6 (void) ++do_test6 (void *closure) + { + pthread_attr_t attr; + xpthread_attr_init (&attr); +@@ -320,7 +321,7 @@ do_test6 (void) + pthread_create should use the cached stack from previous tests, but it + would require to reduce the guard area. */ + static void +-do_test7 (void) ++do_test7 (void *closure) + { + pthread_t t = xpthread_create (NULL, tf, NULL); + void *status = xpthread_join (t); +@@ -346,21 +347,40 @@ do_test (void) + + static const struct { + const char *descr; +- void (*test)(void); ++ void (*test) (void *); + } tests[] = { + { "user provided stack without guard", do_test1 }, + { "user provided stack with guard", do_test2 }, +- { "default attribute", do_test3 }, +- { "default attribute without guard", do_test4 }, ++ /* N.B: do_test3 should be before do_test4 to check if a new thread ++ that uses the thread stack previously allocated without a guard ++ page correctly sets up the guard pages even on a kernel without ++ MADV_GUARD_INSTALL support (BZ 33356). */ ++ { "default attribute without guard", do_test3 }, ++ { "default attribute", do_test4 }, ++ /* Also checks if the guard is correctly removed from the cache thread ++ stack. */ ++ { "default attribute without guard", do_test3 }, + { "non default stack and guard sizes", do_test5 }, + { "reused stack with larger guard", do_test6 }, + { "reused stack with smaller guard", do_test7 }, + }; + ++ /* Run each test with a clean state. */ ++ for (int i = 0; i < array_length (tests); i++) ++ { ++ printf ("debug: fork: test%01d: %s\n", i, tests[i].descr); ++ struct support_capture_subprocess result = ++ support_capture_subprocess (tests[i].test, NULL); ++ support_capture_subprocess_check (&result, tests[i].descr, 0, ++ sc_allow_none); ++ support_capture_subprocess_free (&result); ++ } ++ ++ /* And now run the same tests along with the thread stack cache. */ + for (int i = 0; i < array_length (tests); i++) + { + printf ("debug: test%01d: %s\n", i, tests[i].descr); +- tests[i].test(); ++ tests[i].test ( NULL); + } + + return 0; + +commit bf48b17a28066a54f172e0d63da9fc5dc60c6355 +Author: Sunil K Pandey +Date: Mon Oct 6 18:13:04 2025 -0700 + + x86: Detect Intel Wildcat Lake Processor + + Detect Intel Wildcat Lake Processor and tune it similar to Intel Panther + Lake. https://cdrdv2.intel.com/v1/dl/getContent/671368 Section 1.2. + + Reviewed-by: H.J. Lu + (cherry picked from commit f8dd52901b72805a831d5a4cb7d971e4a3c9970b) + +diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c +index b7d1506135..4bdade883e 100644 +--- a/sysdeps/x86/cpu-features.c ++++ b/sysdeps/x86/cpu-features.c +@@ -543,6 +543,7 @@ enum intel_microarch + INTEL_BIGCORE_PANTHERLAKE, + INTEL_BIGCORE_GRANITERAPIDS, + INTEL_BIGCORE_DIAMONDRAPIDS, ++ INTEL_BIGCORE_WILDCATLAKE, + + /* Mixed (bigcore + atom SOC). */ + INTEL_MIXED_LAKEFIELD, +@@ -702,6 +703,8 @@ intel_get_fam6_microarch (unsigned int model, + return INTEL_BIGCORE_ARROWLAKE; + case 0xCC: + return INTEL_BIGCORE_PANTHERLAKE; ++ case 0xD5: ++ return INTEL_BIGCORE_WILDCATLAKE; + case 0xAD: + case 0xAE: + return INTEL_BIGCORE_GRANITERAPIDS; +@@ -934,6 +937,7 @@ disable_tsx: + case INTEL_BIGCORE_LUNARLAKE: + case INTEL_BIGCORE_ARROWLAKE: + case INTEL_BIGCORE_PANTHERLAKE: ++ case INTEL_BIGCORE_WILDCATLAKE: + case INTEL_BIGCORE_SAPPHIRERAPIDS: + case INTEL_BIGCORE_EMERALDRAPIDS: + case INTEL_BIGCORE_GRANITERAPIDS: + +commit ab8c1b5d62d7be2c3c23f535bea3d7fff19c53ae +Author: Sunil K Pandey +Date: Wed Sep 24 09:38:17 2025 -0700 + + x86: Detect Intel Nova Lake Processor + + Detect Intel Nova Lake Processor and tune it similar to Intel Panther + Lake. https://cdrdv2.intel.com/v1/dl/getContent/671368 Section 1.2. + + Reviewed-by: H.J. Lu + (cherry picked from commit a114e29ddd530962d2b44aa9d89f1f6075abe7fa) + +diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c +index 4bdade883e..b67ef541dd 100644 +--- a/sysdeps/x86/cpu-features.c ++++ b/sysdeps/x86/cpu-features.c +@@ -544,6 +544,7 @@ enum intel_microarch + INTEL_BIGCORE_GRANITERAPIDS, + INTEL_BIGCORE_DIAMONDRAPIDS, + INTEL_BIGCORE_WILDCATLAKE, ++ INTEL_BIGCORE_NOVALAKE, + + /* Mixed (bigcore + atom SOC). */ + INTEL_MIXED_LAKEFIELD, +@@ -821,6 +822,17 @@ disable_tsx: + break; + } + } ++ else if (family == 18) ++ switch (model) ++ { ++ case 0x01: ++ case 0x03: ++ microarch = INTEL_BIGCORE_NOVALAKE; ++ break; ++ ++ default: ++ break; ++ } + else if (family == 19) + switch (model) + { +@@ -938,6 +950,7 @@ disable_tsx: + case INTEL_BIGCORE_ARROWLAKE: + case INTEL_BIGCORE_PANTHERLAKE: + case INTEL_BIGCORE_WILDCATLAKE: ++ case INTEL_BIGCORE_NOVALAKE: + case INTEL_BIGCORE_SAPPHIRERAPIDS: + case INTEL_BIGCORE_EMERALDRAPIDS: + case INTEL_BIGCORE_GRANITERAPIDS: + +commit 6de12fc9ad56bc19fa6fcbd8ee502f29b5170d47 +Author: Yury Khrustalev +Date: Thu Sep 25 15:51:30 2025 +0100 + + aarch64: define macro for calling __libc_arm_za_disable + + A common sequence of instructions is used in several places + in assembly files, so define it in one place as an assembly + macro. + + Reviewed-by: Adhemerval Zanella + (cherry picked from commit b4b713bd8921aff04773557da94fabb5fb9dd705) + +diff --git a/sysdeps/aarch64/__longjmp.S b/sysdeps/aarch64/__longjmp.S +index 70ac02c44b..53b42e1bdc 100644 +--- a/sysdeps/aarch64/__longjmp.S ++++ b/sysdeps/aarch64/__longjmp.S +@@ -26,16 +26,8 @@ + ENTRY (__longjmp) + + #if IS_IN(libc) +- /* Disable ZA state of SME in libc.a and libc.so, but not in ld.so. +- The calling convention of __libc_arm_za_disable allows to do +- this thus allowing to avoid saving to and reading from stack. +- As a result we also don't need to sign the return address and +- check it after returning because it is not stored to stack. */ +- mov x13, x30 +- cfi_register (x30, x13) +- bl __libc_arm_za_disable +- mov x30, x13 +- cfi_register (x13, x30) ++ /* Disable ZA state of SME in libc.a and libc.so, but not in ld.so. */ ++ CALL_LIBC_ARM_ZA_DISABLE + #endif + + cfi_def_cfa (x0, 0) +diff --git a/sysdeps/aarch64/setjmp.S b/sysdeps/aarch64/setjmp.S +index 53c5e7d8cc..92cedfad83 100644 +--- a/sysdeps/aarch64/setjmp.S ++++ b/sysdeps/aarch64/setjmp.S +@@ -37,16 +37,8 @@ ENTRY_ALIGN (__sigsetjmp, 2) + 1: + + #if IS_IN(libc) +- /* Disable ZA state of SME in libc.a and libc.so, but not in ld.so. +- The calling convention of __libc_arm_za_disable allows to do +- this thus allowing to avoid saving to and reading from stack. +- As a result we also don't need to sign the return address and +- check it after returning because it is not stored to stack. */ +- mov x13, x30 +- cfi_register (x30, x13) +- bl __libc_arm_za_disable +- mov x30, x13 +- cfi_register (x13, x30) ++ /* Disable ZA state of SME in libc.a and libc.so, but not in ld.so. */ ++ CALL_LIBC_ARM_ZA_DISABLE + #endif + + stp x19, x20, [x0, #JB_X19<<3] +diff --git a/sysdeps/unix/sysv/linux/aarch64/setcontext.S b/sysdeps/unix/sysv/linux/aarch64/setcontext.S +index d9716f012e..8e98594663 100644 +--- a/sysdeps/unix/sysv/linux/aarch64/setcontext.S ++++ b/sysdeps/unix/sysv/linux/aarch64/setcontext.S +@@ -49,15 +49,7 @@ ENTRY (__setcontext) + b C_SYMBOL_NAME (__syscall_error) + 1: + /* Clear ZA state of SME. */ +- /* The calling convention of __libc_arm_za_disable allows to do +- this thus allowing to avoid saving to and reading from stack. +- As a result we also don't need to sign the return address and +- check it after returning because it is not stored to stack. */ +- mov x13, x30 +- cfi_register (x30, x13) +- bl __libc_arm_za_disable +- mov x30, x13 +- cfi_register (x13, x30) ++ CALL_LIBC_ARM_ZA_DISABLE + /* Restore the general purpose registers. */ + mov x0, x9 + cfi_def_cfa (x0, 0) +diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h +index f0e8d64eef..fa01386b25 100644 +--- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h ++++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h +@@ -150,6 +150,18 @@ + mov x8, SYS_ify (syscall_name); \ + svc 0 + ++/* Clear ZA state of SME (ASM version). */ ++/* The __libc_arm_za_disable function has special calling convention ++ that allows to call it without stack manipulation and preserving ++ most of the registers. */ ++ .macro CALL_LIBC_ARM_ZA_DISABLE ++ mov x13, x30 ++ .cfi_register x30, x13 ++ bl __libc_arm_za_disable ++ mov x30, x13 ++ .cfi_register x13, x30 ++ .endm ++ + #else /* not __ASSEMBLER__ */ + + # define VDSO_NAME "LINUX_2.6.39" + +commit 256030b9842a10b1f22851b1de0c119761417544 +Author: Yury Khrustalev +Date: Thu Sep 25 15:54:36 2025 +0100 + + aarch64: clear ZA state of SME before clone and clone3 syscalls + + This change adds a call to the __arm_za_disable() function immediately + before the SVC instruction inside clone() and clone3() wrappers. It also + adds a macro for inline clone() used in fork() and adds the same call to + the vfork implementation. This sets the ZA state of SME to "off" on return + from these functions (for both the child and the parent). + + The __arm_za_disable() function is described in [1] (8.1.3). Note that + the internal Glibc name for this function is __libc_arm_za_disable(). + + When this change was originally proposed [2,3], it generated a long + discussion where several questions and concerns were raised. Here we + will address these concerns and explain why this change is useful and, + in fact, necessary. + + In a nutshell, a C library that conforms to the AAPCS64 spec [1] (pertinent + to this change, mainly, the chapters 6.2 and 6.6), should have a call to the + __arm_za_disable() function in clone() and clone3() wrappers. The following + explains in detail why this is the case. + + When we consider using the __arm_za_disable() function inside the clone() + and clone3() libc wrappers, we talk about the C library subroutines clone() + and clone3() rather than the syscalls with similar names. In the current + version of Glibc, clone() is public and clone3() is private, but it being + private is not pertinent to this discussion. + + We will begin with stating that this change is NOT a bug fix for something + in the kernel. The requirement to call __arm_za_disable() does NOT come from + the kernel. It also is NOT needed to satisfy a contract between the kernel + and userspace. This is why it is not for the kernel documentation to describe + this requirement. This requirement is instead needed to satisfy a pure userspace + scheme outlined in [1] and to make sure that software that uses Glibc (or any + other C library that has correct handling of SME states (see below)) conforms + to [1] without having to unnecessarily become SME-aware thus losing portability. + + To recap (see [1] (6.2)), SME extension defines SME state which is part of + processor state. Part of this SME state is ZA state that is necessary to + manage ZA storage register in the context of the ZA lazy saving scheme [1] + (6.6). This scheme exists because it would be challenging to handle ZA + storage of SME in either callee-saved or caller-saved manner. + + There are 3 kinds of ZA state that are defined in terms of the PSTATE.ZA + bit and the TPIDR2_EL0 register (see [1] (6.6.3)): + + - "off":       PSTATE.ZA == 0 + - "active":    PSTATE.ZA == 1 TPIDR2_EL0 == null + - "dormant":   PSTATE.ZA == 1 TPIDR2_EL0 != null + + As [1] (6.7.2) outlines, every subroutine has exactly one SME-interface + depending on the permitted ZA-states on entry and on normal return from + a call to this subroutine. Callers of a subroutine must know and respect + the ZA-interface of the subroutines they are using. Using a subroutine + in a way that is not permitted by its ZA-interface is undefined behaviour. + + In particular, clone() and clone3() (the C library functions) have the + ZA-private interface. This means that the permitted ZA-states on entry + are "off" and "dormant" and that the permitted states on return are "off" + or "dormant" (but if and only if it was "dormant" on entry). + + This means that both functions in question should correctly handle both + "off" and "dormant" ZA-states on entry. The conforming states on return + are "off" and "dormant" (if inbound state was already "dormant"). + + This change ensures that the ZA-state on return is always "off". Note, + that, in the context of clone() and clone3(), "on return" means a point + when execution resumes at certain address after transferring from clone() + or clone3(). For the caller (we may refer to it as "parent") this is the + return address in the link register where the RET instruction jumps. For + the "child", this is the target branch address. + + So, the "off" state on return is permitted and conformant. Why can't we + retain the "dormant" state? In theory, we can, but we shouldn't, here is + why. + + Every subroutine with a private-ZA interface, including clone() and clone3(), + must comply with the lazy saving scheme [1] (6.7.2). This puts additional + responsibility on a subroutine if ZA-state on return is "dormant" because + this state has special meaning. The "caller" (that is the place in code + where execution is transferred to, so this include both "parent" and "child") + may check the ZA-state and use it as per the spec of the "dormant" state that + is outlined in [1] (6.6.6 and 6.6.7). + + Conforming to this would require more code inside of clone() and clone3() + which hardly is desirable. + + For the return to "parent" this could be achieved in theory, but given that + neither clone() nor clone3() are supposed to be used in the middle of an + SME operation, if wouldn't be useful. For the "return" to "child" this + would be particularly difficult to achieve given the complexity of these + functions and their interfaces. Most importantly, it would be illegal + and somewhat meaningless to allow a "child" to start execution in the + "dormant" ZA-state because the very essence of the "dormant" state implies + that there is a place to return and that there is some outer context that + we are allowed to interact with. + + To sum up, calling __arm_za_disable() to ensure the "off" ZA-state when the + execution resumes after a call to clone() or clone3() is correct and also + the most simple way to conform to [1]. + + Can there be situations when we can avoid calling __arm_za_disable()? + + Calling __arm_za_disable() implies certain (sufficiently small) overhead, + so one might rightly ponder avoiding making a call to this function when + we can afford not to. The most trivial cases like this (e.g. when the + calling thread doesn't have access to SME or to the TPIDR2_EL0 register) + are already handled by this function (see [1] (8.1.3 and 8.1.2)). Reasoning + about other possible use cases would require making code inside clone() and + clone3() more complicated and it would defeat the point of trying to make + an optimisation of not calling __arm_za_disable(). + + Why can't the kernel do this instead? + + The handling of SME state by the kernel is described in [4]. In short, + kernel must not impose a specific ZA-interface onto a userspace function. + Interaction with the kernel happens (among other thing) via system calls. + In Glibc many of the system calls (notably, including SYS_clone and + SYS_clone3) are used via wrappers, and the kernel has no control of them + and, moreover, it cannot dictate how these wrappers should behave because + it is simply outside of the kernel's remit. + + However, in certain cases, the kernel may ensure that a "child" doesn't + start in an incorrect state. This is what is done by the recent change + included in 6.16 kernel [5]. This is not enough to ensure that code that + uses clone() and clone3() function conforms to [1] when it runs on a + system that provides SME, hence this change. + + [1]: https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst + [2]: https://inbox.sourceware.org/libc-alpha/20250522114828.2291047-1-yury.khrustalev@arm.com + [3]: https://inbox.sourceware.org/libc-alpha/20250609121407.3316070-1-yury.khrustalev@arm.com + [4]: https://www.kernel.org/doc/html/v6.16/arch/arm64/sme.html + [5]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cde5c32db55740659fca6d56c09b88800d88fd29 + + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 27effb3d50424fb9634be77a2acd614b0386ff25) + +diff --git a/sysdeps/unix/sysv/linux/aarch64/clone.S b/sysdeps/unix/sysv/linux/aarch64/clone.S +index 40015c6933..53f1efd728 100644 +--- a/sysdeps/unix/sysv/linux/aarch64/clone.S ++++ b/sysdeps/unix/sysv/linux/aarch64/clone.S +@@ -45,6 +45,9 @@ ENTRY(__clone) + and x1, x1, -16 + cbz x1, .Lsyscall_error + ++ /* Clear ZA state of SME. */ ++ CALL_LIBC_ARM_ZA_DISABLE ++ + /* Do the system call. */ + /* X0:flags, x1:newsp, x2:parenttidptr, x3:newtls, x4:childtid. */ + mov x0, x2 /* flags */ +diff --git a/sysdeps/unix/sysv/linux/aarch64/clone3.S b/sysdeps/unix/sysv/linux/aarch64/clone3.S +index c9ca845ef2..bc978b7e10 100644 +--- a/sysdeps/unix/sysv/linux/aarch64/clone3.S ++++ b/sysdeps/unix/sysv/linux/aarch64/clone3.S +@@ -46,6 +46,9 @@ ENTRY(__clone3) + cbz x10, .Lsyscall_error /* No NULL cl_args pointer. */ + cbz x2, .Lsyscall_error /* No NULL function pointer. */ + ++ /* Clear ZA state of SME. */ ++ CALL_LIBC_ARM_ZA_DISABLE ++ + /* Do the system call, the kernel expects: + x8: system call number + x0: cl_args +diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h +index fa01386b25..30003c0145 100644 +--- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h ++++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h +@@ -242,6 +242,31 @@ + #undef HAVE_INTERNAL_BRK_ADDR_SYMBOL + #define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1 + ++/* Clear ZA state of SME (C version). */ ++/* The __libc_arm_za_disable function has special calling convention ++ that allows to call it without stack manipulation and preserving ++ most of the registers. */ ++#define CALL_LIBC_ARM_ZA_DISABLE() \ ++({ \ ++ unsigned long int __tmp; \ ++ asm volatile ( \ ++ " mov %0, x30\n" \ ++ " .cfi_register x30, %0\n" \ ++ " bl __libc_arm_za_disable\n" \ ++ " mov x30, %0\n" \ ++ " .cfi_register %0, x30\n" \ ++ : "=r" (__tmp) \ ++ : \ ++ : "x14", "x15", "x16", "x17", "x18", "memory" ); \ ++}) ++ ++/* Do clear ZA state of SME before making normal clone syscall. */ ++#define INLINE_CLONE_SYSCALL(a0, a1, a2, a3, a4) \ ++({ \ ++ CALL_LIBC_ARM_ZA_DISABLE (); \ ++ INLINE_SYSCALL_CALL (clone, a0, a1, a2, a3, a4); \ ++}) ++ + #endif /* __ASSEMBLER__ */ + + #endif /* linux/aarch64/sysdep.h */ +diff --git a/sysdeps/unix/sysv/linux/aarch64/vfork.S b/sysdeps/unix/sysv/linux/aarch64/vfork.S +index d5943a7485..2600bc9be3 100644 +--- a/sysdeps/unix/sysv/linux/aarch64/vfork.S ++++ b/sysdeps/unix/sysv/linux/aarch64/vfork.S +@@ -27,6 +27,9 @@ + + ENTRY (__vfork) + ++ /* Clear ZA state of SME. */ ++ CALL_LIBC_ARM_ZA_DISABLE ++ + mov x0, #0x4111 /* CLONE_VM | CLONE_VFORK | SIGCHLD */ + mov x1, sp + DO_CALL (clone, 2) + +commit 71874f167aa5bb1538ff7e394beaacee28ebe65f +Author: Yury Khrustalev +Date: Fri Sep 26 10:03:45 2025 +0100 + + aarch64: tests for SME + + This commit adds tests for the following use cases relevant to handing of + the SME state: + + - fork() and vfork() + - clone() and clone3() + - signal handler + + While most cases are trivial, the case of clone3() is more complicated since + the clone3() symbol is not public in Glibc. + + To avoid having to check all possible ways clone3() may be called via other + public functions (e.g. vfork() or pthread_create()), we put together a test + that links directly with clone3.o. All the existing functions that have calls + to clone3() may not actually use it, in which case the outcome of such tests + would be unexpected. Having a direct call to the clone3() symbol in the test + allows to check precisely what we need to test: that the __arm_za_disable() + function is indeed called and has the desired effect. + + Linking to clone3.o also requires linking to __arm_za_disable.o that in + turn requires the _dl_hwcap2 hidden symbol which to provide in the test + and initialise it before using. + + Co-authored-by: Adhemerval Zanella Netto + Reviewed-by: Adhemerval Zanella + (cherry picked from commit ecb0fc2f0f839f36cd2a106283142c9df8ea8214) + +diff --git a/sysdeps/aarch64/Makefile b/sysdeps/aarch64/Makefile +index bb97d31355..9479fb9679 100644 +--- a/sysdeps/aarch64/Makefile ++++ b/sysdeps/aarch64/Makefile +@@ -79,8 +79,18 @@ sysdep_routines += \ + + tests += \ + tst-sme-jmp \ ++ tst-sme-signal \ + tst-sme-za-state \ + # tests ++tests-internal += \ ++ tst-sme-clone \ ++ tst-sme-clone3 \ ++ tst-sme-fork \ ++ tst-sme-vfork \ ++ # tests-internal ++ ++$(objpfx)tst-sme-clone3: $(objpfx)clone3.o $(objpfx)__arm_za_disable.o ++ + endif + + ifeq ($(subdir),malloc) +diff --git a/sysdeps/aarch64/tst-sme-clone.c b/sysdeps/aarch64/tst-sme-clone.c +new file mode 100644 +index 0000000000..7106ec7926 +--- /dev/null ++++ b/sysdeps/aarch64/tst-sme-clone.c +@@ -0,0 +1,53 @@ ++/* Test that ZA state of SME is cleared in both parent and child ++ when clone() syscall is used. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include "tst-sme-skeleton.c" ++ ++#include ++ ++static int ++fun (void * const arg) ++{ ++ printf ("in child: %s\n", (const char *)arg); ++ /* Check that ZA state of SME was disabled in child. */ ++ check_sme_za_state ("after clone in child", /* Clear. */ true); ++ return 0; ++} ++ ++static char __attribute__((aligned(16))) ++stack[1024 * 1024]; ++ ++static void ++run (struct blk *ptr) ++{ ++ char *syscall_name = (char *)"clone"; ++ printf ("in parent: before %s\n", syscall_name); ++ ++ /* Enabled ZA state so that effect of disabling be observable. */ ++ enable_sme_za_state (ptr); ++ check_sme_za_state ("before clone", /* Clear. */ false); ++ ++ pid_t pid = xclone (fun, syscall_name, stack, sizeof (stack), ++ CLONE_NEWUSER | CLONE_NEWNS | SIGCHLD); ++ ++ /* Check that ZA state of SME was disabled in parent. */ ++ check_sme_za_state ("after clone in parent", /* Clear. */ true); ++ ++ TEST_VERIFY (xwaitpid (pid, NULL, 0) == pid); ++} +diff --git a/sysdeps/aarch64/tst-sme-clone3.c b/sysdeps/aarch64/tst-sme-clone3.c +new file mode 100644 +index 0000000000..402b040cfd +--- /dev/null ++++ b/sysdeps/aarch64/tst-sme-clone3.c +@@ -0,0 +1,84 @@ ++/* Test that ZA state of SME is cleared in both parent and child ++ when clone3() syscall is used. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include "tst-sme-skeleton.c" ++ ++#include ++ ++#include ++#include ++#include ++ ++/* Since clone3 is not a public symbol, we link this test explicitly ++ with clone3.o and have to provide this declaration. */ ++int __clone3 (struct clone_args *cl_args, size_t size, ++ int (*func)(void *arg), void *arg); ++ ++static int ++fun (void * const arg) ++{ ++ printf ("in child: %s\n", (const char *)arg); ++ /* Check that ZA state of SME was disabled in child. */ ++ check_sme_za_state ("after clone3 in child", /* Clear. */ true); ++ return 0; ++} ++ ++static char __attribute__((aligned(16))) ++stack[1024 * 1024]; ++ ++/* Required by __arm_za_disable.o and provided by the startup code ++ as a hidden symbol. */ ++uint64_t _dl_hwcap2; ++ ++static void ++run (struct blk *ptr) ++{ ++ _dl_hwcap2 = getauxval (AT_HWCAP2); ++ ++ char *syscall_name = (char *)"clone3"; ++ struct clone_args args = { ++ .flags = CLONE_VM | CLONE_VFORK, ++ .exit_signal = SIGCHLD, ++ .stack = (uintptr_t) stack, ++ .stack_size = sizeof (stack), ++ }; ++ printf ("in parent: before %s\n", syscall_name); ++ ++ /* Enabled ZA state so that effect of disabling be observable. */ ++ enable_sme_za_state (ptr); ++ check_sme_za_state ("before clone3", /* Clear. */ false); ++ ++ pid_t pid = __clone3 (&args, sizeof (args), fun, syscall_name); ++ ++ /* Check that ZA state of SME was disabled in parent. */ ++ check_sme_za_state ("after clone3 in parent", /* Clear. */ true); ++ ++ printf ("%s child pid: %d\n", syscall_name, pid); ++ ++ xwaitpid (pid, NULL, 0); ++ printf ("in parent: after %s\n", syscall_name); ++} ++ ++/* Workaround to simplify linking with clone3.o. */ ++void __syscall_error(int code) ++{ ++ int err = -code; ++ fprintf (stderr, "syscall error %d (%s)\n", err, strerror (err)); ++ exit (err); ++} +diff --git a/sysdeps/aarch64/tst-sme-fork.c b/sysdeps/aarch64/tst-sme-fork.c +new file mode 100644 +index 0000000000..b003b08884 +--- /dev/null ++++ b/sysdeps/aarch64/tst-sme-fork.c +@@ -0,0 +1,43 @@ ++/* Test that ZA state of SME is cleared in both parent and child ++ when fork() function is used. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include "tst-sme-skeleton.c" ++ ++static void ++run (struct blk *blk) ++{ ++ /* Enabled ZA state so that effect of disabling be observable. */ ++ enable_sme_za_state (blk); ++ check_sme_za_state ("before fork", /* Clear. */ false); ++ fflush (stdout); ++ ++ pid_t pid = xfork (); ++ ++ if (pid == 0) ++ { ++ /* Check that ZA state of SME was disabled in child. */ ++ check_sme_za_state ("after fork in child", /* Clear. */ true); ++ exit (0); ++ } ++ ++ /* Check that ZA state of SME was disabled in parent. */ ++ check_sme_za_state ("after fork in parent", /* Clear. */ true); ++ ++ TEST_VERIFY (xwaitpid (pid, NULL, 0) == pid); ++} +diff --git a/sysdeps/aarch64/tst-sme-helper.h b/sysdeps/aarch64/tst-sme-helper.h +index f049416c2b..ab9c503e45 100644 +--- a/sysdeps/aarch64/tst-sme-helper.h ++++ b/sysdeps/aarch64/tst-sme-helper.h +@@ -16,9 +16,6 @@ + License along with the GNU C Library; if not, see + . */ + +-/* Streaming SVE vector register size. */ +-static unsigned long svl; +- + struct blk { + void *za_save_buffer; + uint16_t num_za_save_slices; +@@ -68,10 +65,10 @@ start_za (void) + + /* Load data into ZA byte by byte from p. */ + static void __attribute__ ((noinline)) +-load_za (const void *p) ++load_za (const void *buf, unsigned long svl) + { + register unsigned long x15 asm ("x15") = 0; +- register unsigned long x16 asm ("x16") = (unsigned long)p; ++ register unsigned long x16 asm ("x16") = (unsigned long)buf; + register unsigned long x17 asm ("x17") = svl; + + asm volatile ( +diff --git a/sysdeps/aarch64/tst-sme-jmp.c b/sysdeps/aarch64/tst-sme-jmp.c +index 103897ad36..b2d21c6e1a 100644 +--- a/sysdeps/aarch64/tst-sme-jmp.c ++++ b/sysdeps/aarch64/tst-sme-jmp.c +@@ -29,6 +29,9 @@ + + #include "tst-sme-helper.h" + ++/* Streaming SVE vector register size. */ ++static unsigned long svl; ++ + static uint8_t *za_orig; + static uint8_t *za_dump; + static uint8_t *za_save; +@@ -82,7 +85,7 @@ longjmp_test (void) + FAIL_EXIT1 ("svcr != 0: %lu", svcr); + set_tpidr2 (&blk); + start_za (); +- load_za (za_orig); ++ load_za (za_orig, svl); + + print_data ("za save space", za_save); + p = get_tpidr2 (); +@@ -131,7 +134,7 @@ setcontext_test (void) + FAIL_EXIT1 ("svcr != 0: %lu", svcr); + set_tpidr2 (&blk); + start_za (); +- load_za (za_orig); ++ load_za (za_orig, svl); + + print_data ("za save space", za_save); + p = get_tpidr2 (); +diff --git a/sysdeps/aarch64/tst-sme-signal.c b/sysdeps/aarch64/tst-sme-signal.c +new file mode 100644 +index 0000000000..b4b07bcc44 +--- /dev/null ++++ b/sysdeps/aarch64/tst-sme-signal.c +@@ -0,0 +1,115 @@ ++/* Test handling of SME state in a signal handler. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include "tst-sme-skeleton.c" ++ ++#include ++ ++static struct _aarch64_ctx * ++extension (void *p) ++{ ++ return p; ++} ++ ++#ifndef TPIDR2_MAGIC ++#define TPIDR2_MAGIC 0x54504902 ++#endif ++ ++#ifndef ZA_MAGIC ++#define ZA_MAGIC 0x54366345 ++#endif ++ ++#ifndef ZT_MAGIC ++#define ZT_MAGIC 0x5a544e01 ++#endif ++ ++#ifndef EXTRA_MAGIC ++#define EXTRA_MAGIC 0x45585401 ++#endif ++ ++/* We use a pipe to make sure that the final check of the SME state ++ happens after signal handler finished. */ ++static int pipefd[2]; ++ ++#define WRITE(msg) xwrite (1, msg, sizeof (msg)); ++ ++static void ++handler (int signo, siginfo_t *si, void *ctx) ++{ ++ TEST_VERIFY (signo == SIGUSR1); ++ WRITE ("in the handler\n"); ++ check_sme_za_state ("during signal", true /* State is clear. */); ++ ucontext_t *uc = ctx; ++ void *p = uc->uc_mcontext.__reserved; ++ unsigned int found = 0; ++ uint32_t m; ++ while ((m = extension (p)->magic)) ++ { ++ if (m == TPIDR2_MAGIC) ++ { ++ WRITE ("found TPIDR2_MAGIC\n"); ++ found += 1; ++ } ++ if (m == ZA_MAGIC) ++ { ++ WRITE ("found ZA_MAGIC\n"); ++ found += 1; ++ } ++ if (m == ZT_MAGIC) ++ { ++ WRITE ("found ZT_MAGIC\n"); ++ found += 1; ++ } ++ if (m == EXTRA_MAGIC) ++ { ++ WRITE ("found EXTRA_MAGIC\n"); ++ struct { struct _aarch64_ctx h; uint64_t data; } *e = p; ++ p = (char *)e->data; ++ continue; ++ } ++ p = (char *)p + extension (p)->size; ++ } ++ TEST_COMPARE (found, 3); ++ ++ /* Signal that the wait is over (see below). */ ++ char message = '\0'; ++ xwrite (pipefd[1], &message, 1); ++} ++ ++static void ++run (struct blk *blk) ++{ ++ xpipe (pipefd); ++ ++ struct sigaction sigact; ++ sigemptyset (&sigact.sa_mask); ++ sigact.sa_flags = 0; ++ sigact.sa_flags |= SA_SIGINFO; ++ sigact.sa_sigaction = handler; ++ xsigaction (SIGUSR1, &sigact, NULL); ++ ++ enable_sme_za_state (blk); ++ check_sme_za_state ("before signal", false /* State is not clear. */); ++ xraise (SIGUSR1); ++ ++ /* Wait for signal handler to complete. */ ++ char response; ++ xread (pipefd[0], &response, 1); ++ ++ check_sme_za_state ("after signal", false /* State is not clear. */); ++} +diff --git a/sysdeps/aarch64/tst-sme-skeleton.c b/sysdeps/aarch64/tst-sme-skeleton.c +new file mode 100644 +index 0000000000..ba84dda1cb +--- /dev/null ++++ b/sysdeps/aarch64/tst-sme-skeleton.c +@@ -0,0 +1,101 @@ ++/* Template for SME tests. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "tst-sme-helper.h" ++ ++/* Streaming SVE vector register size. */ ++static unsigned long svl; ++ ++static uint8_t *state; ++ ++static void ++enable_sme_za_state (struct blk *blk) ++{ ++ start_za (); ++ set_tpidr2 (blk); ++ load_za (blk, svl); ++} ++ ++/* Check if SME state is disabled (when CLEAR is true) or ++ enabled (when CLEAR is false). */ ++static void ++check_sme_za_state (const char msg[], bool clear) ++{ ++ unsigned long svcr = get_svcr (); ++ void *tpidr2 = get_tpidr2 (); ++ printf ("[%s]\n", msg); ++ printf ("svcr = %016lx\n", svcr); ++ printf ("tpidr2 = %016lx\n", (unsigned long)tpidr2); ++ if (clear) ++ { ++ TEST_VERIFY (svcr == 0); ++ TEST_VERIFY (tpidr2 == NULL); ++ } ++ else ++ { ++ TEST_VERIFY (svcr != 0); ++ TEST_VERIFY (tpidr2 != NULL); ++ } ++} ++ ++/* Should be defined in actual test that includes this ++ skeleton file. */ ++static void ++run (struct blk *ptr); ++ ++static int ++do_test (void) ++{ ++ unsigned long hwcap2 = getauxval (AT_HWCAP2); ++ if ((hwcap2 & HWCAP2_SME) == 0) ++ return EXIT_UNSUPPORTED; ++ ++ /* Get current streaming SVE vector length in bytes. */ ++ svl = get_svl (); ++ printf ("svl: %lu\n", svl); ++ ++ TEST_VERIFY_EXIT (!(svl < 16 || svl % 16 != 0 || svl >= (1 << 16))); ++ ++ /* Initialise buffer for ZA state of SME. */ ++ state = xmalloc (svl * svl); ++ memset (state, 1, svl * svl); ++ struct blk blk = { ++ .za_save_buffer = state, ++ .num_za_save_slices = svl, ++ .__reserved = {0}, ++ }; ++ ++ run (&blk); ++ ++ free (state); ++ return 0; ++} ++ ++#include +diff --git a/sysdeps/aarch64/tst-sme-vfork.c b/sysdeps/aarch64/tst-sme-vfork.c +new file mode 100644 +index 0000000000..3feea065e5 +--- /dev/null ++++ b/sysdeps/aarch64/tst-sme-vfork.c +@@ -0,0 +1,43 @@ ++/* Test that ZA state of SME is cleared in both parent and child ++ when vfork() function is used. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include "tst-sme-skeleton.c" ++ ++static void ++run (struct blk *blk) ++{ ++ /* Enabled ZA state so that effect of disabling be observable. */ ++ enable_sme_za_state (blk); ++ check_sme_za_state ("before vfork", /* Clear. */ false); ++ fflush (stdout); ++ ++ pid_t pid = vfork (); ++ ++ if (pid == 0) ++ { ++ /* Check that ZA state of SME was disabled in child. */ ++ check_sme_za_state ("after vfork in child", /* Clear. */ true); ++ _exit (0); ++ } ++ ++ /* Check that ZA state of SME was disabled in parent. */ ++ check_sme_za_state ("after vfork in parent", /* Clear. */ true); ++ ++ TEST_VERIFY (xwaitpid (pid, NULL, 0) == pid); ++} +diff --git a/sysdeps/aarch64/tst-sme-za-state.c b/sysdeps/aarch64/tst-sme-za-state.c +index 63f6eebeb4..00118ef506 100644 +--- a/sysdeps/aarch64/tst-sme-za-state.c ++++ b/sysdeps/aarch64/tst-sme-za-state.c +@@ -16,47 +16,9 @@ + License along with the GNU C Library; if not, see + . */ + +-#include +-#include +-#include +-#include +-#include +- +-#include +-#include +-#include +- +-#include "tst-sme-helper.h" +- +-static uint8_t *state; +- +-static void +-enable_sme_za_state (struct blk *ptr) +-{ +- set_tpidr2 (ptr); +- start_za (); +- load_za (state); +-} ++#include "tst-sme-skeleton.c" + +-static void +-check_sme_za_state (const char msg[], bool clear) +-{ +- unsigned long svcr = get_svcr (); +- void *tpidr2 = get_tpidr2 (); +- printf ("[%s]\n", msg); +- printf ("svcr = %016lx\n", svcr); +- printf ("tpidr2 = %016lx\n", (unsigned long)tpidr2); +- if (clear) +- { +- TEST_VERIFY (svcr == 0); +- TEST_VERIFY (tpidr2 == NULL); +- } +- else +- { +- TEST_VERIFY (svcr != 0); +- TEST_VERIFY (tpidr2 != NULL); +- } +-} ++#include + + static void + run (struct blk *ptr) +@@ -88,32 +50,3 @@ run (struct blk *ptr) + TEST_COMPARE (ret, 42); + check_sme_za_state ("after longjmp", /* Clear. */ true); + } +- +-static int +-do_test (void) +-{ +- unsigned long hwcap2 = getauxval (AT_HWCAP2); +- if ((hwcap2 & HWCAP2_SME) == 0) +- return EXIT_UNSUPPORTED; +- +- /* Get current streaming SVE vector register size. */ +- svl = get_svl (); +- printf ("svl: %lu\n", svl); +- TEST_VERIFY_EXIT (!(svl < 16 || svl % 16 != 0 || svl >= (1 << 16))); +- +- /* Initialise buffer for ZA state of SME. */ +- state = xmalloc (svl * svl); +- memset (state, 1, svl * svl); +- struct blk blk = { +- .za_save_buffer = state, +- .num_za_save_slices = svl, +- .__reserved = {0}, +- }; +- +- run (&blk); +- +- free (state); +- return 0; +-} +- +-#include + +commit bf499c2a4964bddc25a006ec1402f8996d78c6ff +Author: Jiamei Xie +Date: Tue Oct 14 20:14:11 2025 +0800 + + x86: fix wmemset ifunc stray '!' (bug 33542) + + The ifunc selector for wmemset had a stray '!' in the + X86_ISA_CPU_FEATURES_ARCH_P(...) check: + + if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX2) + && X86_ISA_CPU_FEATURES_ARCH_P (cpu_features, + AVX_Fast_Unaligned_Load, !)) + + This effectively negated the predicate and caused the AVX2/AVX512 + paths to be skipped, making the dispatcher fall back to the SSE2 + implementation even on CPUs where AVX2/AVX512 are available. The + regression leads to noticeable throughput loss for wmemset. + + Remove the stray '!' so the AVX_Fast_Unaligned_Load capability is + tested as intended and the correct AVX2/EVEX variants are selected. + + Impact: + - On AVX2/AVX512-capable x86_64, wmemset no longer incorrectly + falls back to SSE2; perf now shows __wmemset_evex/avx2 variants. + + Testing: + - benchtests/bench-wmemset shows improved bandwidth across sizes. + - perf confirm the selected symbol is no longer SSE2. + + Signed-off-by: xiejiamei + Signed-off-by: Li jing + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 4d86b6cdd8132e0410347e07262239750f86dfb4) + +diff --git a/sysdeps/x86_64/multiarch/ifunc-wmemset.h b/sysdeps/x86_64/multiarch/ifunc-wmemset.h +index f95cca6ae5..50af138230 100644 +--- a/sysdeps/x86_64/multiarch/ifunc-wmemset.h ++++ b/sysdeps/x86_64/multiarch/ifunc-wmemset.h +@@ -35,7 +35,7 @@ IFUNC_SELECTOR (void) + + if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX2) + && X86_ISA_CPU_FEATURES_ARCH_P (cpu_features, +- AVX_Fast_Unaligned_Load, !)) ++ AVX_Fast_Unaligned_Load,)) + { + if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512VL)) + { + +commit de1fe81f471496366580ad728b8986a3424b2fd7 +Author: Yury Khrustalev +Date: Tue Oct 28 11:01:50 2025 +0000 + + aarch64: fix cfi directives around __libc_arm_za_disable + + Incorrect CFI directive corrupted call stack information + and prevented debuggers from correctly displaying call + stack information. + + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 2f77aec043f61e8533487850b11941a640ae2dea) + +diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h +index 30003c0145..8a7690d4a8 100644 +--- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h ++++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h +@@ -155,11 +155,12 @@ + that allows to call it without stack manipulation and preserving + most of the registers. */ + .macro CALL_LIBC_ARM_ZA_DISABLE ++ cfi_remember_state + mov x13, x30 +- .cfi_register x30, x13 ++ cfi_register(x30, x13) + bl __libc_arm_za_disable + mov x30, x13 +- .cfi_register x13, x30 ++ cfi_restore_state + .endm + + #else /* not __ASSEMBLER__ */ +@@ -250,11 +251,12 @@ + ({ \ + unsigned long int __tmp; \ + asm volatile ( \ ++ " .cfi_remember_state\n" \ + " mov %0, x30\n" \ +- " .cfi_register x30, %0\n" \ ++ " .cfi_register x30, %0\n" \ + " bl __libc_arm_za_disable\n" \ + " mov x30, %0\n" \ +- " .cfi_register %0, x30\n" \ ++ " .cfi_restore_state\n" \ + : "=r" (__tmp) \ + : \ + : "x14", "x15", "x16", "x17", "x18", "memory" ); \ + +commit 17c3eab387c3ceb6972e57888a89b1480793f81a +Author: Yury Khrustalev +Date: Tue Nov 11 11:40:25 2025 +0000 + + aarch64: fix includes in SME tests + + Use the correct include for the SIGCHLD macro: signal.h + + Reviewed-by: Wilco Dijkstra + (cherry picked from commit a9c426bcca59a9e228c4fbe75e75154217ec4ada) + +diff --git a/sysdeps/aarch64/tst-sme-clone.c b/sysdeps/aarch64/tst-sme-clone.c +index 7106ec7926..b6ad54fa37 100644 +--- a/sysdeps/aarch64/tst-sme-clone.c ++++ b/sysdeps/aarch64/tst-sme-clone.c +@@ -19,6 +19,7 @@ + + #include "tst-sme-skeleton.c" + ++#include + #include + + static int +diff --git a/sysdeps/aarch64/tst-sme-clone3.c b/sysdeps/aarch64/tst-sme-clone3.c +index 402b040cfd..f420d5984d 100644 +--- a/sysdeps/aarch64/tst-sme-clone3.c ++++ b/sysdeps/aarch64/tst-sme-clone3.c +@@ -22,7 +22,7 @@ + #include + + #include +-#include ++#include + #include + + /* Since clone3 is not a public symbol, we link this test explicitly + +commit 97297120ce04f0edd16ed0357a11ef8731c5bd1e +Author: Joe Ramsay +Date: Thu Nov 6 15:36:03 2025 +0000 + + AArch64: Optimise SVE scalar callbacks + + Instead of using SVE instructions to marshall special results into the + correct lane, just write the entire vector (and the predicate) to + memory, then use cheaper scalar operations. + + Geomean speedup of 16% in special intervals on Neoverse with GCC 14. + + Reviewed-by: Wilco Dijkstra + (cherry picked from commit 5b82fb18827e962af9f080fdf3c1a69802783f67) + +diff --git a/sysdeps/aarch64/fpu/sv_math.h b/sysdeps/aarch64/fpu/sv_math.h +index 3d576df4cc..65d7f0ff20 100644 +--- a/sysdeps/aarch64/fpu/sv_math.h ++++ b/sysdeps/aarch64/fpu/sv_math.h +@@ -24,11 +24,29 @@ + + #include "vecmath_config.h" + ++#if !defined(__ARM_FEATURE_SVE_BITS) || __ARM_FEATURE_SVE_BITS == 0 ++/* If not specified by -msve-vector-bits, assume maximum vector length. */ ++# define SVE_VECTOR_BYTES 256 ++#else ++# define SVE_VECTOR_BYTES (__ARM_FEATURE_SVE_BITS / 8) ++#endif ++#define SVE_NUM_FLTS (SVE_VECTOR_BYTES / sizeof (float)) ++#define SVE_NUM_DBLS (SVE_VECTOR_BYTES / sizeof (double)) ++/* Predicate is stored as one bit per byte of VL so requires VL / 64 bytes. */ ++#define SVE_NUM_PG_BYTES (SVE_VECTOR_BYTES / sizeof (uint64_t)) ++ + #define SV_NAME_F1(fun) _ZGVsMxv_##fun##f + #define SV_NAME_D1(fun) _ZGVsMxv_##fun + #define SV_NAME_F2(fun) _ZGVsMxvv_##fun##f + #define SV_NAME_D2(fun) _ZGVsMxvv_##fun + ++static inline void ++svstr_p (uint8_t *dst, svbool_t p) ++{ ++ /* Predicate STR does not currently have an intrinsic. */ ++ __asm__("str %0, [%x1]\n" : : "Upa"(p), "r"(dst) : "memory"); ++} ++ + /* Double precision. */ + static inline svint64_t + sv_s64 (int64_t x) +@@ -51,33 +69,35 @@ sv_f64 (double x) + static inline svfloat64_t + sv_call_f64 (double (*f) (double), svfloat64_t x, svfloat64_t y, svbool_t cmp) + { +- svbool_t p = svpfirst (cmp, svpfalse ()); +- while (svptest_any (cmp, p)) ++ double tmp[SVE_NUM_DBLS]; ++ uint8_t pg_bits[SVE_NUM_PG_BYTES]; ++ svstr_p (pg_bits, cmp); ++ svst1 (svptrue_b64 (), tmp, svsel (cmp, x, y)); ++ ++ for (int i = 0; i < svcntd (); i++) + { +- double elem = svclastb_n_f64 (p, 0, x); +- elem = (*f) (elem); +- svfloat64_t y2 = svdup_n_f64 (elem); +- y = svsel_f64 (p, y2, y); +- p = svpnext_b64 (cmp, p); ++ if (pg_bits[i] & 1) ++ tmp[i] = f (tmp[i]); + } +- return y; ++ return svld1 (svptrue_b64 (), tmp); + } + + static inline svfloat64_t + sv_call2_f64 (double (*f) (double, double), svfloat64_t x1, svfloat64_t x2, + svfloat64_t y, svbool_t cmp) + { +- svbool_t p = svpfirst (cmp, svpfalse ()); +- while (svptest_any (cmp, p)) ++ double tmp1[SVE_NUM_DBLS], tmp2[SVE_NUM_DBLS]; ++ uint8_t pg_bits[SVE_NUM_PG_BYTES]; ++ svstr_p (pg_bits, cmp); ++ svst1 (svptrue_b64 (), tmp1, svsel (cmp, x1, y)); ++ svst1 (cmp, tmp2, x2); ++ ++ for (int i = 0; i < svcntd (); i++) + { +- double elem1 = svclastb_n_f64 (p, 0, x1); +- double elem2 = svclastb_n_f64 (p, 0, x2); +- double ret = (*f) (elem1, elem2); +- svfloat64_t y2 = svdup_n_f64 (ret); +- y = svsel_f64 (p, y2, y); +- p = svpnext_b64 (cmp, p); ++ if (pg_bits[i] & 1) ++ tmp1[i] = f (tmp1[i], tmp2[i]); + } +- return y; ++ return svld1 (svptrue_b64 (), tmp1); + } + + static inline svuint64_t +@@ -109,33 +129,40 @@ sv_f32 (float x) + static inline svfloat32_t + sv_call_f32 (float (*f) (float), svfloat32_t x, svfloat32_t y, svbool_t cmp) + { +- svbool_t p = svpfirst (cmp, svpfalse ()); +- while (svptest_any (cmp, p)) ++ float tmp[SVE_NUM_FLTS]; ++ uint8_t pg_bits[SVE_NUM_PG_BYTES]; ++ svstr_p (pg_bits, cmp); ++ svst1 (svptrue_b32 (), tmp, svsel (cmp, x, y)); ++ ++ for (int i = 0; i < svcntd (); i++) + { +- float elem = svclastb_n_f32 (p, 0, x); +- elem = f (elem); +- svfloat32_t y2 = svdup_n_f32 (elem); +- y = svsel_f32 (p, y2, y); +- p = svpnext_b32 (cmp, p); ++ uint8_t p = pg_bits[i]; ++ if (p & 1) ++ tmp[i * 2] = f (tmp[i * 2]); ++ if (p & (1 << 4)) ++ tmp[i * 2 + 1] = f (tmp[i * 2 + 1]); + } +- return y; ++ return svld1 (svptrue_b32 (), tmp); + } + + static inline svfloat32_t + sv_call2_f32 (float (*f) (float, float), svfloat32_t x1, svfloat32_t x2, + svfloat32_t y, svbool_t cmp) + { +- svbool_t p = svpfirst (cmp, svpfalse ()); +- while (svptest_any (cmp, p)) ++ float tmp1[SVE_NUM_FLTS], tmp2[SVE_NUM_FLTS]; ++ uint8_t pg_bits[SVE_NUM_PG_BYTES]; ++ svstr_p (pg_bits, cmp); ++ svst1 (svptrue_b32 (), tmp1, svsel (cmp, x1, y)); ++ svst1 (cmp, tmp2, x2); ++ ++ for (int i = 0; i < svcntd (); i++) + { +- float elem1 = svclastb_n_f32 (p, 0, x1); +- float elem2 = svclastb_n_f32 (p, 0, x2); +- float ret = f (elem1, elem2); +- svfloat32_t y2 = svdup_n_f32 (ret); +- y = svsel_f32 (p, y2, y); +- p = svpnext_b32 (cmp, p); ++ uint8_t p = pg_bits[i]; ++ if (p & 1) ++ tmp1[i * 2] = f (tmp1[i * 2], tmp2[i * 2]); ++ if (p & (1 << 4)) ++ tmp1[i * 2 + 1] = f (tmp1[i * 2 + 1], tmp2[i * 2 + 1]); + } +- return y; ++ return svld1 (svptrue_b32 (), tmp1); + } +- + #endif + +commit ec041b1f53bf1fd29d94ee147fac69da66437dc6 +Author: Joe Ramsay +Date: Thu Nov 6 18:26:54 2025 +0000 + + AArch64: Fix instability in AdvSIMD tan + + Previously presence of special-cases in one lane could affect the + results in other lanes due to unconditional scalar fallback. The old + WANT_SIMD_EXCEPT option (which has never been enabled in libmvec) has + been removed from AOR, making it easier to spot and fix this. 4% + improvement in throughput with GCC 14 on Neoverse V1. This bug is + present as far back as 2.39 (where tan was first introduced). + + Reviewed-by: Wilco Dijkstra + (cherry picked from commit 6c22823da57aa5218f717f569c04c9573c0448c5) + +diff --git a/sysdeps/aarch64/fpu/tan_advsimd.c b/sysdeps/aarch64/fpu/tan_advsimd.c +index 825c9754b3..d391a003d8 100644 +--- a/sysdeps/aarch64/fpu/tan_advsimd.c ++++ b/sysdeps/aarch64/fpu/tan_advsimd.c +@@ -25,9 +25,7 @@ static const struct data + float64x2_t poly[9]; + double half_pi[2]; + float64x2_t two_over_pi, shift; +-#if !WANT_SIMD_EXCEPT + float64x2_t range_val; +-#endif + } data = { + /* Coefficients generated using FPMinimax. */ + .poly = { V2 (0x1.5555555555556p-2), V2 (0x1.1111111110a63p-3), +@@ -38,20 +36,17 @@ static const struct data + .half_pi = { 0x1.921fb54442d18p0, 0x1.1a62633145c07p-54 }, + .two_over_pi = V2 (0x1.45f306dc9c883p-1), + .shift = V2 (0x1.8p52), +-#if !WANT_SIMD_EXCEPT + .range_val = V2 (0x1p23), +-#endif + }; + + #define RangeVal 0x4160000000000000 /* asuint64(0x1p23). */ + #define TinyBound 0x3e50000000000000 /* asuint64(2^-26). */ +-#define Thresh 0x310000000000000 /* RangeVal - TinyBound. */ + + /* Special cases (fall back to scalar calls). */ + static float64x2_t VPCS_ATTR NOINLINE +-special_case (float64x2_t x) ++special_case (float64x2_t x, float64x2_t n, float64x2_t d, uint64x2_t special) + { +- return v_call_f64 (tan, x, x, v_u64 (-1)); ++ return v_call_f64 (tan, x, vdivq_f64 (n, d), special); + } + + /* Vector approximation for double-precision tan. +@@ -65,14 +60,6 @@ float64x2_t VPCS_ATTR V_NAME_D1 (tan) (float64x2_t x) + very large inputs. Fall back to scalar routine for all lanes if any are + too large, or Inf/NaN. If fenv exceptions are expected, also fall back for + tiny input to avoid underflow. */ +-#if WANT_SIMD_EXCEPT +- uint64x2_t iax = vreinterpretq_u64_f64 (vabsq_f64 (x)); +- /* iax - tiny_bound > range_val - tiny_bound. */ +- uint64x2_t special +- = vcgtq_u64 (vsubq_u64 (iax, v_u64 (TinyBound)), v_u64 (Thresh)); +- if (__glibc_unlikely (v_any_u64 (special))) +- return special_case (x); +-#endif + + /* q = nearest integer to 2 * x / pi. */ + float64x2_t q +@@ -81,9 +68,8 @@ float64x2_t VPCS_ATTR V_NAME_D1 (tan) (float64x2_t x) + + /* Use q to reduce x to r in [-pi/4, pi/4], by: + r = x - q * pi/2, in extended precision. */ +- float64x2_t r = x; + float64x2_t half_pi = vld1q_f64 (dat->half_pi); +- r = vfmsq_laneq_f64 (r, q, half_pi, 0); ++ float64x2_t r = vfmsq_laneq_f64 (x, q, half_pi, 0); + r = vfmsq_laneq_f64 (r, q, half_pi, 1); + /* Further reduce r to [-pi/8, pi/8], to be reconstructed using double angle + formula. */ +@@ -114,12 +100,13 @@ float64x2_t VPCS_ATTR V_NAME_D1 (tan) (float64x2_t x) + + uint64x2_t no_recip = vtstq_u64 (vreinterpretq_u64_s64 (qi), v_u64 (1)); + +-#if !WANT_SIMD_EXCEPT + uint64x2_t special = vcageq_f64 (x, dat->range_val); ++ float64x2_t swap = vbslq_f64 (no_recip, n, vnegq_f64 (d)); ++ d = vbslq_f64 (no_recip, d, n); ++ n = swap; ++ + if (__glibc_unlikely (v_any_u64 (special))) +- return special_case (x); +-#endif ++ return special_case (x, n, d, special); + +- return vdivq_f64 (vbslq_f64 (no_recip, n, vnegq_f64 (d)), +- vbslq_f64 (no_recip, d, n)); ++ return vdivq_f64 (n, d); + } + +commit 0c9430ed976b961343dd29b752091f3c4771cf30 +Author: Joe Ramsay +Date: Thu Nov 6 18:29:33 2025 +0000 + + AArch64: Fix instability in AdvSIMD sinh + + Previously presence of special-cases in one lane could affect the + results in other lanes due to unconditional scalar fallback. The old + WANT_SIMD_EXCEPT option (which has never been enabled in libmvec) has + been removed from AOR, making it easier to spot and fix + this. No measured change in performance. This patch applies cleanly as + far back as 2.41, however there are conflicts with 2.40 where sinh was + first introduced. + + Reviewed-by: Wilco Dijkstra + (cherry picked from commit e45af510bc816e860c8e2e1d4a652b4fe15c4b34) + +diff --git a/sysdeps/aarch64/fpu/sinh_advsimd.c b/sysdeps/aarch64/fpu/sinh_advsimd.c +index 0d6a4856f8..b6b60262c6 100644 +--- a/sysdeps/aarch64/fpu/sinh_advsimd.c ++++ b/sysdeps/aarch64/fpu/sinh_advsimd.c +@@ -24,36 +24,26 @@ static const struct data + { + struct v_expm1_data d; + uint64x2_t halff; +-#if WANT_SIMD_EXCEPT +- uint64x2_t tiny_bound, thresh; +-#else + float64x2_t large_bound; +-#endif + } data = { + .d = V_EXPM1_DATA, + .halff = V2 (0x3fe0000000000000), +-#if WANT_SIMD_EXCEPT +- /* 2^-26, below which sinh(x) rounds to x. */ +- .tiny_bound = V2 (0x3e50000000000000), +- /* asuint(large_bound) - asuint(tiny_bound). */ +- .thresh = V2 (0x0230000000000000), +-#else + /* 2^9. expm1 helper overflows for large input. */ + .large_bound = V2 (0x1p+9), +-#endif + }; + + static float64x2_t NOINLINE VPCS_ATTR +-special_case (float64x2_t x) ++special_case (float64x2_t x, float64x2_t t, float64x2_t halfsign, ++ uint64x2_t special) + { +- return v_call_f64 (sinh, x, x, v_u64 (-1)); ++ return v_call_f64 (sinh, x, vmulq_f64 (t, halfsign), special); + } + + /* Approximation for vector double-precision sinh(x) using expm1. + sinh(x) = (exp(x) - exp(-x)) / 2. + The greatest observed error is 2.52 ULP: +- _ZGVnN2v_sinh(-0x1.a098a2177a2b9p-2) got -0x1.ac2f05bb66fccp-2 +- want -0x1.ac2f05bb66fc9p-2. */ ++ _ZGVnN2v_sinh(0x1.9f6ff2ab6fb19p-2) got 0x1.aaed83a3153ccp-2 ++ want 0x1.aaed83a3153c9p-2. */ + float64x2_t VPCS_ATTR V_NAME_D1 (sinh) (float64x2_t x) + { + const struct data *d = ptr_barrier (&data); +@@ -63,21 +53,16 @@ float64x2_t VPCS_ATTR V_NAME_D1 (sinh) (float64x2_t x) + float64x2_t halfsign = vreinterpretq_f64_u64 ( + vbslq_u64 (v_u64 (0x8000000000000000), ix, d->halff)); + +-#if WANT_SIMD_EXCEPT +- uint64x2_t special = vcgeq_u64 ( +- vsubq_u64 (vreinterpretq_u64_f64 (ax), d->tiny_bound), d->thresh); +-#else + uint64x2_t special = vcageq_f64 (x, d->large_bound); +-#endif +- +- /* Fall back to scalar variant for all lanes if any of them are special. */ +- if (__glibc_unlikely (v_any_u64 (special))) +- return special_case (x); + + /* Up to the point that expm1 overflows, we can use it to calculate sinh + using a slight rearrangement of the definition of sinh. This allows us to + retain acceptable accuracy for very small inputs. */ + float64x2_t t = expm1_inline (ax, &d->d); + t = vaddq_f64 (t, vdivq_f64 (t, vaddq_f64 (t, v_f64 (1.0)))); ++ ++ if (__glibc_unlikely (v_any_u64 (special))) ++ return special_case (x, t, halfsign, special); ++ + return vmulq_f64 (t, halfsign); + } + +commit 710d7a2e8374cf09280a0db170a6c813b70b59e5 +Author: Pierre Blanchard +Date: Tue Nov 18 15:03:10 2025 +0000 + + AArch64: fix SVE tanpi(f) [BZ #33642] + + Fixed svld1rq using incorrect predicates (BZ #33642). + Next to no performance variations (tested on V1). + + Reviewed-by: Wilco Dijkstra  + (cherry picked from commit e889160273a4c2b68870c9adf341955867d76a7d) + +diff --git a/sysdeps/aarch64/fpu/tanpi_sve.c b/sysdeps/aarch64/fpu/tanpi_sve.c +index 57c643ae29..bfe6828e1f 100644 +--- a/sysdeps/aarch64/fpu/tanpi_sve.c ++++ b/sysdeps/aarch64/fpu/tanpi_sve.c +@@ -1,6 +1,6 @@ + /* Double-precision (SVE) tanpi function + +- Copyright (C) 2024 Free Software Foundation, Inc. ++ Copyright (C) 2024-2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -58,10 +58,10 @@ svfloat64_t SV_NAME_D1 (tanpi) (svfloat64_t x, const svbool_t pg) + svfloat64_t r2 = svmul_x (pg, r, r); + svfloat64_t r4 = svmul_x (pg, r2, r2); + +- svfloat64_t c_1_3 = svld1rq (pg, &d->c1); +- svfloat64_t c_5_7 = svld1rq (pg, &d->c5); +- svfloat64_t c_9_11 = svld1rq (pg, &d->c9); +- svfloat64_t c_13_14 = svld1rq (pg, &d->c13); ++ svfloat64_t c_1_3 = svld1rq (svptrue_b64 (), &d->c1); ++ svfloat64_t c_5_7 = svld1rq (svptrue_b64 (), &d->c5); ++ svfloat64_t c_9_11 = svld1rq (svptrue_b64 (), &d->c9); ++ svfloat64_t c_13_14 = svld1rq (svptrue_b64 (), &d->c13); + svfloat64_t p01 = svmla_lane (sv_f64 (d->c0), r2, c_1_3, 0); + svfloat64_t p23 = svmla_lane (sv_f64 (d->c2), r2, c_1_3, 1); + svfloat64_t p45 = svmla_lane (sv_f64 (d->c4), r2, c_5_7, 0); +diff --git a/sysdeps/aarch64/fpu/tanpif_sve.c b/sysdeps/aarch64/fpu/tanpif_sve.c +index 0285f56f34..6894379564 100644 +--- a/sysdeps/aarch64/fpu/tanpif_sve.c ++++ b/sysdeps/aarch64/fpu/tanpif_sve.c +@@ -1,6 +1,6 @@ + /* Single-precision (SVE) tanpi function + +- Copyright (C) 2024 Free Software Foundation, Inc. ++ Copyright (C) 2024-2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -37,7 +37,7 @@ const static struct v_tanpif_data + svfloat32_t SV_NAME_F1 (tanpi) (svfloat32_t x, const svbool_t pg) + { + const struct v_tanpif_data *d = ptr_barrier (&tanpif_data); +- svfloat32_t odd_coeffs = svld1rq (pg, &d->c1); ++ svfloat32_t odd_coeffs = svld1rq (svptrue_b32 (), &d->c1); + svfloat32_t n = svrintn_x (pg, x); + + /* inf produces nan that propagates. */ + +commit 828b8d23f3fa05234d35032a61a746918accf91d +Author: Pierre Blanchard +Date: Tue Nov 18 15:09:05 2025 +0000 + + AArch64: Fix and improve SVE pow(f) special cases + + powf: + + Update scalar special case function to best use new interface. + + pow: + + Make specialcase NOINLINE to prevent str/ldr leaking in fast path. + Remove depency in sv_call2, as new callback impl is not a + performance gain. + Replace with vectorised specialcase since structure of scalar + routine is fairly simple. + + Throughput gain of about 5-10% on V1 for large values and 25% for subnormal `x`. + + Reviewed-by: Wilco Dijkstra  + (cherry picked from commit bb6519de1e6fe73d79bc71588ec4e5668907f080) + +diff --git a/sysdeps/aarch64/fpu/pow_sve.c b/sysdeps/aarch64/fpu/pow_sve.c +index b8c1b39dca..becf1a8410 100644 +--- a/sysdeps/aarch64/fpu/pow_sve.c ++++ b/sysdeps/aarch64/fpu/pow_sve.c +@@ -31,8 +31,8 @@ + The SVE algorithm drops the tail in the exp computation at the price of + a lower accuracy, slightly above 1ULP. + The SVE algorithm also drops the special treatement of small (< 2^-65) and +- large (> 2^63) finite values of |y|, as they only affect non-round to nearest +- modes. ++ large (> 2^63) finite values of |y|, as they only affect non-round to ++ nearest modes. + + Maximum measured error is 1.04 ULPs: + SV_NAME_D2 (pow) (0x1.3d2d45bc848acp+63, -0x1.a48a38b40cd43p-12) +@@ -156,42 +156,22 @@ sv_zeroinfnan (svbool_t pg, svuint64_t i) + a double. (int32_t)KI is the k used in the argument reduction and exponent + adjustment of scale, positive k here means the result may overflow and + negative k means the result may underflow. */ +-static inline double +-specialcase (double tmp, uint64_t sbits, uint64_t ki) +-{ +- double scale; +- if ((ki & 0x80000000) == 0) +- { +- /* k > 0, the exponent of scale might have overflowed by <= 460. */ +- sbits -= 1009ull << 52; +- scale = asdouble (sbits); +- return 0x1p1009 * (scale + scale * tmp); +- } +- /* k < 0, need special care in the subnormal range. */ +- sbits += 1022ull << 52; +- /* Note: sbits is signed scale. */ +- scale = asdouble (sbits); +- double y = scale + scale * tmp; +- return 0x1p-1022 * y; +-} +- +-/* Scalar fallback for special cases of SVE pow's exp. */ + static inline svfloat64_t +-sv_call_specialcase (svfloat64_t x1, svuint64_t u1, svuint64_t u2, +- svfloat64_t y, svbool_t cmp) ++specialcase (svfloat64_t tmp, svuint64_t sbits, svuint64_t ki, svbool_t cmp) + { +- svbool_t p = svpfirst (cmp, svpfalse ()); +- while (svptest_any (cmp, p)) +- { +- double sx1 = svclastb (p, 0, x1); +- uint64_t su1 = svclastb (p, 0, u1); +- uint64_t su2 = svclastb (p, 0, u2); +- double elem = specialcase (sx1, su1, su2); +- svfloat64_t y2 = sv_f64 (elem); +- y = svsel (p, y2, y); +- p = svpnext_b64 (cmp, p); +- } +- return y; ++ svbool_t p_pos = svcmpge_n_f64 (cmp, svreinterpret_f64_u64 (ki), 0.0); ++ ++ /* Scale up or down depending on sign of k. */ ++ svint64_t offset ++ = svsel_s64 (p_pos, sv_s64 (1009ull << 52), sv_s64 (-1022ull << 52)); ++ svfloat64_t factor ++ = svsel_f64 (p_pos, sv_f64 (0x1p1009), sv_f64 (0x1p-1022)); ++ ++ svuint64_t offset_sbits ++ = svsub_u64_x (cmp, sbits, svreinterpret_u64_s64 (offset)); ++ svfloat64_t scale = svreinterpret_f64_u64 (offset_sbits); ++ svfloat64_t res = svmad_f64_x (cmp, scale, tmp, scale); ++ return svmul_f64_x (cmp, res, factor); + } + + /* Compute y+TAIL = log(x) where the rounded result is y and TAIL has about +@@ -214,8 +194,8 @@ sv_log_inline (svbool_t pg, svuint64_t ix, svfloat64_t *tail, + + /* log(x) = k*Ln2 + log(c) + log1p(z/c-1). */ + /* SVE lookup requires 3 separate lookup tables, as opposed to scalar version +- that uses array of structures. We also do the lookup earlier in the code to +- make sure it finishes as early as possible. */ ++ that uses array of structures. We also do the lookup earlier in the code ++ to make sure it finishes as early as possible. */ + svfloat64_t invc = svld1_gather_index (pg, __v_pow_log_data.invc, i); + svfloat64_t logc = svld1_gather_index (pg, __v_pow_log_data.logc, i); + svfloat64_t logctail = svld1_gather_index (pg, __v_pow_log_data.logctail, i); +@@ -325,14 +305,14 @@ sv_exp_inline (svbool_t pg, svfloat64_t x, svfloat64_t xtail, + svbool_t oflow = svcmpge (pg, abstop, HugeExp); + oflow = svand_z (pg, uoflow, svbic_z (pg, oflow, uflow)); + +- /* For large |x| values (512 < |x| < 1024) scale * (1 + TMP) can overflow +- or underflow. */ ++ /* Handle underflow and overlow in scale. ++ For large |x| values (512 < |x| < 1024), scale * (1 + TMP) can ++ overflow or underflow. */ + svbool_t special = svbic_z (pg, uoflow, svorr_z (pg, uflow, oflow)); ++ if (__glibc_unlikely (svptest_any (pg, special))) ++ z = svsel (special, specialcase (tmp, sbits, ki, special), z); + +- /* Update result with special and large cases. */ +- z = sv_call_specialcase (tmp, sbits, ki, z, special); +- +- /* Handle underflow and overflow. */ ++ /* Handle underflow and overflow in exp. */ + svbool_t x_is_neg = svcmplt (pg, x, 0); + svuint64_t sign_mask + = svlsl_x (pg, sign_bias, 52 - V_POW_EXP_TABLE_BITS); +@@ -353,7 +333,7 @@ sv_exp_inline (svbool_t pg, svfloat64_t x, svfloat64_t xtail, + } + + static inline double +-pow_sc (double x, double y) ++pow_specialcase (double x, double y) + { + uint64_t ix = asuint64 (x); + uint64_t iy = asuint64 (y); +@@ -382,6 +362,14 @@ pow_sc (double x, double y) + return x; + } + ++/* Scalar fallback for special case routines with custom signature. */ ++static svfloat64_t NOINLINE ++sv_pow_specialcase (svfloat64_t x1, svfloat64_t x2, svfloat64_t y, ++ svbool_t cmp) ++{ ++ return sv_call2_f64 (pow_specialcase, x1, x2, y, cmp); ++} ++ + svfloat64_t SV_NAME_D2 (pow) (svfloat64_t x, svfloat64_t y, const svbool_t pg) + { + const struct data *d = ptr_barrier (&data); +@@ -444,7 +432,7 @@ svfloat64_t SV_NAME_D2 (pow) (svfloat64_t x, svfloat64_t y, const svbool_t pg) + + /* Cases of zero/inf/nan x or y. */ + if (__glibc_unlikely (svptest_any (svptrue_b64 (), special))) +- vz = sv_call2_f64 (pow_sc, x, y, vz, special); ++ vz = sv_pow_specialcase (x, y, vz, special); + + return vz; + } +diff --git a/sysdeps/aarch64/fpu/powf_sve.c b/sysdeps/aarch64/fpu/powf_sve.c +index 65e9bd29d9..76f54b3522 100644 +--- a/sysdeps/aarch64/fpu/powf_sve.c ++++ b/sysdeps/aarch64/fpu/powf_sve.c +@@ -116,11 +116,10 @@ zeroinfnan (uint32_t ix) + preamble of scalar powf except that we do not update ix and sign_bias. This + is done in the preamble of the SVE powf. */ + static inline float +-powf_specialcase (float x, float y, float z) ++powf_specialcase (float x, float y) + { + uint32_t ix = asuint (x); + uint32_t iy = asuint (y); +- /* Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan). */ + if (__glibc_unlikely (zeroinfnan (iy))) + { + if (2 * iy == 0) +@@ -142,32 +141,15 @@ powf_specialcase (float x, float y, float z) + x2 = -x2; + return iy & 0x80000000 ? 1 / x2 : x2; + } +- /* We need a return here in case x<0 and y is integer, but all other tests +- need to be run. */ +- return z; ++ /* Return x for convenience, but make sure result is never used. */ ++ return x; + } + + /* Scalar fallback for special case routines with custom signature. */ + static svfloat32_t NOINLINE +-sv_call_powf_sc (svfloat32_t x1, svfloat32_t x2, svfloat32_t y) ++sv_call_powf_sc (svfloat32_t x1, svfloat32_t x2, svfloat32_t y, svbool_t cmp) + { +- /* Special cases of x or y: zero, inf and nan. */ +- svbool_t xspecial = sv_zeroinfnan (svptrue_b32 (), svreinterpret_u32 (x1)); +- svbool_t yspecial = sv_zeroinfnan (svptrue_b32 (), svreinterpret_u32 (x2)); +- svbool_t cmp = svorr_z (svptrue_b32 (), xspecial, yspecial); +- +- svbool_t p = svpfirst (cmp, svpfalse ()); +- while (svptest_any (cmp, p)) +- { +- float sx1 = svclastb (p, 0, x1); +- float sx2 = svclastb (p, 0, x2); +- float elem = svclastb (p, 0, y); +- elem = powf_specialcase (sx1, sx2, elem); +- svfloat32_t y2 = sv_f32 (elem); +- y = svsel (p, y2, y); +- p = svpnext_b32 (cmp, p); +- } +- return y; ++ return sv_call2_f32 (powf_specialcase, x1, x2, y, cmp); + } + + /* Compute core for half of the lanes in double precision. */ +@@ -330,7 +312,7 @@ svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg) + ret = svsel (yint_or_xpos, ret, sv_f32 (__builtin_nanf (""))); + + if (__glibc_unlikely (svptest_any (cmp, cmp))) +- return sv_call_powf_sc (x, y, ret); ++ return sv_call_powf_sc (x, y, ret, cmp); + + return ret; + } + +commit 6b2957cfe8ad1e02c03a28abfc5a251c05e4005e +Author: Sachin Monga +Date: Fri Nov 21 00:30:04 2025 -0500 + + ppc64le: Restore optimized strcmp for power10 + + This patch addresses the actual cause of CVE-2025-5702 + + The vector non-volatile registers are not used anymore for + 32 byte load and comparison operation + + Additionally, the assembler workaround used earlier for the + instruction lxvp is replaced with actual instruction. + + Signed-off-by: Sachin Monga + Co-authored-by: Paul Murphy + (cherry picked from commit 9a40b1cda519cc4f532acb6d020390829df3d81b) + +diff --git a/sysdeps/powerpc/powerpc64/le/power10/strcmp.S b/sysdeps/powerpc/powerpc64/le/power10/strcmp.S +new file mode 100644 +index 0000000000..0d4a53317c +--- /dev/null ++++ b/sysdeps/powerpc/powerpc64/le/power10/strcmp.S +@@ -0,0 +1,185 @@ ++/* Optimized strcmp implementation for PowerPC64/POWER10. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++#include ++ ++#ifndef STRCMP ++# define STRCMP strcmp ++#endif ++ ++/* Implements the function ++ int [r3] strcmp (const char *s1 [r3], const char *s2 [r4]). */ ++ ++ ++#define COMPARE_16(vreg1,vreg2,offset) \ ++ lxv vreg1+32,offset(r3); \ ++ lxv vreg2+32,offset(r4); \ ++ vcmpnezb. v7,vreg1,vreg2; \ ++ bne cr6,L(different); \ ++ ++#define COMPARE_32(vreg1,vreg2,offset,label1,label2) \ ++ lxvp vreg1+32,offset(r3); \ ++ lxvp vreg2+32,offset(r4); \ ++ vcmpnezb. v7,vreg1+1,vreg2+1; \ ++ bne cr6,L(label1); \ ++ vcmpnezb. v7,vreg1,vreg2; \ ++ bne cr6,L(label2); \ ++ ++#define TAIL(vreg1,vreg2) \ ++ vctzlsbb r6,v7; \ ++ vextubrx r5,r6,vreg1; \ ++ vextubrx r4,r6,vreg2; \ ++ subf r3,r4,r5; \ ++ blr; \ ++ ++#define CHECK_N_BYTES(reg1,reg2,len_reg) \ ++ sldi r0,len_reg,56; \ ++ lxvl 32+v4,reg1,r0; \ ++ lxvl 32+v5,reg2,r0; \ ++ add reg1,reg1,len_reg; \ ++ add reg2,reg2,len_reg; \ ++ vcmpnezb. v7,v4,v5; \ ++ vctzlsbb r6,v7; \ ++ cmpld cr7,r6,len_reg; \ ++ blt cr7,L(different); \ ++ ++ ++ .machine power10 ++ENTRY_TOCLESS (STRCMP, 4) ++ li r11,16 ++ /* eq bit of cr1 used as swap status flag to indicate if ++ source pointers were swapped. */ ++ crclr 4*cr1+eq ++ andi. r7,r3,15 ++ sub r7,r11,r7 /* r7(nalign1) = 16 - (str1 & 15). */ ++ andi. r9,r4,15 ++ sub r5,r11,r9 /* r5(nalign2) = 16 - (str2 & 15). */ ++ cmpld cr7,r7,r5 ++ beq cr7,L(same_aligned) ++ blt cr7,L(nalign1_min) ++ /* Swap r3 and r4, and r7 and r5 such that r3 and r7 hold the ++ pointer which is closer to the next 16B boundary so that only ++ one CHECK_N_BYTES is needed before entering the loop below. */ ++ mr r8,r4 ++ mr r4,r3 ++ mr r3,r8 ++ mr r12,r7 ++ mr r7,r5 ++ mr r5,r12 ++ crset 4*cr1+eq /* Set bit on swapping source pointers. */ ++ ++ .p2align 5 ++L(nalign1_min): ++ CHECK_N_BYTES(r3,r4,r7) ++ ++ .p2align 5 ++L(s1_aligned): ++ /* r9 and r5 is number of bytes to be read after and before ++ page boundary correspondingly. */ ++ sub r5,r5,r7 ++ subfic r9,r5,16 ++ /* Now let r7 hold the count of quadwords which can be ++ checked without crossing a page boundary. quadword offset is ++ (str2>>4)&0xFF. */ ++ rlwinm r7,r4,28,0xFF ++ /* Below check is required only for first iteration. For second ++ iteration and beyond, the new loop counter is always 255. */ ++ cmpldi r7,255 ++ beq L(L3) ++ /* Get the initial loop count by 255-((str2>>4)&0xFF). */ ++ subfic r11,r7,255 ++ ++ .p2align 5 ++L(L1): ++ mtctr r11 ++ ++ .p2align 5 ++L(L2): ++ COMPARE_16(v4,v5,0) /* Load 16B blocks using lxv. */ ++ addi r3,r3,16 ++ addi r4,r4,16 ++ bdnz L(L2) ++ /* Cross the page boundary of s2, carefully. */ ++ ++ .p2align 5 ++L(L3): ++ CHECK_N_BYTES(r3,r4,r5) ++ CHECK_N_BYTES(r3,r4,r9) ++ li r11,255 /* Load the new loop counter. */ ++ b L(L1) ++ ++ .p2align 5 ++L(same_aligned): ++ CHECK_N_BYTES(r3,r4,r7) ++ /* Align s1 to 32B and adjust s2 address. ++ Use lxvp only if both s1 and s2 are 32B aligned. */ ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ COMPARE_16(v4,v5,32) ++ COMPARE_16(v4,v5,48) ++ addi r3,r3,64 ++ addi r4,r4,64 ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ ++ clrldi r6,r3,59 ++ subfic r5,r6,32 ++ add r3,r3,r5 ++ add r4,r4,r5 ++ andi. r5,r4,0x1F ++ beq cr0,L(32B_aligned_loop) ++ ++ .p2align 5 ++L(16B_aligned_loop): ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ COMPARE_16(v4,v5,32) ++ COMPARE_16(v4,v5,48) ++ addi r3,r3,64 ++ addi r4,r4,64 ++ b L(16B_aligned_loop) ++ ++ /* Calculate and return the difference. */ ++L(different): ++ vctzlsbb r6,v7 ++ vextubrx r5,r6,v4 ++ vextubrx r4,r6,v5 ++ bt 4*cr1+eq,L(swapped) ++ subf r3,r4,r5 ++ blr ++ ++ /* If src pointers were swapped, then swap the ++ indices and calculate the return value. */ ++L(swapped): ++ subf r3,r5,r4 ++ blr ++ ++ .p2align 5 ++L(32B_aligned_loop): ++ COMPARE_32(v14,v16,0,tail1,tail2) ++ COMPARE_32(v14,v16,32,tail1,tail2) ++ COMPARE_32(v14,v16,64,tail1,tail2) ++ COMPARE_32(v14,v16,96,tail1,tail2) ++ addi r3,r3,128 ++ addi r4,r4,128 ++ b L(32B_aligned_loop) ++ ++L(tail1): TAIL(v15,v17) ++L(tail2): TAIL(v14,v16) ++ ++END (STRCMP) ++libc_hidden_builtin_def (strcmp) +diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +index e321ce54e0..818f287925 100644 +--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +@@ -32,7 +32,7 @@ sysdep_routines += memcpy-power8-cached memcpy-power7 memcpy-a2 memcpy-power6 \ + ifneq (,$(filter %le,$(config-machine))) + sysdep_routines += memcmp-power10 memcpy-power10 memmove-power10 memset-power10 \ + rawmemchr-power9 rawmemchr-power10 \ +- strcmp-power9 strncmp-power9 \ ++ strcmp-power9 strcmp-power10 strncmp-power9 \ + strcpy-power9 strcat-power10 stpcpy-power9 \ + strlen-power9 strncpy-power9 stpncpy-power9 strlen-power10 + endif +diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +index 016d05fd16..dde3bec709 100644 +--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +@@ -366,6 +366,10 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, + /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c. */ + IFUNC_IMPL (i, name, strcmp, + #ifdef __LITTLE_ENDIAN__ ++ IFUNC_IMPL_ADD (array, i, strcmp, ++ (hwcap2 & PPC_FEATURE2_ARCH_3_1) ++ && (hwcap & PPC_FEATURE_HAS_VSX), ++ __strcmp_power10) + IFUNC_IMPL_ADD (array, i, strcmp, + hwcap2 & PPC_FEATURE2_ARCH_3_00 + && hwcap & PPC_FEATURE_HAS_ALTIVEC, +diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S +new file mode 100644 +index 0000000000..a4ee7fb53c +--- /dev/null ++++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S +@@ -0,0 +1,26 @@ ++/* Optimized strcmp implementation for POWER10/PPC64. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#if defined __LITTLE_ENDIAN__ && IS_IN (libc) ++#define STRCMP __strcmp_power10 ++ ++#undef libc_hidden_builtin_def ++#define libc_hidden_builtin_def(name) ++ ++#include ++#endif /* __LITTLE_ENDIAN__ && IS_IN (libc) */ +diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c +index 7c77c084a7..3c636e3bbc 100644 +--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c ++++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c +@@ -29,12 +29,16 @@ extern __typeof (strcmp) __strcmp_power7 attribute_hidden; + extern __typeof (strcmp) __strcmp_power8 attribute_hidden; + # ifdef __LITTLE_ENDIAN__ + extern __typeof (strcmp) __strcmp_power9 attribute_hidden; ++extern __typeof (strcmp) __strcmp_power10 attribute_hidden; + # endif + + # undef strcmp + + libc_ifunc_redirected (__redirect_strcmp, strcmp, + # ifdef __LITTLE_ENDIAN__ ++ (hwcap2 & PPC_FEATURE2_ARCH_3_1 ++ && hwcap & PPC_FEATURE_HAS_VSX) ++ ? __strcmp_power10 : + (hwcap2 & PPC_FEATURE2_ARCH_3_00 + && hwcap & PPC_FEATURE_HAS_ALTIVEC) + ? __strcmp_power9 : + +commit 2dbf973fe03f9b8fd5a4740ee0af0d47afdd7bbd +Author: Sachin Monga +Date: Fri Nov 21 00:30:52 2025 -0500 + + ppc64le: Restore optimized strncmp for power10 + + This patch addresses the actual cause of CVE-2025-5745 + + The vector non-volatile registers are not used anymore for + 32 byte load and comparison operation + + Additionally, the assembler workaround used earlier for the + instruction lxvp is replaced with actual instruction. + + Signed-off-by: Sachin Monga + Co-authored-by: Paul Murphy + (cherry picked from commit 2ea943f7d487d6a4166658b32af7c5365889fc34) + +diff --git a/sysdeps/powerpc/powerpc64/le/power10/strncmp.S b/sysdeps/powerpc/powerpc64/le/power10/strncmp.S +new file mode 100644 +index 0000000000..6e09fcb7f2 +--- /dev/null ++++ b/sysdeps/powerpc/powerpc64/le/power10/strncmp.S +@@ -0,0 +1,252 @@ ++/* Optimized strncmp implementation for PowerPC64/POWER10. ++ Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++ ++/* Implements the function ++ ++ int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t [r5] n) ++ ++ The implementation uses unaligned doubleword access to avoid specialized ++ code paths depending of data alignment for first 32 bytes and uses ++ vectorised loops after that. */ ++ ++#ifndef STRNCMP ++# define STRNCMP strncmp ++#endif ++ ++#define COMPARE_16(vreg1,vreg2,offset) \ ++ lxv vreg1+32,offset(r3); \ ++ lxv vreg2+32,offset(r4); \ ++ vcmpnezb. v7,vreg1,vreg2; \ ++ bne cr6,L(different); \ ++ cmpldi cr7,r5,16; \ ++ ble cr7,L(ret0); \ ++ addi r5,r5,-16; ++ ++#define COMPARE_32(vreg1,vreg2,offset,label1,label2) \ ++ lxvp vreg1+32,offset(r3); \ ++ lxvp vreg2+32,offset(r4); \ ++ vcmpnezb. v7,vreg1+1,vreg2+1; \ ++ bne cr6,L(label1); \ ++ vcmpnezb. v7,vreg1,vreg2; \ ++ bne cr6,L(label2); \ ++ cmpldi cr7,r5,32; \ ++ ble cr7,L(ret0); \ ++ addi r5,r5,-32; ++ ++#define TAIL_FIRST_16B(vreg1,vreg2) \ ++ vctzlsbb r6,v7; \ ++ cmpld cr7,r5,r6; \ ++ ble cr7,L(ret0); \ ++ vextubrx r5,r6,vreg1; \ ++ vextubrx r4,r6,vreg2; \ ++ subf r3,r4,r5; \ ++ blr; ++ ++#define TAIL_SECOND_16B(vreg1,vreg2) \ ++ vctzlsbb r6,v7; \ ++ addi r0,r6,16; \ ++ cmpld cr7,r5,r0; \ ++ ble cr7,L(ret0); \ ++ vextubrx r5,r6,vreg1; \ ++ vextubrx r4,r6,vreg2; \ ++ subf r3,r4,r5; \ ++ blr; ++ ++#define CHECK_N_BYTES(reg1,reg2,len_reg) \ ++ sldi r6,len_reg,56; \ ++ lxvl 32+v4,reg1,r6; \ ++ lxvl 32+v5,reg2,r6; \ ++ add reg1,reg1,len_reg; \ ++ add reg2,reg2,len_reg; \ ++ vcmpnezb v7,v4,v5; \ ++ vctzlsbb r6,v7; \ ++ cmpld cr7,r6,len_reg; \ ++ blt cr7,L(different); \ ++ cmpld cr7,r5,len_reg; \ ++ ble cr7,L(ret0); \ ++ sub r5,r5,len_reg; \ ++ ++ .machine power10 ++ENTRY_TOCLESS (STRNCMP, 4) ++ /* Check if size is 0. */ ++ cmpdi cr0,r5,0 ++ beq cr0,L(ret0) ++ andi. r7,r3,4095 ++ andi. r8,r4,4095 ++ cmpldi cr0,r7,4096-16 ++ cmpldi cr1,r8,4096-16 ++ bgt cr0,L(crosses) ++ bgt cr1,L(crosses) ++ COMPARE_16(v4,v5,0) ++ addi r3,r3,16 ++ addi r4,r4,16 ++ ++L(crosses): ++ andi. r7,r3,15 ++ subfic r7,r7,16 /* r7(nalign1) = 16 - (str1 & 15). */ ++ andi. r9,r4,15 ++ subfic r8,r9,16 /* r8(nalign2) = 16 - (str2 & 15). */ ++ cmpld cr7,r7,r8 ++ beq cr7,L(same_aligned) ++ blt cr7,L(nalign1_min) ++ ++ /* nalign2 is minimum and s2 pointer is aligned. */ ++ CHECK_N_BYTES(r3,r4,r8) ++ /* Are we on the 64B hunk which crosses a page? */ ++ andi. r10,r3,63 /* Determine offset into 64B hunk. */ ++ andi. r8,r3,15 /* The offset into the 16B hunk. */ ++ neg r7,r3 ++ andi. r9,r7,15 /* Number of bytes after a 16B cross. */ ++ rlwinm. r7,r7,26,0x3F /* ((r4-4096))>>6&63. */ ++ beq L(compare_64_pagecross) ++ mtctr r7 ++ b L(compare_64B_unaligned) ++ ++ /* nalign1 is minimum and s1 pointer is aligned. */ ++L(nalign1_min): ++ CHECK_N_BYTES(r3,r4,r7) ++ /* Are we on the 64B hunk which crosses a page? */ ++ andi. r10,r4,63 /* Determine offset into 64B hunk. */ ++ andi. r8,r4,15 /* The offset into the 16B hunk. */ ++ neg r7,r4 ++ andi. r9,r7,15 /* Number of bytes after a 16B cross. */ ++ rlwinm. r7,r7,26,0x3F /* ((r4-4096))>>6&63. */ ++ beq L(compare_64_pagecross) ++ mtctr r7 ++ ++ .p2align 5 ++L(compare_64B_unaligned): ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ COMPARE_16(v4,v5,32) ++ COMPARE_16(v4,v5,48) ++ addi r3,r3,64 ++ addi r4,r4,64 ++ bdnz L(compare_64B_unaligned) ++ ++ /* Cross the page boundary of s2, carefully. Only for first ++ iteration we have to get the count of 64B blocks to be checked. ++ From second iteration and beyond, loop counter is always 63. */ ++L(compare_64_pagecross): ++ li r11, 63 ++ mtctr r11 ++ cmpldi r10,16 ++ ble L(cross_4) ++ cmpldi r10,32 ++ ble L(cross_3) ++ cmpldi r10,48 ++ ble L(cross_2) ++L(cross_1): ++ CHECK_N_BYTES(r3,r4,r9) ++ CHECK_N_BYTES(r3,r4,r8) ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ COMPARE_16(v4,v5,32) ++ addi r3,r3,48 ++ addi r4,r4,48 ++ b L(compare_64B_unaligned) ++L(cross_2): ++ COMPARE_16(v4,v5,0) ++ addi r3,r3,16 ++ addi r4,r4,16 ++ CHECK_N_BYTES(r3,r4,r9) ++ CHECK_N_BYTES(r3,r4,r8) ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ addi r3,r3,32 ++ addi r4,r4,32 ++ b L(compare_64B_unaligned) ++L(cross_3): ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ addi r3,r3,32 ++ addi r4,r4,32 ++ CHECK_N_BYTES(r3,r4,r9) ++ CHECK_N_BYTES(r3,r4,r8) ++ COMPARE_16(v4,v5,0) ++ addi r3,r3,16 ++ addi r4,r4,16 ++ b L(compare_64B_unaligned) ++L(cross_4): ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ COMPARE_16(v4,v5,32) ++ addi r3,r3,48 ++ addi r4,r4,48 ++ CHECK_N_BYTES(r3,r4,r9) ++ CHECK_N_BYTES(r3,r4,r8) ++ b L(compare_64B_unaligned) ++ ++L(same_aligned): ++ CHECK_N_BYTES(r3,r4,r7) ++ /* Align s1 to 32B and adjust s2 address. ++ Use lxvp only if both s1 and s2 are 32B aligned. */ ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ COMPARE_16(v4,v5,32) ++ COMPARE_16(v4,v5,48) ++ addi r3,r3,64 ++ addi r4,r4,64 ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ addi r5,r5,32 ++ ++ clrldi r6,r3,59 ++ subfic r7,r6,32 ++ add r3,r3,r7 ++ add r4,r4,r7 ++ subf r5,r7,r5 ++ andi. r7,r4,0x1F ++ beq cr0,L(32B_aligned_loop) ++ ++ .p2align 5 ++L(16B_aligned_loop): ++ COMPARE_16(v4,v5,0) ++ COMPARE_16(v4,v5,16) ++ COMPARE_16(v4,v5,32) ++ COMPARE_16(v4,v5,48) ++ addi r3,r3,64 ++ addi r4,r4,64 ++ b L(16B_aligned_loop) ++ ++ /* Calculate and return the difference. */ ++L(different): ++ TAIL_FIRST_16B(v4,v5) ++ ++ .p2align 5 ++L(32B_aligned_loop): ++ COMPARE_32(v14,v16,0,tail1,tail2) ++ COMPARE_32(v14,v16,32,tail1,tail2) ++ COMPARE_32(v14,v16,64,tail1,tail2) ++ COMPARE_32(v14,v16,96,tail1,tail2) ++ addi r3,r3,128 ++ addi r4,r4,128 ++ b L(32B_aligned_loop) ++ ++L(tail1): TAIL_FIRST_16B(v15,v17) ++L(tail2): TAIL_SECOND_16B(v14,v16) ++ ++ .p2align 5 ++L(ret0): ++ li r3,0 ++ blr ++ ++END(STRNCMP) ++libc_hidden_builtin_def(strncmp) +diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +index 818f287925..c9178223a8 100644 +--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +@@ -32,7 +32,7 @@ sysdep_routines += memcpy-power8-cached memcpy-power7 memcpy-a2 memcpy-power6 \ + ifneq (,$(filter %le,$(config-machine))) + sysdep_routines += memcmp-power10 memcpy-power10 memmove-power10 memset-power10 \ + rawmemchr-power9 rawmemchr-power10 \ +- strcmp-power9 strcmp-power10 strncmp-power9 \ ++ strcmp-power9 strcmp-power10 strncmp-power9 strncmp-power10 \ + strcpy-power9 strcat-power10 stpcpy-power9 \ + strlen-power9 strncpy-power9 stpncpy-power9 strlen-power10 + endif +diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +index dde3bec709..f2b9cccde3 100644 +--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +@@ -164,6 +164,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, + /* Support sysdeps/powerpc/powerpc64/multiarch/strncmp.c. */ + IFUNC_IMPL (i, name, strncmp, + #ifdef __LITTLE_ENDIAN__ ++ IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_3_1 ++ && hwcap & PPC_FEATURE_HAS_VSX, ++ __strncmp_power10) + IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_3_00 + && hwcap & PPC_FEATURE_HAS_ALTIVEC, + __strncmp_power9) +diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power10.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power10.S +new file mode 100644 +index 0000000000..bb25bc75b8 +--- /dev/null ++++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power10.S +@@ -0,0 +1,25 @@ ++/* Copyright (C) 2025 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#if defined __LITTLE_ENDIAN__ && IS_IN (libc) ++#define STRNCMP __strncmp_power10 ++ ++#undef libc_hidden_builtin_def ++#define libc_hidden_builtin_def(name) ++ ++#include ++#endif +diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c +index 4cfe27fa45..0a664a620d 100644 +--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c ++++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c +@@ -29,6 +29,7 @@ extern __typeof (strncmp) __strncmp_ppc attribute_hidden; + extern __typeof (strncmp) __strncmp_power8 attribute_hidden; + # ifdef __LITTLE_ENDIAN__ + extern __typeof (strncmp) __strncmp_power9 attribute_hidden; ++extern __typeof (strncmp) __strncmp_power10 attribute_hidden; + # endif + # undef strncmp + +@@ -36,6 +37,9 @@ extern __typeof (strncmp) __strncmp_power9 attribute_hidden; + ifunc symbol properly. */ + libc_ifunc_redirected (__redirect_strncmp, strncmp, + # ifdef __LITTLE_ENDIAN__ ++ (hwcap2 & PPC_FEATURE2_ARCH_3_1 ++ && hwcap & PPC_FEATURE_HAS_VSX) ++ ? __strncmp_power10 : + (hwcap2 & PPC_FEATURE2_ARCH_3_00 + && hwcap & PPC_FEATURE_HAS_ALTIVEC) + ? __strncmp_power9 : + +commit 8aaf4b732d7650c2db3beb4dc8bb70eab5b022c3 +Author: Sachin Monga +Date: Thu Nov 27 03:28:17 2025 -0500 + + ppc64le: Power 10 rawmemchr clobbers v20 (bug #33091) + + Replace non-volatile(v20) by volatile(v17) + since v20 is not restored + + Reviewed-by: Peter Bergner + (cherry picked from commit b59799f14f97f697c3a36b4380bd4ce2fbe65f11) + +diff --git a/sysdeps/powerpc/powerpc64/le/power10/strlen.S b/sysdeps/powerpc/powerpc64/le/power10/strlen.S +index ec644d5bff..29a5a7d960 100644 +--- a/sysdeps/powerpc/powerpc64/le/power10/strlen.S ++++ b/sysdeps/powerpc/powerpc64/le/power10/strlen.S +@@ -31,7 +31,7 @@ + # define FUNCNAME RAWMEMCHR + # endif + # define MCOUNT_NARGS 2 +-# define VREG_ZERO v20 ++# define VREG_ZERO v17 + # define OFF_START_LOOP 256 + # define RAWMEMCHR_SUBTRACT_VECTORS \ + vsububm v4,v4,v18; \ + +commit b11411fe2ee7a8f3c3a2c1ee99c1729adb9a0efe +Author: Yury Khrustalev +Date: Thu Nov 6 12:57:58 2025 +0000 + + posix: Fix invalid flags test for p{write,read}v2 + + Two tests fail from time to time when a new flag is added for the + p{write,read}v2 functions in a new Linux kernel: + + - misc/tst-preadvwritev2 + - misc/tst-preadvwritev64v2 + + This disrupts when testing Glibc on a system with a newer kernel + and it seems we can try improve testing for invalid flags setting + all the bits that are not supposed to be supported (rather than + setting only the next unsupported bit). + + Reviewed-by: Adhemerval Zanella + (cherry picked from commit 58a31b4316f1f687184eb147ffa1c676bc6a190e) + +diff --git a/misc/tst-preadvwritev2-common.c b/misc/tst-preadvwritev2-common.c +index ff1007d6d2..5182fcdce0 100644 +--- a/misc/tst-preadvwritev2-common.c ++++ b/misc/tst-preadvwritev2-common.c +@@ -109,9 +109,8 @@ do_test_with_invalid_iov (void) + static void + do_test_with_invalid_flags (void) + { +- /* Set the next bit from the mask of all supported flags. */ +- int invalid_flag = RWF_SUPPORTED != 0 ? __builtin_clz (RWF_SUPPORTED) : 2; +- invalid_flag = 0x1 << ((sizeof (int) * CHAR_BIT) - invalid_flag); ++ /* Set all the bits that are not used by the supported flags. */ ++ int invalid_flag = ~RWF_SUPPORTED; + + char buf[32]; + const struct iovec vec = { .iov_base = buf, .iov_len = sizeof (buf) }; + +commit efdf4c0c879590109778244046f84a80a4bf8fee +Author: DJ Delorie +Date: Wed Oct 15 21:37:56 2025 -0400 + + sprof: check pread size and offset for overflow + + Add a bit of descriptive paranoia to the values we read from + the ELF headers and use to access data. + + Reviewed-by: Collin Funk + (cherry picked from commit 324084649b2da2f6840e3a1b84159a4e9a9e9a74) + +diff --git a/elf/sprof.c b/elf/sprof.c +index c82c7c9db6..e9d2a66a4f 100644 +--- a/elf/sprof.c ++++ b/elf/sprof.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + /* Get libc version number. */ + #include "../version.h" +@@ -410,6 +411,7 @@ load_shobj (const char *name) + int fd; + ElfW(Shdr) *shdr; + size_t pagesize = getpagesize (); ++ struct stat st; + + /* Since we use dlopen() we must be prepared to work around the sometimes + strange lookup rules for the shared objects. If we have a file foo.so +@@ -550,14 +552,39 @@ load_shobj (const char *name) + error (EXIT_FAILURE, errno, _("Reopening shared object `%s' failed"), + map->l_name); + ++ if (fstat (fd, &st) < 0) ++ error (EXIT_FAILURE, errno, _("stat(%s) failure"), map->l_name); ++ ++ /* We're depending on data that's being read from the file, so be a ++ bit paranoid here and make sure the requests are reasonable - ++ i.e. both size and offset are nonnegative and smaller than the ++ file size, as well as the offset of the end of the data. PREAD ++ would have failed anyway, but this is more robust and explains ++ what happened better. Note that SZ must be unsigned and OFF may ++ be signed or unsigned. */ ++#define PCHECK(sz1,off1) { \ ++ size_t sz = sz1, end_off; \ ++ off_t off = off1; \ ++ if (sz > st.st_size \ ++ || off < 0 || off > st.st_size \ ++ || INT_ADD_WRAPV (sz, off, &end_off) \ ++ || end_off > st.st_size) \ ++ error (EXIT_FAILURE, ERANGE, \ ++ _("read outside of file extents %zu + %zd > %zu"), \ ++ sz, off, st.st_size); \ ++ } ++ + /* Map the section header. */ + size_t size = ehdr->e_shnum * sizeof (ElfW(Shdr)); + shdr = (ElfW(Shdr) *) alloca (size); ++ PCHECK (size, ehdr->e_shoff); + if (pread (fd, shdr, size, ehdr->e_shoff) != size) + error (EXIT_FAILURE, errno, _("reading of section headers failed")); + + /* Get the section header string table. */ + char *shstrtab = (char *) alloca (shdr[ehdr->e_shstrndx].sh_size); ++ PCHECK (shdr[ehdr->e_shstrndx].sh_size, ++ shdr[ehdr->e_shstrndx].sh_offset); + if (pread (fd, shstrtab, shdr[ehdr->e_shstrndx].sh_size, + shdr[ehdr->e_shstrndx].sh_offset) + != shdr[ehdr->e_shstrndx].sh_size) +@@ -585,6 +612,7 @@ load_shobj (const char *name) + size_t size = debuglink_entry->sh_size; + char *debuginfo_fname = (char *) alloca (size + 1); + debuginfo_fname[size] = '\0'; ++ PCHECK (size, debuglink_entry->sh_offset); + if (pread (fd, debuginfo_fname, size, debuglink_entry->sh_offset) + != size) + { +@@ -638,21 +666,32 @@ load_shobj (const char *name) + if (fd2 != -1) + { + ElfW(Ehdr) ehdr2; ++ struct stat st; ++ ++ if (fstat (fd2, &st) < 0) ++ error (EXIT_FAILURE, errno, _("stat(%s) failure"), workbuf); + + /* Read the ELF header. */ ++ PCHECK (sizeof (ehdr2), 0); + if (pread (fd2, &ehdr2, sizeof (ehdr2), 0) != sizeof (ehdr2)) + error (EXIT_FAILURE, errno, + _("reading of ELF header failed")); + + /* Map the section header. */ +- size_t size = ehdr2.e_shnum * sizeof (ElfW(Shdr)); ++ size_t size; ++ if (INT_MULTIPLY_WRAPV (ehdr2.e_shnum, sizeof (ElfW(Shdr)), &size)) ++ error (EXIT_FAILURE, errno, _("too many section headers")); ++ + ElfW(Shdr) *shdr2 = (ElfW(Shdr) *) alloca (size); ++ PCHECK (size, ehdr2.e_shoff); + if (pread (fd2, shdr2, size, ehdr2.e_shoff) != size) + error (EXIT_FAILURE, errno, + _("reading of section headers failed")); + + /* Get the section header string table. */ + shstrtab = (char *) alloca (shdr2[ehdr2.e_shstrndx].sh_size); ++ PCHECK (shdr2[ehdr2.e_shstrndx].sh_size, ++ shdr2[ehdr2.e_shstrndx].sh_offset); + if (pread (fd2, shstrtab, shdr2[ehdr2.e_shstrndx].sh_size, + shdr2[ehdr2.e_shstrndx].sh_offset) + != shdr2[ehdr2.e_shstrndx].sh_size) + +commit 2a0873aa81446149c6065237e1dc2511201bef88 +Author: Collin Funk +Date: Wed Oct 22 01:51:09 2025 -0700 + + sprof: fix -Wformat warnings on 32-bit hosts + + Reviewed-by: H.J. Lu + (cherry picked from commit 9681f645ba20fc3c18eb12ffebf94e3df1f888e3) + +diff --git a/elf/sprof.c b/elf/sprof.c +index e9d2a66a4f..513e0470b2 100644 +--- a/elf/sprof.c ++++ b/elf/sprof.c +@@ -570,8 +570,8 @@ load_shobj (const char *name) + || INT_ADD_WRAPV (sz, off, &end_off) \ + || end_off > st.st_size) \ + error (EXIT_FAILURE, ERANGE, \ +- _("read outside of file extents %zu + %zd > %zu"), \ +- sz, off, st.st_size); \ ++ _("read outside of file extents %zu + %jd > %jd"), \ ++ sz, (intmax_t) off, (intmax_t) st.st_size); \ + } + + /* Map the section header. */ + +commit 8dfb84ad4efbc39c7a7d9efdff6f6ac9017e0a53 +Author: Florian Weimer +Date: Thu Nov 6 14:33:22 2025 +0100 + + support: Fix FILE * leak in check_for_unshare_hints in test-container + + The file opened via fopen is never closed. + + (cherry picked from commit 20a2a756089eacd7e7f4c02e381e82b5d0e40a2c) + +diff --git a/support/test-container.c b/support/test-container.c +index 1c40ab377f..d78139622f 100644 +--- a/support/test-container.c ++++ b/support/test-container.c +@@ -705,6 +705,7 @@ check_for_unshare_hints (int require_pidns) + + val = -1; /* Sentinel. */ + int cnt = fscanf (f, "%d", &val); ++ fclose (f); + if (cnt == 1 && val != files[i].bad_value) + continue; + + +commit a1d3294a5bed821aece03994ab4e72c8b822a962 +Author: Florian Weimer +Date: Thu Nov 6 14:49:21 2025 +0100 + + support: Exit on consistency check failure in resolv_response_add_name + + Using TEST_VERIFY (crname_target != crname) instructs some analysis + tools that crname_target == crname might hold. Under this assumption, + they report a use-after-free for crname_target->offset below, caused + by the previous free (crname). + + Reviewed-by: Collin Funk + (cherry picked from commit b64335ff111c071fde61aec1c1a8460afb3d16d4) + +diff --git a/support/resolv_test.c b/support/resolv_test.c +index ab37d3d58c..29e59da958 100644 +--- a/support/resolv_test.c ++++ b/support/resolv_test.c +@@ -326,7 +326,7 @@ resolv_response_add_name (struct resolv_response_builder *b, + crname_target = *ptr; + else + crname_target = NULL; +- TEST_VERIFY (crname_target != crname); ++ TEST_VERIFY_EXIT (crname_target != crname); + /* Not added to the tree. */ + free (crname); + } diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 7e617c326996b..d7a384b005395 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -49,9 +49,9 @@ }@args: let - version = "2.40"; - patchSuffix = "-66"; - sha256 = "sha256-GaiQF16SY9dI9ieZPeb0sa+c0h4D8IDkv7Oh+sECBaI="; + version = "2.42"; + patchSuffix = "-47"; + sha256 = "sha256-0XdeMuRijmTvkw9DW2e7Y691may2viszW58Z8WUJ8X8="; in assert withLinuxHeaders -> linuxHeaders != null; @@ -68,17 +68,17 @@ stdenv.mkDerivation ( /* No tarballs for stable upstream branch, only https://sourceware.org/git/glibc.git and using git would complicate bootstrapping. $ git fetch --all -p && git checkout origin/release/2.40/master && git describe - glibc-2.40-142-g2eb180377b - $ git show --minimal --reverse glibc-2.40.. ':!ADVISORIES' > 2.40-master.patch + glibc-2.42-47-ga1d3294a5b + $ git show --minimal --reverse glibc-2.42.. ':!ADVISORIES' > 2.42-master.patch To compare the archive contents zdiff can be used. - $ diff -u 2.40-master.patch ../nixpkgs/pkgs/development/libraries/glibc/2.40-master.patch + $ diff -u 2.42-master.patch ../nixpkgs/pkgs/development/libraries/glibc/2.42-master.patch Please note that each commit has changes to the file ADVISORIES excluded since that conflicts with the directory advisories/ making cross-builds from hosts with case-insensitive file-systems impossible. */ - ./2.40-master.patch + ./2.42-master.patch # Allow NixOS and Nix to handle the locale-archive. ./nix-locale-archive.patch @@ -164,15 +164,6 @@ stdenv.mkDerivation ( -#define LIBIDN2_SONAME "libidn2.so.0" +#define LIBIDN2_SONAME "${lib.getLib libidn2}/lib/libidn2.so.0" EOF - '' - # For some reason, with gcc-15 build fails with the following error: - # - # zic.c:3767:1: note: did you mean to specify it after ')' following function parameters? - # zic.c:3781:1: error: standard 'reproducible' attribute can only be applied to function declarators or type specifiers with function type [] - + '' - for path in timezone/zic.c timezone/zdump.c ; do - substituteInPlace $path --replace-fail "ATTRIBUTE_REPRODUCIBLE" "" - done ''; configureFlags = [ @@ -299,13 +290,13 @@ stdenv.mkDerivation ( sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" done - mkdir ../build - cd ../build + mkdir build + cd build - configureScript="`pwd`/../$sourceRoot/configure" + configureScript="`pwd`/../configure" '' + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' - sed -i s/-lgcc_eh//g "../$sourceRoot/Makeconfig" + sed -i s/-lgcc_eh//g ../Makeconfig cat > config.cache << "EOF" libc_cv_forced_unwind=yes diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix index 68ea0b1f0fb9f..987c8dd7f199e 100644 --- a/pkgs/development/libraries/glibc/default.nix +++ b/pkgs/development/libraries/glibc/default.nix @@ -119,7 +119,7 @@ in + ( if stdenv.buildPlatform.canExecute stdenv.hostPlatform then '' - echo SUPPORTED-LOCALES=C.UTF-8/UTF-8 > ../glibc-2*/localedata/SUPPORTED + echo SUPPORTED-LOCALES=C.UTF-8/UTF-8 > ../localedata/SUPPORTED # Don't install C.utf-8 into the archive, but into $out/lib/locale: on non-NixOS # systems with an empty /usr/lib/locale/locale-archive, glibc would fall back to # $libdir/locale/C.utf-8 instead of the locale archive of pkgs.glibc. See also #347965. @@ -139,7 +139,7 @@ in # evaluating buildPackages.glibc when glibc hasn't come from stdenv # (e.g. on musl)." https://github.com/NixOS/nixpkgs/pull/259964 '' - pushd ../glibc-2*/localedata + pushd ../localedata export I18NPATH=$PWD GCONV_PATH=$PWD/../iconvdata mkdir -p $NIX_BUILD_TOP/${pkgsBuildBuild.glibc}/lib/locale ${lib.getBin pkgsBuildBuild.glibc}/bin/localedef \ diff --git a/pkgs/development/libraries/glibc/locales.nix b/pkgs/development/libraries/glibc/locales.nix index 98f04f22dbcd3..9a812894dc406 100644 --- a/pkgs/development/libraries/glibc/locales.nix +++ b/pkgs/development/libraries/glibc/locales.nix @@ -64,17 +64,17 @@ export inst_complocaledir="$TMPDIR/"${buildPackages.glibc.out}/lib/locale mkdir -p "$inst_complocaledir" - echo 'C.UTF-8/UTF-8 \' >> ../glibc-2*/localedata/SUPPORTED + echo 'C.UTF-8/UTF-8 \' >> ../localedata/SUPPORTED # Hack to allow building of the locales (needed since glibc-2.12) - substituteInPlace ../glibc-2*/localedata/Makefile \ + substituteInPlace ../localedata/Makefile \ --replace-fail '$(rtld-prefix) $(common-objpfx)locale/localedef' 'localedef $(LOCALEDEF_FLAGS)' '' + lib.optionalString (!allLocales) '' # Check that all locales to be built are supported echo -n '${lib.concatMapStrings (s: s + " \\\n") locales}' \ | sort -u > locales-to-build.txt - cat ../glibc-2*/localedata/SUPPORTED | grep ' \\' \ + cat ../localedata/SUPPORTED | grep ' \\' \ | sort -u > locales-supported.txt comm -13 locales-supported.txt locales-to-build.txt \ > locales-unsupported.txt @@ -86,7 +86,7 @@ false fi - echo SUPPORTED-LOCALES='${toString locales}' > ../glibc-2*/localedata/SUPPORTED + echo SUPPORTED-LOCALES='${toString locales}' > ../localedata/SUPPORTED ''; makeFlags = (previousAttrs.makeFlags or [ ]) ++ [ @@ -97,7 +97,7 @@ installPhase = '' mkdir -p "$out/lib/locale" "$out/share/i18n" cp -v "$TMPDIR/$NIX_STORE/"*"/lib/locale/locale-archive" "$out/lib/locale" - cp -v ../glibc-2*/localedata/SUPPORTED "$out/share/i18n/SUPPORTED" + cp -v ../localedata/SUPPORTED "$out/share/i18n/SUPPORTED" ''; setupHook = writeText "locales-setup-hook.sh" '' diff --git a/pkgs/development/libraries/glibc/mtrace.nix b/pkgs/development/libraries/glibc/mtrace.nix index c9d5369e13c2f..d8e7646d90df5 100644 --- a/pkgs/development/libraries/glibc/mtrace.nix +++ b/pkgs/development/libraries/glibc/mtrace.nix @@ -15,7 +15,7 @@ glibc.overrideAttrs (oldAttrs: { runHook preBuild mkdir malloc - make -C ../glibc-${glibc.minorRelease}/malloc objdir=`pwd` `pwd`/malloc/mtrace; + make -C ../malloc objdir=`pwd` `pwd`/malloc/mtrace; runHook postBuild ''; diff --git a/pkgs/development/libraries/isl/generic.nix b/pkgs/development/libraries/isl/generic.nix index 0ffec59b278c6..8988e8faf982f 100644 --- a/pkgs/development/libraries/isl/generic.nix +++ b/pkgs/development/libraries/isl/generic.nix @@ -42,6 +42,8 @@ stdenv.mkDerivation { enableParallelBuilding = true; + makeFlags = lib.optional stdenv.hostPlatform.isPE "LDFLAGS=-no-undefined"; + meta = { homepage = "https://libisl.sourceforge.io/"; license = lib.licenses.lgpl21; diff --git a/pkgs/development/libraries/kde-frameworks/kwayland.nix b/pkgs/development/libraries/kde-frameworks/kwayland.nix index 09510db88d639..014ee813cfbd2 100644 --- a/pkgs/development/libraries/kde-frameworks/kwayland.nix +++ b/pkgs/development/libraries/kde-frameworks/kwayland.nix @@ -8,10 +8,19 @@ qtbase, wayland, wayland-protocols, + fetchpatch, }: mkDerivation { pname = "kwayland"; + + patches = [ + (fetchpatch { + url = "https://invent.kde.org/plasma/kwayland/-/commit/0954a179d4ef72597efea44a91071eb9a55a385f.diff"; + hash = "sha256-TB9ZIYV58E41rA8mP5MXjIKZUOdH/rZfOYsgUlV+QLk="; + }) + ]; + nativeBuildInputs = [ extra-cmake-modules wayland-scanner diff --git a/pkgs/development/libraries/libiconv/default.nix b/pkgs/development/libraries/libiconv/default.nix index 8a166dfe0ea9b..a7c3b193c9d08 100644 --- a/pkgs/development/libraries/libiconv/default.nix +++ b/pkgs/development/libraries/libiconv/default.nix @@ -76,7 +76,11 @@ stdenv.mkDerivation rec { (lib.enableFeature enableStatic "static") (lib.enableFeature enableShared "shared") ] - ++ lib.optional stdenv.hostPlatform.isFreeBSD "--with-pic"; + ++ lib.optional stdenv.hostPlatform.isFreeBSD "--with-pic" + # Work around build failure caused by the gnulib workaround for + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114870. + # remove after gnulib is updated + ++ lib.optional stdenv.hostPlatform.isCygwin "gl_cv_clean_version_stddef=yes"; passthru = { inherit setupHooks; }; diff --git a/pkgs/development/libraries/libpng/default.nix b/pkgs/development/libraries/libpng/default.nix index 7af29dedd1ac2..c16b6d4a17a23 100644 --- a/pkgs/development/libraries/libpng/default.nix +++ b/pkgs/development/libraries/libpng/default.nix @@ -20,11 +20,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "libpng" + whenPatched "-apng"; - version = "1.6.52"; + version = "1.6.53"; src = fetchurl { url = "mirror://sourceforge/libpng/libpng-${finalAttrs.version}.tar.xz"; - hash = "sha256-Nr1yYijsk6O2wi/bSelKZ7FvL+mzm3i3y2V3KWZmHMw="; + hash = "sha256-HT+4zMKTLQSqNmPiLvXvSQJENw9OVo14UBZQaHeNmNQ="; }; postPatch = whenPatched "gunzip < ${patch_src} | patch -Np1" diff --git a/pkgs/development/libraries/libva/default.nix b/pkgs/development/libraries/libva/default.nix index 2c006a60769df..f27c5bb59eb18 100644 --- a/pkgs/development/libraries/libva/default.nix +++ b/pkgs/development/libraries/libva/default.nix @@ -27,13 +27,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "libva" + lib.optionalString minimal "-minimal"; - version = "2.22.0"; + version = "2.23.0"; src = fetchFromGitHub { owner = "intel"; repo = "libva"; rev = finalAttrs.version; - sha256 = "sha256-0eOYxyMt2M2lkhoWOhoUQgP/1LYY3QQqSF5TdRUuCbs="; + sha256 = "sha256-ePtzZPzBnkhV0cV3Nw/pgOnKnzDkk7U2Svzo0e1YMbc="; }; outputs = [ diff --git a/pkgs/development/libraries/libxcrypt/default.nix b/pkgs/development/libraries/libxcrypt/default.nix index 532ed09b59427..4387d24a61e46 100644 --- a/pkgs/development/libraries/libxcrypt/default.nix +++ b/pkgs/development/libraries/libxcrypt/default.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchurl, + fetchpatch, perl, # Update the enabled crypt scheme ids in passthru when the enabled hashes change enableHashes ? "strong", @@ -19,6 +20,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-cVE6McAaQovM1TZ6Mv2V8RXW2sUPtbYMd51ceUKuwHE="; }; + patches = [ + # https://github.com/besser82/libxcrypt/pull/221 + ./fix-symver-on-non-elf.patch + ]; + # this could be accomplished by updateAutotoolsGnuConfigScriptsHook, but that causes infinite recursion # necessary for FreeBSD code path in configure postPatch = '' @@ -36,7 +42,8 @@ stdenv.mkDerivation (finalAttrs: { "--disable-failure-tokens" # required for musl, android, march=native "--disable-werror" - ]; + ] + ++ lib.optional stdenv.hostPlatform.isCygwin "--disable-symvers"; makeFlags = let @@ -44,7 +51,7 @@ stdenv.mkDerivation (finalAttrs: { in [ ] # fixes: can't build x86_64-w64-mingw32 shared library unless -no-undefined is specified - ++ lib.optionals stdenv.hostPlatform.isWindows [ "LDFLAGS+=-no-undefined" ] + ++ lib.optionals stdenv.hostPlatform.isPE [ "LDFLAGS+=-no-undefined" ] # lld 17 sets `--no-undefined-version` by default and `libxcrypt`'s # version script unconditionally lists legacy compatibility symbols, even diff --git a/pkgs/development/libraries/libxcrypt/fix-symver-on-non-elf.patch b/pkgs/development/libraries/libxcrypt/fix-symver-on-non-elf.patch new file mode 100644 index 0000000000000..0f5f298d3380a --- /dev/null +++ b/pkgs/development/libraries/libxcrypt/fix-symver-on-non-elf.patch @@ -0,0 +1,26 @@ +From 2806cc84abb7bf6aa9d9ff062944d664ab644127 Mon Sep 17 00:00:00 2001 +From: David McFarland +Date: Fri, 2 Jan 2026 13:09:02 -0400 +Subject: [PATCH] Fix compilation on Cygwin + +Cygwin uses COFF like Windows, so it needs the symver stub. +--- + lib/crypt-port.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/crypt-port.h b/lib/crypt-port.h +index 23c7efa..0c90ade 100644 +--- a/lib/crypt-port.h ++++ b/lib/crypt-port.h +@@ -205,7 +205,7 @@ extern size_t strcpy_or_abort (void *dst, size_t d_size, const void *src); + __asm__(".globl _" extstr); \ + __asm__(".set _" extstr ", _" #intname) + +-#elif defined _WIN32 ++#elif defined _WIN32 || defined __CYGWIN__ + + /* .symver is only supported for ELF format, Windows uses COFF/PE */ + # define symver_set(extstr, intname, version, mode) +-- +2.51.2 + diff --git a/pkgs/development/libraries/ncurses/1001-ncurses-Support-gnuabielfv1-2.patch b/pkgs/development/libraries/ncurses/1001-ncurses-Support-gnuabielfv1-2.patch deleted file mode 100644 index 6ce69e6846cb3..0000000000000 --- a/pkgs/development/libraries/ncurses/1001-ncurses-Support-gnuabielfv1-2.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff '--color=auto' -ruN a/aclocal.m4 b/aclocal.m4 ---- a/aclocal.m4 2025-07-19 18:19:51.000000000 +0200 -+++ b/aclocal.m4 2025-07-25 14:11:19.900876172 +0200 -@@ -10290,7 +10290,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) -+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnuabielfv*|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) - CF_GNU_SOURCE($cf_XOPEN_SOURCE) - ;; - linux*musl) -diff '--color=auto' -ruN a/Ada95/aclocal.m4 b/Ada95/aclocal.m4 ---- a/Ada95/aclocal.m4 2025-07-19 18:38:31.000000000 +0200 -+++ b/Ada95/aclocal.m4 2025-07-25 14:11:57.495783459 +0200 -@@ -5430,7 +5430,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) -+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnuabielfv*|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) - CF_GNU_SOURCE($cf_XOPEN_SOURCE) - ;; - linux*musl) -diff '--color=auto' -ruN a/Ada95/configure b/Ada95/configure ---- a/Ada95/configure 2025-07-19 18:40:05.000000000 +0200 -+++ b/Ada95/configure 2025-07-25 14:11:49.981449762 +0200 -@@ -13955,7 +13955,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) -+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnuabielfv*|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) - - cf_gnu_xopen_source=$cf_XOPEN_SOURCE - -diff '--color=auto' -ruN a/configure b/configure ---- a/configure 2025-07-19 19:00:40.000000000 +0200 -+++ b/configure 2025-07-25 14:11:02.884551699 +0200 -@@ -10737,7 +10737,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) -+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnuabielfv*|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) - - cf_gnu_xopen_source=$cf_XOPEN_SOURCE - -diff '--color=auto' -ruN a/test/aclocal.m4 b/test/aclocal.m4 ---- a/test/aclocal.m4 2025-07-19 18:42:37.000000000 +0200 -+++ b/test/aclocal.m4 2025-07-25 14:11:41.551475534 +0200 -@@ -4658,7 +4658,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) -+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnuabielfv*|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) - CF_GNU_SOURCE($cf_XOPEN_SOURCE) - ;; - linux*musl) -diff '--color=auto' -ruN a/test/configure b/test/configure ---- a/test/configure 2025-06-14 15:40:22.000000000 +0200 -+++ b/test/configure 2025-07-25 14:11:34.529155110 +0200 -@@ -4183,7 +4183,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) -+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnuabielfv*|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) - - cf_gnu_xopen_source=$cf_XOPEN_SOURCE - diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index 54859b14d021e..42f603449222f 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -18,12 +18,12 @@ }: stdenv.mkDerivation (finalAttrs: { - version = "6.5"; + version = "6.6"; pname = "ncurses" + lib.optionalString (abiVersion == "5") "-abi5-compat"; src = fetchurl { url = "https://invisible-island.net/archives/ncurses/ncurses-${finalAttrs.version}.tar.gz"; - hash = "sha256-E22RvCaamleF5fnpgLx2q1dCj2BM4+WlqQzrx2eXHMY="; + hash = "sha256-NVtMu+2ICwOBoExGYXt2VuNiWF1S6c+Epn4gCbdJ/xE="; }; outputs = [ @@ -34,14 +34,6 @@ stdenv.mkDerivation (finalAttrs: { setOutputFlags = false; # some aren't supported separateDebugInfo = false; - patches = [ - # linux-gnuabielfv{1,2} is not in ncurses' list of GNU-ish targets (or smth like that?). - # Causes some defines (_XOPEN_SOURCE=600, _DEFAULT_SOURCE) to not get set, so wcwidth is not exposed by system headers, which causes a FTBFS. - # Reported and fix submitted to upstream in https://lists.gnu.org/archive/html/bug-ncurses/2025-07/msg00040.html - # Backported to the 6.5 release (dropped some hunks for code that isn't in this release yet) - ./1001-ncurses-Support-gnuabielfv1-2.patch - ]; - postPatch = '' sed -i '1i #include ' include/curses.h.in ''; diff --git a/pkgs/development/libraries/protobuf/33.nix b/pkgs/development/libraries/protobuf/33.nix index dec1aa836ed8d..3945cf75cc8a4 100644 --- a/pkgs/development/libraries/protobuf/33.nix +++ b/pkgs/development/libraries/protobuf/33.nix @@ -2,8 +2,8 @@ callPackage ./generic.nix ( { - version = "33.2"; - hash = "sha256-SguWBa9VlE15C+eLzcqqusVLgx9kDyPXwYImSE75HCM="; + version = "33.3"; + hash = "sha256-why+EKsH19jSj6LmlUySidx6shbvpItVjWq5deH3EXw="; } // args ) diff --git a/pkgs/development/libraries/protobuf/generic.nix b/pkgs/development/libraries/protobuf/generic.nix index 45b8fc5565c9d..dd19dd083a3bc 100644 --- a/pkgs/development/libraries/protobuf/generic.nix +++ b/pkgs/development/libraries/protobuf/generic.nix @@ -60,12 +60,16 @@ stdenv.mkDerivation (finalAttrs: { }) ]; + preHook = '' + export build_protobuf=${ + if (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) then + buildPackages."protobuf_${lib.versions.major version}" + else + (placeholder "out") + }; + ''; + # hook to provide the path to protoc executable, used at build time - build_protobuf = - if (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) then - buildPackages."protobuf_${lib.versions.major version}" - else - (placeholder "out"); setupHook = ./setup-hook.sh; nativeBuildInputs = [ @@ -83,6 +87,8 @@ stdenv.mkDerivation (finalAttrs: { strictDeps = true; + separateDebugInfo = true; + cmakeDir = if lib.versionOlder version "22" then "../cmake" else null; cmakeFlags = [ "-Dprotobuf_USE_EXTERNAL_GTEST=ON" diff --git a/pkgs/development/libraries/qt-6/modules/qtdeclarative/another-crash-fix.patch b/pkgs/development/libraries/qt-6/modules/qtdeclarative/another-crash-fix.patch new file mode 100644 index 0000000000000..e63a70c53708f --- /dev/null +++ b/pkgs/development/libraries/qt-6/modules/qtdeclarative/another-crash-fix.patch @@ -0,0 +1,16 @@ +--- a/src/qml/jsruntime/qv4qobjectwrapper.cpp ++++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp +@@ -1583,10 +1583,9 @@ + o->deleteLater(); + } else { + // If the object is C++-owned, we still have to release the weak reference we have +- // to it. +- ddata->jsWrapper.clear(); +- if (lastCall && ddata->propertyCache) +- ddata->propertyCache.reset(); ++ // to it. If the "main" wrapper is not ours, we should leave it alone, though. ++ if (ddata->jsWrapper.as() == this) ++ ddata->jsWrapper.clear(); + } + } + } diff --git a/pkgs/development/libraries/qt-6/modules/qtdeclarative/default.nix b/pkgs/development/libraries/qt-6/modules/qtdeclarative/default.nix index 07f95c2290280..d78544b8dc8d5 100644 --- a/pkgs/development/libraries/qt-6/modules/qtdeclarative/default.nix +++ b/pkgs/development/libraries/qt-6/modules/qtdeclarative/default.nix @@ -44,6 +44,11 @@ qtModule { hash = "sha256-KMFurA9Q84qwuyBraU3ZdoFWs8uO3uoUcinfcfh/ps8="; }) + # Backport of https://codereview.qt-project.org/c/qt/qtdeclarative/+/704031 + # Fixes common Plasma crash + # FIXME: remove in 6.10.3 + ./another-crash-fix.patch + # https://qt-project.atlassian.net/browse/QTBUG-137440 (fetchpatch { name = "rb-dialogs-link-labsfolderlistmodel-into-quickdialogs2quickimpl.patch"; diff --git a/pkgs/development/libraries/readline/readline-8.3-patches.nix b/pkgs/development/libraries/readline/readline-8.3-patches.nix index 39f31814ee83f..54d5848238ebd 100644 --- a/pkgs/development/libraries/readline/readline-8.3-patches.nix +++ b/pkgs/development/libraries/readline/readline-8.3-patches.nix @@ -2,4 +2,6 @@ patch: [ (patch "001" "1pl4midx7kc56bw4ansrdpdjpanv1vmp0p6jghrrgrnv0qqs1w11") + (patch "002" "0wklr6h8p2nafk57wzz038j58a1bkrk1mbxsgjzxxxm9dcwn8wz2") + (patch "003" "0afvmkj17wm1af0yrcayzzhzhmkwkackjlmidrsgcf6f04vf3pkj") ] diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/default.nix index 471c427cbd8c6..ff46657680fd1 100644 --- a/pkgs/development/libraries/sqlite/default.nix +++ b/pkgs/development/libraries/sqlite/default.nix @@ -27,17 +27,17 @@ in stdenv.mkDerivation rec { pname = "sqlite${lib.optionalString interactive "-interactive"}"; - version = "3.51.1"; + version = "3.51.2"; # nixpkgs-update: no auto update # NB! Make sure to update ./tools.nix src (in the same directory). src = fetchurl { - url = "https://sqlite.org/2025/sqlite-autoconf-${archiveVersion version}.tar.gz"; - hash = "sha256-TyRFzXBHlyTTKtAV7H/Tf7tvYTABO9S/vIDDK+tCt+A="; + url = "https://sqlite.org/2026/sqlite-autoconf-${archiveVersion version}.tar.gz"; + hash = "sha256-+9ifhmsUA7tmoUMGVEAInddhAPIjgxTZInSggtTyt7s="; }; docsrc = fetchurl { - url = "https://sqlite.org/2025/sqlite-doc-${archiveVersion version}.zip"; - hash = "sha256-cygHoBzJ/K8ftBxw5Bam7dUVlXeI89Wud/7J2BtuIns="; + url = "https://sqlite.org/2026/sqlite-doc-${archiveVersion version}.zip"; + hash = "sha256-xuMNB8XpwSaQHFTY18kKnBo3B4JFUX8GCzxpxN5Dv10="; }; outputs = [ diff --git a/pkgs/development/libraries/sqlite/tools.nix b/pkgs/development/libraries/sqlite/tools.nix index 1669bbd253341..932366a1b595a 100644 --- a/pkgs/development/libraries/sqlite/tools.nix +++ b/pkgs/development/libraries/sqlite/tools.nix @@ -19,14 +19,14 @@ let }: stdenv.mkDerivation rec { inherit pname; - version = "3.51.1"; + version = "3.51.2"; # nixpkgs-update: no auto update src = assert version == sqlite.version; fetchurl { - url = "https://sqlite.org/2025/sqlite-src-${archiveVersion version}.zip"; - hash = "sha256-D452WsjqfDbPjqm//dXBA1ZPSopjXyFfn3g7M4oT2XE="; + url = "https://sqlite.org/2026/sqlite-src-${archiveVersion version}.zip"; + hash = "sha256-hREPdi1QeUFNmd1deRe8P/fgWHbmzL0T2ElqOBfyCCk="; }; nativeBuildInputs = [ unzip ]; diff --git a/pkgs/development/libraries/tpm2-tss/default.nix b/pkgs/development/libraries/tpm2-tss/default.nix index 41b61f053528a..bde0f5da0f736 100644 --- a/pkgs/development/libraries/tpm2-tss/default.nix +++ b/pkgs/development/libraries/tpm2-tss/default.nix @@ -115,6 +115,11 @@ stdenv.mkDerivation (finalAttrs: { done substituteInPlace src/tss2-fapi/ifapi_config.c \ --replace-fail 'SYSCONFDIR' '"/etc"' + + # https://github.com/tpm2-software/tpm2-tss/pull/3041 + substituteInPlace test/unit/tcti-libtpms.c \ + --replace-fail 'check_expected_ptr(st);' 'check_expected(st);' \ + --replace-fail 'check_expected_ptr(buf_len);' 'check_expected(buf_len);' '' # tcti tests rely on mocking function calls, which appears not to be supported # on clang diff --git a/pkgs/development/libraries/wayland/protocols.nix b/pkgs/development/libraries/wayland/protocols.nix index 760e4918059b8..676191efcd7e3 100644 --- a/pkgs/development/libraries/wayland/protocols.nix +++ b/pkgs/development/libraries/wayland/protocols.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "wayland-protocols"; - version = "1.46"; + version = "1.47"; doCheck = stdenv.hostPlatform == stdenv.buildPlatform @@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "https://gitlab.freedesktop.org/wayland/${finalAttrs.pname}/-/releases/${finalAttrs.version}/downloads/${finalAttrs.pname}-${finalAttrs.version}.tar.xz"; - hash = "sha256-/Q3gVqiV+ki9GqXwuN/u1FQQG4i8fhxhqVNCLrcdsWc="; + hash = "sha256-X9Q0m8vJurmkb4z3fR9DQpanoFLIdECglPY/z2KljiA="; }; postPatch = lib.optionalString finalAttrs.finalPackage.doCheck '' diff --git a/pkgs/development/python-modules/aiodns/default.nix b/pkgs/development/python-modules/aiodns/default.nix index a0199d94a9161..0c711ee81f507 100644 --- a/pkgs/development/python-modules/aiodns/default.nix +++ b/pkgs/development/python-modules/aiodns/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "aiodns"; - version = "3.5.0"; + version = "3.6.1"; pyproject = true; src = fetchFromGitHub { owner = "saghul"; repo = "aiodns"; tag = "v${version}"; - hash = "sha256-qabXwvJzZ4bq0R2Wkb0terZgjnRRt0/ymLcJkxChR6s="; + hash = "sha256-dRniMwmDAj8KtM/qMEJieUFq5h0e+PJydXpOT6xZA34="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/aiohttp/default.nix b/pkgs/development/python-modules/aiohttp/default.nix index ccbf466cf16f5..11c3ded606027 100644 --- a/pkgs/development/python-modules/aiohttp/default.nix +++ b/pkgs/development/python-modules/aiohttp/default.nix @@ -51,14 +51,14 @@ buildPythonPackage rec { pname = "aiohttp"; - version = "3.13.2"; + version = "3.13.3"; pyproject = true; src = fetchFromGitHub { owner = "aio-libs"; repo = "aiohttp"; tag = "v${version}"; - hash = "sha256-LqYGrrWgSZazk0hjQvTFwqtU/PtMEaPi+m1Ya8Ds+pU="; + hash = "sha256-V+digrfigdA3hwd2xW47BACh3r07j6pGE8WFAGivZnA="; }; postPatch = '' diff --git a/pkgs/development/python-modules/anyio/default.nix b/pkgs/development/python-modules/anyio/default.nix index ac22f3aaefa7f..a7ac1fd494ce8 100644 --- a/pkgs/development/python-modules/anyio/default.nix +++ b/pkgs/development/python-modules/anyio/default.nix @@ -33,14 +33,14 @@ buildPythonPackage rec { pname = "anyio"; - version = "4.12.0"; + version = "4.12.1"; pyproject = true; src = fetchFromGitHub { owner = "agronholm"; repo = "anyio"; tag = version; - hash = "sha256-zFVvAK06HG40numRihLHBMKCI3d1wQvmEKk+EaBFVVU="; + hash = "sha256-7rfQ6mwB2sNKc28ZPMZNgVs7TFgBUBzH6xGXmtfzX9k="; }; build-system = [ setuptools-scm ]; diff --git a/pkgs/development/python-modules/astroid/default.nix b/pkgs/development/python-modules/astroid/default.nix index a061f0a2babef..16293f1b8a6a5 100644 --- a/pkgs/development/python-modules/astroid/default.nix +++ b/pkgs/development/python-modules/astroid/default.nix @@ -10,21 +10,21 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "astroid"; - version = "4.0.1"; # Check whether the version is compatible with pylint + version = "4.0.3"; # Check whether the version is compatible with pylint pyproject = true; src = fetchFromGitHub { owner = "PyCQA"; repo = "astroid"; - tag = "v${version}"; - hash = "sha256-Ulifj+ym0j0LqhmKPfM8vVCjz71Gwd483ke3PkMnHb8="; + tag = "v${finalAttrs.version}"; + hash = "sha256-5p1xY6EWviSgmrLVOx3w7RcG/Vpx+sUtVndoxXrIFTQ="; }; - nativeBuildInputs = [ setuptools ]; + build-system = [ setuptools ]; - propagatedBuildInputs = lib.optionals (pythonOlder "3.11") [ typing-extensions ]; + dependencies = lib.optionals (pythonOlder "3.11") [ typing-extensions ]; nativeCheckInputs = [ pip @@ -46,10 +46,10 @@ buildPythonPackage rec { }; meta = { - changelog = "https://github.com/PyCQA/astroid/blob/v${version}/ChangeLog"; + changelog = "https://github.com/PyCQA/astroid/blob/${finalAttrs.src.tag}/ChangeLog"; description = "Abstract syntax tree for Python with inference support"; homepage = "https://github.com/PyCQA/astroid"; license = lib.licenses.lgpl21Plus; maintainers = with lib.maintainers; [ GaetanLepage ]; }; -} +}) diff --git a/pkgs/development/python-modules/asttokens/default.nix b/pkgs/development/python-modules/asttokens/default.nix index a1f257bc5c8b9..e58acfa977d5d 100644 --- a/pkgs/development/python-modules/asttokens/default.nix +++ b/pkgs/development/python-modules/asttokens/default.nix @@ -7,20 +7,18 @@ setuptools-scm, }: -buildPythonPackage { +buildPythonPackage rec { pname = "asttokens"; - version = "3.0.0-unstable-2025-11-08"; + version = "3.0.1"; pyproject = true; src = fetchFromGitHub { owner = "gristlabs"; repo = "asttokens"; - rev = "f859c055e8453650e1987c5aefaaec36582d3a07"; - hash = "sha256-dHtKyd5rj1Y7m1vTL9toyQ+GLV5fBNUFNkBM9t4e8yM="; + tag = "v${version}"; + hash = "sha256-1qkkNpjX89TmGD0z0KA2y+UbiHuEOaXzZ6hs9nw7EeM="; }; - env.SETUPTOOLS_SCM_PRETEND_VERSION = "3.0.0"; - build-system = [ setuptools-scm ]; nativeCheckInputs = [ @@ -43,6 +41,8 @@ buildPythonPackage { meta = { description = "Annotate Python AST trees with source text and token information"; homepage = "https://github.com/gristlabs/asttokens"; + changelog = "https://github.com/gristlabs/asttokens/releases/tag/${src.tag}"; license = lib.licenses.asl20; + maintainers = [ ]; }; } diff --git a/pkgs/development/python-modules/backports-zstd/default.nix b/pkgs/development/python-modules/backports-zstd/default.nix index ec965af56c47f..e8567cb414655 100644 --- a/pkgs/development/python-modules/backports-zstd/default.nix +++ b/pkgs/development/python-modules/backports-zstd/default.nix @@ -9,7 +9,7 @@ buildPythonPackage rec { pname = "backports-zstd"; - version = "1.1.0"; + version = "1.3.0"; pyproject = true; src = fetchFromGitHub { @@ -20,7 +20,7 @@ buildPythonPackage rec { postFetch = '' rm -r "$out/src/c/zstd" ''; - hash = "sha256-qgPtLl8oPvM9XDlW72NNX1JqCxzcnLlHyUNNxU9e2PY="; + hash = "sha256-AF2Id4U2++RMCFICxz0E3DrgEVgGNsph4sIZ9YC87fE="; }; postPatch = '' diff --git a/pkgs/development/python-modules/bleak/default.nix b/pkgs/development/python-modules/bleak/default.nix index cf73031fa5a3d..f376653869202 100644 --- a/pkgs/development/python-modules/bleak/default.nix +++ b/pkgs/development/python-modules/bleak/default.nix @@ -1,21 +1,26 @@ { lib, stdenv, - async-timeout, - bluez, buildPythonPackage, - bumble, - dbus-fast, fetchFromGitHub, - poetry-core, - pytest-asyncio, - pytest-cov-stub, - pytestCheckHook, + bluez, pythonOlder, - typing-extensions, + + # build-system + poetry-core, + + # dependencies + bumble, + dbus-fast, pyobjc-core, pyobjc-framework-CoreBluetooth, pyobjc-framework-libdispatch, + typing-extensions, + async-timeout, + + pytest-asyncio, + pytest-cov-stub, + pytestCheckHook, }: buildPythonPackage rec { @@ -30,11 +35,14 @@ buildPythonPackage rec { hash = "sha256-UrKJoEyLa75HMCOgxmOqJi1z+32buMra+dwVe5qbBds="; }; - postPatch = lib.optionalString stdenv.hostPlatform.isLinux '' + postPatch = # bleak checks BlueZ's version with a call to `bluetoothctl --version` - substituteInPlace bleak/backends/bluezdbus/version.py \ - --replace-fail \"bluetoothctl\" \"${bluez}/bin/bluetoothctl\" - ''; + lib.optionalString stdenv.hostPlatform.isLinux '' + substituteInPlace bleak/backends/bluezdbus/version.py \ + --replace-fail \ + '"bluetoothctl"' \ + '"${lib.getExe' bluez "bluetoothctl"}"' + ''; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/blivet/default.nix b/pkgs/development/python-modules/blivet/default.nix index dd433a46b892b..f13e9190c5516 100644 --- a/pkgs/development/python-modules/blivet/default.nix +++ b/pkgs/development/python-modules/blivet/default.nix @@ -20,7 +20,6 @@ f2fs-tools, ntfs3g, btrfs-progs, - reiserfsprogs, mdadm, lvm2, gfs2-utils, @@ -76,7 +75,6 @@ buildPythonPackage rec { f2fs-tools ntfs3g btrfs-progs - reiserfsprogs mdadm lvm2 gfs2-utils diff --git a/pkgs/development/python-modules/brotlicffi/default.nix b/pkgs/development/python-modules/brotlicffi/default.nix index a2aaf2b1dd3f2..618bffa999336 100644 --- a/pkgs/development/python-modules/brotlicffi/default.nix +++ b/pkgs/development/python-modules/brotlicffi/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "brotlicffi"; - version = "1.1.0.0"; + version = "1.2.0.0"; pyproject = true; src = fetchFromGitHub { owner = "python-hyper"; repo = "brotlicffi"; - rev = "v${version}"; - sha256 = "sha256-oW4y1WBJ7+4XwNwwSSR0qUqN03cZYXUYQ6EAwce9dzI="; + tag = "v${version}"; + hash = "sha256-3/68qBfsFtH+7h3gPxUdkyHwG6qLbh+bVLrxzsb3bc4="; }; build-system = [ setuptools ]; @@ -47,6 +47,7 @@ buildPythonPackage rec { pythonImportsCheck = [ "brotlicffi" ]; meta = { + changelog = "https://github.com/python-hyper/brotlicffi/blob/${src.tag}/HISTORY.rst"; description = "Python CFFI bindings to the Brotli library"; homepage = "https://github.com/python-hyper/brotlicffi"; license = lib.licenses.mit; diff --git a/pkgs/development/python-modules/chalice/default.nix b/pkgs/development/python-modules/chalice/default.nix index e949afd1320a7..a0b91b8a7ec7b 100644 --- a/pkgs/development/python-modules/chalice/default.nix +++ b/pkgs/development/python-modules/chalice/default.nix @@ -50,6 +50,8 @@ buildPythonPackage rec { six ]; + pythonRelaxDeps = [ "pip" ]; + nativeCheckInputs = [ hypothesis pytestCheckHook diff --git a/pkgs/development/python-modules/charset-normalizer/default.nix b/pkgs/development/python-modules/charset-normalizer/default.nix index 609126f572ce9..e5df64dc15a85 100644 --- a/pkgs/development/python-modules/charset-normalizer/default.nix +++ b/pkgs/development/python-modules/charset-normalizer/default.nix @@ -8,24 +8,22 @@ pytestCheckHook, requests, setuptools, - setuptools-scm, }: buildPythonPackage rec { pname = "charset-normalizer"; - version = "3.4.3"; + version = "3.4.4"; pyproject = true; src = fetchFromGitHub { owner = "jawah"; repo = "charset_normalizer"; tag = version; - hash = "sha256-ZEHxBErjjvofqe3rkkgiEuEJcoluwo+2nZrLfrsHn5Q="; + hash = "sha256-MtSBKG8bXUsgEPyXxMRBPPFI8mfuIETy6UVshe7yqGg="; }; build-system = [ setuptools - setuptools-scm ] ++ lib.optional (!isPyPy) mypy; diff --git a/pkgs/development/python-modules/datasets/default.nix b/pkgs/development/python-modules/datasets/default.nix index 7986fe8ff6bba..0eb926b85478b 100644 --- a/pkgs/development/python-modules/datasets/default.nix +++ b/pkgs/development/python-modules/datasets/default.nix @@ -1,32 +1,35 @@ { lib, - aiohttp, buildPythonPackage, - dill, fetchFromGitHub, + # build-system + setuptools, + + # dependencies + dill, + filelock, fsspec, + httpx, huggingface-hub, multiprocess, numpy, - packaging, pandas, pyarrow, + pyyaml, requests, - responses, - setuptools, tqdm, xxhash, }: buildPythonPackage rec { pname = "datasets"; - version = "4.0.0"; + version = "4.4.1"; pyproject = true; src = fetchFromGitHub { owner = "huggingface"; repo = "datasets"; tag = version; - hash = "sha256-Cr25PgLNGX/KcFZE5h1oiaDW9J50ccMqA5z3q4sITus="; + hash = "sha256-4uKGbT/EtPD1nk66SZu0r4lqGSQXMHkZh8q8x6g3YqU="; }; build-system = [ @@ -34,17 +37,17 @@ buildPythonPackage rec { ]; dependencies = [ - aiohttp dill + filelock fsspec + httpx huggingface-hub multiprocess numpy - packaging pandas pyarrow + pyyaml requests - responses tqdm xxhash ]; @@ -53,10 +56,6 @@ buildPythonPackage rec { # https://github.com/huggingface/datasets/blob/a256b85cbc67aa3f0e75d32d6586afc507cf535b/setup.py#L117 # "pin until dill has official support for determinism" "dill" - "multiprocess" - # https://github.com/huggingface/datasets/blob/a256b85cbc67aa3f0e75d32d6586afc507cf535b/setup.py#L129 - # "to support protocol=kwargs in fsspec's `open`, `get_fs_token_paths`" - "fsspec" ]; # Tests require pervasive internet access diff --git a/pkgs/development/python-modules/eth-hash/default.nix b/pkgs/development/python-modules/eth-hash/default.nix index cea7774011cf0..c2d6683d349cb 100644 --- a/pkgs/development/python-modules/eth-hash/default.nix +++ b/pkgs/development/python-modules/eth-hash/default.nix @@ -32,7 +32,7 @@ buildPythonPackage rec { ] ++ optional-dependencies.pycryptodome # safe-pysha3 is not available on pypy - ++ lib.optional (!isPyPy) optional-dependencies.pysha3; + ++ lib.optionals (!isPyPy) optional-dependencies.pysha3; # Backends need to be tested separately and can not use hook checkPhase = '' @@ -51,6 +51,8 @@ buildPythonPackage rec { pysha3 = [ safe-pysha3 ]; }; + __structuredAttrs = true; + meta = { description = "Ethereum hashing function keccak256"; homepage = "https://github.com/ethereum/eth-hash"; diff --git a/pkgs/development/python-modules/fastapi-cli/default.nix b/pkgs/development/python-modules/fastapi-cli/default.nix index aee604b738dfc..b13bcff26a204 100644 --- a/pkgs/development/python-modules/fastapi-cli/default.nix +++ b/pkgs/development/python-modules/fastapi-cli/default.nix @@ -15,14 +15,14 @@ let self = buildPythonPackage rec { pname = "fastapi-cli"; - version = "0.0.8"; + version = "0.0.20"; pyproject = true; src = fetchFromGitHub { - owner = "tiangolo"; + owner = "fastapi"; repo = "fastapi-cli"; tag = version; - hash = "sha256-7SYsIgRSFZgtIHBC5Ic9Nlh+LtGJDz0Xx1yxMarAuYY="; + hash = "sha256-RTxu6WmKmGMVsQ2izd8j8P+gGbXV91gVjb95JC52e8Q="; }; build-system = [ pdm-backend ]; @@ -58,8 +58,8 @@ let meta = { description = "Run and manage FastAPI apps from the command line with FastAPI CLI"; - homepage = "https://github.com/tiangolo/fastapi-cli"; - changelog = "https://github.com/tiangolo/fastapi-cli/releases/tag/${src.tag}"; + homepage = "https://github.com/fastapi/fastapi-cli"; + changelog = "https://github.com/fastapi/fastapi-cli/releases/tag/${src.tag}"; mainProgram = "fastapi"; license = lib.licenses.mit; maintainers = [ ]; diff --git a/pkgs/development/python-modules/filelock/default.nix b/pkgs/development/python-modules/filelock/default.nix index 347ef9ca5304b..9b86a3beb8edd 100644 --- a/pkgs/development/python-modules/filelock/default.nix +++ b/pkgs/development/python-modules/filelock/default.nix @@ -12,12 +12,12 @@ buildPythonPackage rec { pname = "filelock"; - version = "3.20.0"; + version = "3.20.1"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-cR6UO07GvkLh1OZpC0jcF1yCKWdGa7McDCk/NDNME/Q="; + hash = "sha256-uDYJSLNRuA9CCHjYUWUZoiBLB6783P0kkSpdMxJ/GIw="; }; build-system = [ diff --git a/pkgs/development/python-modules/fonttools/default.nix b/pkgs/development/python-modules/fonttools/default.nix index 595f9084eb159..f93a7bd2152b8 100644 --- a/pkgs/development/python-modules/fonttools/default.nix +++ b/pkgs/development/python-modules/fonttools/default.nix @@ -26,14 +26,14 @@ buildPythonPackage rec { pname = "fonttools"; - version = "4.60.1"; + version = "4.61.1"; pyproject = true; src = fetchFromGitHub { owner = "fonttools"; repo = "fonttools"; tag = version; - hash = "sha256-h/JRItD5IHlhNSamxRxk/dvyAKUFayzxHvlW7v4N1s8="; + hash = "sha256-762bqAhOqqnuNSH8yFLTBnzYuigs716nt+uC1UwUqT4="; }; build-system = [ diff --git a/pkgs/development/python-modules/google-auth/default.nix b/pkgs/development/python-modules/google-auth/default.nix index 4fdddd4302f75..7b3539a3de724 100644 --- a/pkgs/development/python-modules/google-auth/default.nix +++ b/pkgs/development/python-modules/google-auth/default.nix @@ -4,7 +4,6 @@ aiohttp, aioresponses, buildPythonPackage, - cachetools, cryptography, flask, freezegun, @@ -25,20 +24,19 @@ buildPythonPackage rec { pname = "google-auth"; - version = "2.41.1"; + version = "2.47.0"; pyproject = true; src = fetchFromGitHub { owner = "googleapis"; repo = "google-auth-library-python"; tag = "v${version}"; - hash = "sha256-EPiI3cJy+NkT1oyKZJKcvQwAb64UQZDSNfWorZjIew8="; + hash = "sha256-kgiqKeS8NTlz56yYKE8U/eKFQjHD6CJHOH5IKLgOeDk="; }; build-system = [ setuptools ]; dependencies = [ - cachetools pyasn1-modules rsa ]; diff --git a/pkgs/development/python-modules/google-crc32c/default.nix b/pkgs/development/python-modules/google-crc32c/default.nix index ff7463d817301..8d4f9156041ad 100644 --- a/pkgs/development/python-modules/google-crc32c/default.nix +++ b/pkgs/development/python-modules/google-crc32c/default.nix @@ -26,8 +26,10 @@ buildPythonPackage rec { dependencies = [ cffi ]; - LDFLAGS = "-L${crc32c}/lib"; - CFLAGS = "-I${crc32c}/include"; + env = { + LDFLAGS = "-L${crc32c}/lib"; + CFLAGS = "-I${crc32c}/include"; + }; nativeCheckInputs = [ pytestCheckHook diff --git a/pkgs/development/python-modules/google-genai/default.nix b/pkgs/development/python-modules/google-genai/default.nix index 92ce14652ceaa..4982bdb608366 100644 --- a/pkgs/development/python-modules/google-genai/default.nix +++ b/pkgs/development/python-modules/google-genai/default.nix @@ -2,6 +2,7 @@ aiohttp, anyio, buildPythonPackage, + distro, fetchFromGitHub, google-auth, httpx, @@ -12,6 +13,7 @@ pytestCheckHook, requests, setuptools, + sniffio, tenacity, twine, typing-extensions, @@ -20,14 +22,14 @@ buildPythonPackage rec { pname = "google-genai"; - version = "1.54.0"; + version = "1.56.0"; pyproject = true; src = fetchFromGitHub { owner = "googleapis"; repo = "python-genai"; tag = "v${version}"; - hash = "sha256-yN45JvchpG8RJ7p2I5/MQ0gUg7GQDjugP0wrYWWr3ps="; + hash = "sha256-gtI2t4vgd9i7SPbSro/eC2/mwGudTY6YfekcmbaaPeY="; }; build-system = [ @@ -43,14 +45,17 @@ buildPythonPackage rec { dependencies = [ anyio + distro google-auth httpx pydantic requests + sniffio tenacity typing-extensions websockets - ]; + ] + ++ google-auth.optional-dependencies.requests; optional-dependencies = { aiohttp = [ aiohttp ]; diff --git a/pkgs/development/python-modules/httpx-aiohttp/default.nix b/pkgs/development/python-modules/httpx-aiohttp/default.nix index 1223fc6070406..9295882b144b4 100644 --- a/pkgs/development/python-modules/httpx-aiohttp/default.nix +++ b/pkgs/development/python-modules/httpx-aiohttp/default.nix @@ -9,14 +9,14 @@ buildPythonPackage rec { pname = "httpx-aiohttp"; - version = "0.1.9"; + version = "0.1.12"; pyproject = true; src = fetchFromGitHub { owner = "karpetrosyan"; repo = "httpx-aiohttp"; tag = version; - hash = "sha256-XngJwwolGsiT5AAsDvyQWOi4VEp7ItMdqeoQG6cyDlk="; + hash = "sha256-5k/+oEsW2oPN2OM0jXU/+FcsWQLvSdYgM8AuzTU9XrI="; fetchSubmodules = true; }; diff --git a/pkgs/development/python-modules/markdown-it-py/default.nix b/pkgs/development/python-modules/markdown-it-py/default.nix index cfb5baaab0936..4fbe2e0380ce1 100644 --- a/pkgs/development/python-modules/markdown-it-py/default.nix +++ b/pkgs/development/python-modules/markdown-it-py/default.nix @@ -1,10 +1,11 @@ { lib, - attrs, buildPythonPackage, commonmark, fetchFromGitHub, flit-core, + ipykernel, + jupyter-sphinx, linkify-it-py, markdown, mdit-py-plugins, @@ -25,24 +26,24 @@ buildPythonPackage rec { pname = "markdown-it-py"; - version = "3.0.0"; + version = "4.0.0"; pyproject = true; src = fetchFromGitHub { owner = "executablebooks"; repo = "markdown-it-py"; tag = "v${version}"; - hash = "sha256-cmjLElJA61EysTUFMVY++Kw0pI4wOIXOyCY3To9fpQc="; + hash = "sha256-92J9cMit2zwyjoE8G1YpwDxj+wiApQW2eUHxUOUt3as="; }; # fix downstrem usage of markdown-it-py[linkify] pythonRelaxDeps = [ "linkify-it-py" ]; - nativeBuildInputs = [ + build-system = [ flit-core ]; - propagatedBuildInputs = [ mdurl ]; + dependencies = [ mdurl ]; nativeCheckInputs = [ pytest-regressions @@ -65,24 +66,27 @@ buildPythonPackage rec { mistletoe mistune panflute + # FIXME package markdown-it-pyrs ]; linkify = [ linkify-it-py ]; plugins = [ mdit-py-plugins ]; rtd = [ - attrs + mdit-py-plugins myst-parser pyyaml sphinx sphinx-copybutton sphinx-design sphinx-book-theme + jupyter-sphinx + ipykernel ]; }; meta = { description = "Markdown parser in Python"; homepage = "https://markdown-it-py.readthedocs.io/"; - changelog = "https://github.com/executablebooks/markdown-it-py/blob/${src.rev}/CHANGELOG.md"; + changelog = "https://github.com/executablebooks/markdown-it-py/blob/${src.tag}/CHANGELOG.md"; license = lib.licenses.mit; mainProgram = "markdown-it"; }; diff --git a/pkgs/development/python-modules/mdit-py-plugins/default.nix b/pkgs/development/python-modules/mdit-py-plugins/default.nix index fb76d7e14a5c2..f77a94c05afea 100644 --- a/pkgs/development/python-modules/mdit-py-plugins/default.nix +++ b/pkgs/development/python-modules/mdit-py-plugins/default.nix @@ -10,19 +10,19 @@ buildPythonPackage rec { pname = "mdit-py-plugins"; - version = "0.4.2"; + version = "0.5.0"; pyproject = true; src = fetchFromGitHub { owner = "executablebooks"; repo = "mdit-py-plugins"; tag = "v${version}"; - hash = "sha256-aY2DMLh1OkWVcN6A29FLba1ETerf/EOqSjHVpsdE21M="; + hash = "sha256-MQU6u49KsWGaKeWU5v066kZidcfCoubqClxAapAZb9A="; }; - nativeBuildInputs = [ flit-core ]; + build-system = [ flit-core ]; - propagatedBuildInputs = [ markdown-it-py ]; + dependencies = [ markdown-it-py ]; nativeCheckInputs = [ pytestCheckHook @@ -34,7 +34,7 @@ buildPythonPackage rec { meta = { description = "Collection of core plugins for markdown-it-py"; homepage = "https://github.com/executablebooks/mdit-py-plugins"; - changelog = "https://github.com/executablebooks/mdit-py-plugins/blob/v${version}/CHANGELOG.md"; + changelog = "https://github.com/executablebooks/mdit-py-plugins/blob/${src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = [ ]; }; diff --git a/pkgs/development/python-modules/meson-python/add-build-flags.sh b/pkgs/development/python-modules/meson-python/add-build-flags.sh index dd31fc4536566..8604ba9ebe7c6 100644 --- a/pkgs/development/python-modules/meson-python/add-build-flags.sh +++ b/pkgs/development/python-modules/meson-python/add-build-flags.sh @@ -1,6 +1,8 @@ mesonPythonBuildFlagsHook() { # Add all of mesonFlags to -Csetup-args for pypa builds - for f in $mesonFlags "${mesonFlagsArray[@]}"; do + local flagsArray=() + concatTo flagsArray mesonFlags mesonFlagsArray + for f in "${flagsArray[@]}"; do appendToVar pypaBuildFlags "-Csetup-args=$f" # This requires pip>23.0.1, see: https://meson-python.readthedocs.io/en/latest/how-to-guides/config-settings.html appendToVar pipBuildFlags "--config-settings=setup-args=$f" diff --git a/pkgs/development/python-modules/myst-parser/default.nix b/pkgs/development/python-modules/myst-parser/default.nix index b0974d0cf7e7c..b79a05db53758 100644 --- a/pkgs/development/python-modules/myst-parser/default.nix +++ b/pkgs/development/python-modules/myst-parser/default.nix @@ -2,8 +2,11 @@ lib, buildPythonPackage, fetchFromGitHub, + + # build-system flit-core, - defusedxml, + + # dependencies docutils, jinja2, markdown-it-py, @@ -11,13 +14,16 @@ pyyaml, sphinx, typing-extensions, + + # tests beautifulsoup4, + defusedxml, pytest-param-files, pytest-regressions, - sphinx-pytest, pytestCheckHook, + sphinx-pytest, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "myst-parser"; version = "4.0.1"; pyproject = true; @@ -25,17 +31,20 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "executablebooks"; repo = "myst-parser"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-/Prauz4zuJY39EK2BmgBbH1uwjF4K38e5X5hPYwRBl0="; }; build-system = [ flit-core ]; + pythonRelaxDeps = [ + "markdown-it-py" + ]; dependencies = [ docutils jinja2 - mdit-py-plugins markdown-it-py + mdit-py-plugins pyyaml sphinx typing-extensions @@ -46,30 +55,29 @@ buildPythonPackage rec { defusedxml pytest-param-files pytest-regressions - sphinx-pytest pytestCheckHook + sphinx-pytest ] ++ markdown-it-py.optional-dependencies.linkify; disabledTests = [ # sphinx 8.2 compat # https://github.com/executablebooks/MyST-Parser/issues/1030 - "test_sphinx_directives" - "test_references_singlehtml" + "test_commonmark" "test_extended_syntaxes" "test_fieldlist_extension" "test_includes" + "test_references_singlehtml" + "test_sphinx_directives" ]; pythonImportsCheck = [ "myst_parser" ]; - pythonRelaxDeps = [ "docutils" ]; - meta = { description = "Sphinx and Docutils extension to parse MyST"; homepage = "https://myst-parser.readthedocs.io/"; - changelog = "https://raw.githubusercontent.com/executablebooks/MyST-Parser/v${version}/CHANGELOG.md"; + changelog = "https://raw.githubusercontent.com/executablebooks/MyST-Parser/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ loicreynier ]; }; -} +}) diff --git a/pkgs/development/python-modules/onnxruntime/default.nix b/pkgs/development/python-modules/onnxruntime/default.nix index 9685d85a72a31..ebd0e28cd2430 100644 --- a/pkgs/development/python-modules/onnxruntime/default.nix +++ b/pkgs/development/python-modules/onnxruntime/default.nix @@ -38,6 +38,10 @@ buildPythonPackage { chmod +w dist ''; + env = { + NIX_LDFLAGS = "-z,noexecstack"; + }; + nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; # This project requires fairly large dependencies such as sympy which we really don't always need. diff --git a/pkgs/development/python-modules/pikepdf/default.nix b/pkgs/development/python-modules/pikepdf/default.nix index ba5b0106353a8..eb1817e99b9c5 100644 --- a/pkgs/development/python-modules/pikepdf/default.nix +++ b/pkgs/development/python-modules/pikepdf/default.nix @@ -25,7 +25,7 @@ buildPythonPackage rec { pname = "pikepdf"; - version = "10.0.2"; + version = "10.1.0"; pyproject = true; src = fetchFromGitHub { @@ -38,7 +38,7 @@ buildPythonPackage rec { postFetch = '' rm "$out/.git_archival.txt" ''; - hash = "sha256-ncWgIcQp6/GOrNwIvwJ4nvf+SUfr0N53MXYq9LpfiB4="; + hash = "sha256-bNRzdG5oNj+653Tr2A9JGrABWNH8ZAWDOfhOafGZOjQ="; }; patches = [ diff --git a/pkgs/development/python-modules/pillow/default.nix b/pkgs/development/python-modules/pillow/default.nix index 7e7fef0ee281e..a79c5eb5e3d62 100644 --- a/pkgs/development/python-modules/pillow/default.nix +++ b/pkgs/development/python-modules/pillow/default.nix @@ -42,14 +42,14 @@ buildPythonPackage rec { pname = "pillow"; - version = "12.0.0"; + version = "12.1.0"; pyproject = true; src = fetchFromGitHub { owner = "python-pillow"; repo = "pillow"; tag = version; - hash = "sha256-58mjwHErEZPkkGBVZznkkMQN5Zo4ZBBiXnhqVp1F81g="; + hash = "sha256-QGtuxKpkx2FScQHj9lH4mhEAo6jE+NAR2sR5/zvHUuA="; }; build-system = [ diff --git a/pkgs/development/python-modules/pip-tools/default.nix b/pkgs/development/python-modules/pip-tools/default.nix index e99af8e27a02c..73c8e6cbfb5b8 100644 --- a/pkgs/development/python-modules/pip-tools/default.nix +++ b/pkgs/development/python-modules/pip-tools/default.nix @@ -74,6 +74,9 @@ buildPythonPackage rec { "test_get_hashes_from_mixed" "test_toggle_reuse_hashes_local_repository" "test_generate_hashes_all_platforms" + "test_iter_dependencies_after_combine_install_requirements" + "test_iter_dependencies_after_combine_install_requirements_extras" + "test_name_collision" # Assertion error "test_compile_recursive_extras" "test_compile_build_targets_setuptools_no_wheel_dep" diff --git a/pkgs/development/python-modules/pip/default.nix b/pkgs/development/python-modules/pip/default.nix index a3ae02eca7d6f..456baee0136ee 100644 --- a/pkgs/development/python-modules/pip/default.nix +++ b/pkgs/development/python-modules/pip/default.nix @@ -5,9 +5,8 @@ pythonAtLeast, # build-system + flit-core, installShellFiles, - wheel, - setuptools, # docs sphinx, @@ -32,14 +31,14 @@ let self = buildPythonPackage rec { pname = "pip"; - version = "25.0.1"; + version = "25.3"; pyproject = true; src = fetchFromGitHub { owner = "pypa"; repo = "pip"; tag = version; - hash = "sha256-V069rAL6U5KBnSc09LRCu0M7qQCH5NbMghVttlmIoRY="; + hash = "sha256-aHV4j9OMLD6I6Fe6A04bE7xk6eS5CxeUEw4Psqj7xz0="; }; postPatch = '' @@ -49,9 +48,8 @@ let ''; nativeBuildInputs = [ + flit-core installShellFiles - setuptools - wheel ] ++ lib.optionals (pythonAtLeast "3.11") [ # docs diff --git a/pkgs/development/python-modules/protobuf/6.nix b/pkgs/development/python-modules/protobuf/6.nix index 16e959977440a..5c601b5316832 100644 --- a/pkgs/development/python-modules/protobuf/6.nix +++ b/pkgs/development/python-modules/protobuf/6.nix @@ -9,12 +9,12 @@ buildPythonPackage rec { pname = "protobuf"; - version = "6.33.2"; + version = "6.33.3"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-Vtw3DJH7uKyFvBNYLJ43NWlmiikKouZqWQwqDTXdueQ="; + hash = "sha256-yHlN6+tAKWP93/QaWV4fZJvNdmFrpWyDVkXKtFOegQ4="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/py-cpuinfo/default.nix b/pkgs/development/python-modules/py-cpuinfo/default.nix index 859e39361a915..b2748ad0eaa03 100644 --- a/pkgs/development/python-modules/py-cpuinfo/default.nix +++ b/pkgs/development/python-modules/py-cpuinfo/default.nix @@ -3,24 +3,23 @@ stdenv, buildPythonPackage, fetchFromGitHub, + setuptools, pytestCheckHook, sysctl, }: buildPythonPackage rec { pname = "py-cpuinfo"; - version = "9.0.0"; - format = "setuptools"; + version = "9.0.0-unstable-2022-11-20"; + pyproject = true; src = fetchFromGitHub { owner = "workhorsy"; repo = "py-cpuinfo"; - rev = "v${version}"; - hash = "sha256-Q5u0guAqDVhf6bvJTzNvCpWbIzjxxAjE7s0OuXj9T4Q="; + rev = "f3f0fec58335b9699b9b294267c15f516045b1fe"; + hash = "sha256-oORoJNnbKLNmdqoyVhW6WbI4p2G7oMDhtTqeDvaDiGQ="; }; - nativeCheckInputs = [ pytestCheckHook ]; - # On Darwin sysctl is used to read CPU information. postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' substituteInPlace cpuinfo/cpuinfo.py \ @@ -28,6 +27,10 @@ buildPythonPackage rec { --replace "_run_and_get_stdout(['sysctl'" "_run_and_get_stdout(['${sysctl}/bin/sysctl'" ''; + build-system = [ setuptools ]; + + nativeCheckInputs = [ pytestCheckHook ]; + pythonImportsCheck = [ "cpuinfo" ]; meta = { diff --git a/pkgs/development/python-modules/pylint/default.nix b/pkgs/development/python-modules/pylint/default.nix index 6a899b5a7926c..6f018ebd3939d 100644 --- a/pkgs/development/python-modules/pylint/default.nix +++ b/pkgs/development/python-modules/pylint/default.nix @@ -20,18 +20,19 @@ tomli, tomlkit, typing-extensions, + writableTmpDirAsHomeHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "pylint"; - version = "4.0.2"; + version = "4.0.4"; pyproject = true; src = fetchFromGitHub { owner = "pylint-dev"; repo = "pylint"; - tag = "v${version}"; - hash = "sha256-DzS5ORhFWmA+eEhGDdpXdHLgWTfw198S7pQueBk44Cw="; + tag = "v${finalAttrs.version}"; + hash = "sha256-mKI/sRYl2ZwZ3JklmqBTs7vRG9EA4zDHaW61d/Xozb4="; }; build-system = [ setuptools ]; @@ -55,6 +56,7 @@ buildPythonPackage rec { pytest7CheckHook requests typing-extensions + writableTmpDirAsHomeHook ]; pytestFlags = [ @@ -66,10 +68,6 @@ buildPythonPackage rec { "-v" ]; - preCheck = '' - export HOME=$TEMPDIR - ''; - disabledTestPaths = [ "tests/benchmark" # tests miss multiple input files @@ -106,7 +104,7 @@ buildPythonPackage rec { meta = { description = "Bug and style checker for Python"; homepage = "https://pylint.readthedocs.io/en/stable/"; - changelog = "https://github.com/pylint-dev/pylint/releases/tag/v${version}"; + changelog = "https://github.com/pylint-dev/pylint/releases/tag/${finalAttrs.src.tag}"; longDescription = '' Pylint is a Python static code analysis tool which looks for programming errors, helps enforcing a coding standard, sniffs for code smells and offers simple @@ -120,4 +118,4 @@ buildPythonPackage rec { maintainers = [ ]; mainProgram = "pylint"; }; -} +}) diff --git a/pkgs/development/python-modules/pymobiledevice3/default.nix b/pkgs/development/python-modules/pymobiledevice3/default.nix index 9acb354719617..10567ef0a3297 100644 --- a/pkgs/development/python-modules/pymobiledevice3/default.nix +++ b/pkgs/development/python-modules/pymobiledevice3/default.nix @@ -1,7 +1,6 @@ { bpylist2, buildPythonPackage, - click, coloredlogs, construct, construct-typing, @@ -41,6 +40,8 @@ srptools, sslpsk-pmd3, tqdm, + typer, + typer-injector, uvicorn, wsproto, xonsh, @@ -48,14 +49,14 @@ buildPythonPackage rec { pname = "pymobiledevice3"; - version = "6.2.0"; + version = "7.0.7"; pyproject = true; src = fetchFromGitHub { owner = "doronz88"; repo = "pymobiledevice3"; tag = "v${version}"; - hash = "sha256-Sc02p2zZb/CPYFU+lz6fe1UZgWhdJYH2/pSJ5gVE0iY="; + hash = "sha256-akJjxGj8kSvp9cRzEZrndW9il1zCabneZfKx8ACOmLk="; }; build-system = [ @@ -65,7 +66,6 @@ buildPythonPackage rec { dependencies = [ bpylist2 - click coloredlogs construct construct-typing @@ -99,6 +99,8 @@ buildPythonPackage rec { srptools sslpsk-pmd3 tqdm + typer + typer-injector uvicorn wsproto xonsh diff --git a/pkgs/development/python-modules/pynacl/default.nix b/pkgs/development/python-modules/pynacl/default.nix index d22c81fdd904e..22a9c7aa4079a 100644 --- a/pkgs/development/python-modules/pynacl/default.nix +++ b/pkgs/development/python-modules/pynacl/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "pynacl"; - version = "1.6.0"; + version = "1.6.2"; outputs = [ "out" "doc" @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "pyca"; repo = "pynacl"; tag = version; - hash = "sha256-7SDJB2bXn0IGJQi597yehs9epdfmS7slbQ97vFVUkEA="; + hash = "sha256-EzzJVRDgYQO6T8YIQjad/Eb9O+BXT4IpOpa48fpBPnc="; }; build-system = [ diff --git a/pkgs/development/python-modules/pytest-rerunfailures/default.nix b/pkgs/development/python-modules/pytest-rerunfailures/default.nix index f4083ccd7a020..57bd62628ccdd 100644 --- a/pkgs/development/python-modules/pytest-rerunfailures/default.nix +++ b/pkgs/development/python-modules/pytest-rerunfailures/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "pytest-rerunfailures"; - version = "16.0.1"; + version = "16.1"; pyproject = true; src = fetchFromGitHub { owner = "pytest-dev"; repo = "pytest-rerunfailures"; tag = version; - hash = "sha256-4/BgvfVcs7MdULlhafZypNzzag4ITALStHI1tIoAPL4="; + hash = "sha256-EvjgqJQb4Nw7rn/wVLfHoq9iUnJ4vQ1kwSL5fetHv6M="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/rdflib/default.nix b/pkgs/development/python-modules/rdflib/default.nix index 217ef0030e2e9..79b19a0ed0db7 100644 --- a/pkgs/development/python-modules/rdflib/default.nix +++ b/pkgs/development/python-modules/rdflib/default.nix @@ -75,6 +75,10 @@ buildPythonPackage rec { "test_example" "test_guess_format_for_parse" "rdflib.extras.infixowl" + # Upstream don't seem worried about these two tests failing + # https://github.com/RDFLib/rdflib/issues/2649#issuecomment-2443482119 + "test_sparqleval" + "test_parser" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # Require loopback network access diff --git a/pkgs/development/python-modules/regex/default.nix b/pkgs/development/python-modules/regex/default.nix index 7a581c682ceb7..ab9091e13fc5a 100644 --- a/pkgs/development/python-modules/regex/default.nix +++ b/pkgs/development/python-modules/regex/default.nix @@ -7,7 +7,7 @@ }: let - version = "2025.9.18"; + version = "2025.11.3"; in buildPythonPackage { pname = "regex"; @@ -18,13 +18,21 @@ buildPythonPackage { owner = "mrabarnett"; repo = "mrab-regex"; tag = version; - hash = "sha256-s/jaRbQffd1DmGribk8gwTraKEhWfvFZboWXUduhM8A="; + hash = "sha256-KEn+8DoAAq2OBqnl7vluqn1UPBpIfmO1v4wxKUZrcyA="; }; build-system = [ setuptools ]; + preCheck = '' + rm regex/__init__.py + ''; + checkPhase = '' - ${python.interpreter} -m unittest + runHook preCheck + + ${python.interpreter} -m unittest ./regex/tests/test_regex.py + + runHook postCheck ''; pythonImportsCheck = [ "regex" ]; diff --git a/pkgs/development/python-modules/setproctitle/default.nix b/pkgs/development/python-modules/setproctitle/default.nix index aa1211029abbd..46daff35a257d 100644 --- a/pkgs/development/python-modules/setproctitle/default.nix +++ b/pkgs/development/python-modules/setproctitle/default.nix @@ -27,8 +27,13 @@ buildPythonPackage rec { procps ]; - # Setting the process title fails on macOS in the Nix builder environment (regardless of sandboxing) - disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ "test_setproctitle_darwin" ]; + disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ + # Setting the process title fails on macOS in the Nix builder environment (regardless of sandboxing) + "test_setproctitle_darwin" + # *** multi-threaded process forked ***; crashed on child side of fork pre-exec. fork without exec is unsafe. + "test_fork_segfault" + "test_thread_fork_segfault" + ]; pythonImportsCheck = [ "setproctitle" ]; diff --git a/pkgs/development/python-modules/trove-classifiers/default.nix b/pkgs/development/python-modules/trove-classifiers/default.nix index a13f3db23913f..97b6fb4e6eadf 100644 --- a/pkgs/development/python-modules/trove-classifiers/default.nix +++ b/pkgs/development/python-modules/trove-classifiers/default.nix @@ -10,13 +10,13 @@ let self = buildPythonPackage rec { pname = "trove-classifiers"; - version = "2025.11.14.15"; + version = "2025.12.1.14"; pyproject = true; src = fetchPypi { pname = "trove_classifiers"; inherit version; - hash = "sha256-a2D0nUC72JW8YdjcQU/C8ihtcOty7SNUjbjPlPYoBMo="; + hash = "sha256-p08EAFJPyDYgqb50oHB0tcvnWU/U2X/Uwr/eYl/cFjM="; }; postPatch = '' diff --git a/pkgs/development/python-modules/typer-injector/default.nix b/pkgs/development/python-modules/typer-injector/default.nix new file mode 100644 index 0000000000000..109ae7c7b7967 --- /dev/null +++ b/pkgs/development/python-modules/typer-injector/default.nix @@ -0,0 +1,44 @@ +{ + buildPythonPackage, + fetchFromGitHub, + hatch-vcs, + hatchling, + lib, + pytestCheckHook, + typer-slim, +}: + +buildPythonPackage rec { + pname = "typer-injector"; + version = "0.2.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "BenjyWiener"; + repo = "typer-injector"; + tag = "v${version}"; + hash = "sha256-nwEYFw+4jeF/SoaZWR51VWRezqBFjGoLiVgJWdPNoIk="; + }; + + build-system = [ + hatch-vcs + hatchling + ]; + + dependencies = [ + typer-slim + ]; + + pythonImportsCheck = [ "typer_injector" ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = { + description = "Dependency injection for Typer"; + homepage = "https://github.com/BenjyWiener/typer-injector"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dotlambda ]; + }; +} diff --git a/pkgs/development/python-modules/typer-slim/default.nix b/pkgs/development/python-modules/typer-slim/default.nix index 55c736320c78b..71bda750278cf 100644 --- a/pkgs/development/python-modules/typer-slim/default.nix +++ b/pkgs/development/python-modules/typer-slim/default.nix @@ -24,14 +24,14 @@ buildPythonPackage rec { pname = "typer-slim"; - version = "0.19.2"; + version = "0.21.0"; pyproject = true; src = fetchFromGitHub { owner = "fastapi"; repo = "typer"; tag = version; - hash = "sha256-mMsOEI4FpLkLkpjxjnUdmKdWD65Zx3Z1+L+XsS79k44="; + hash = "sha256-MvrwHemciLa2m0QUTZNuCLa7x63RKWFzJ5k6Ask25ZY="; }; postPatch = '' diff --git a/pkgs/development/python-modules/ufo2ft/default.nix b/pkgs/development/python-modules/ufo2ft/default.nix index 87341a5120f45..1075c7afc980f 100644 --- a/pkgs/development/python-modules/ufo2ft/default.nix +++ b/pkgs/development/python-modules/ufo2ft/default.nix @@ -18,22 +18,20 @@ buildPythonPackage rec { pname = "ufo2ft"; - version = "3.6.8"; + version = "3.7.0"; pyproject = true; src = fetchFromGitHub { owner = "googlefonts"; repo = "ufo2ft"; tag = "v${version}"; - hash = "sha256-Qng6r+STE/Xz5T0kEwbj2eFDyWtIdH/I4wa6eO0epFc="; + hash = "sha256-PHd4l3kbWdJmtZMF9gKbz5DtdaaO3C/Rldw3pdMJJC0="; }; build-system = [ setuptools-scm ]; - pythonRelaxDeps = [ "cffsubr" ]; - dependencies = [ cu2qu fontmath diff --git a/pkgs/development/python-modules/uncertainties/default.nix b/pkgs/development/python-modules/uncertainties/default.nix index d03fa46dab173..346885fdbe14f 100644 --- a/pkgs/development/python-modules/uncertainties/default.nix +++ b/pkgs/development/python-modules/uncertainties/default.nix @@ -2,7 +2,6 @@ lib, buildPythonPackage, fetchFromGitHub, - fetchpatch, # build-system setuptools, @@ -13,28 +12,21 @@ # tests pytestCheckHook, + scipy, }: buildPythonPackage rec { pname = "uncertainties"; - version = "3.2.3"; + version = "3.2.4"; pyproject = true; src = fetchFromGitHub { owner = "lmfit"; repo = "uncertainties"; tag = version; - hash = "sha256-YapujmwTlmUfTQwHsuh01V+jqsBbTd0Q9adGNiE8Go0="; + hash = "sha256-XfEiE27azEBNCZ6sIBncJI1cYocoXwgxEkclVgR5O34="; }; - patches = [ - (fetchpatch { - # python 3.14 compat - url = "https://github.com/lmfit/uncertainties/commit/633da70494ae6570cc69a910e1f6231538acf374.patch"; - hash = "sha256-P1LiIqA2p58bjupJaf18A6YxBeu+PNpueHACry24OwQ="; - }) - ]; - build-system = [ setuptools setuptools-scm @@ -44,6 +36,7 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook + scipy ] ++ optional-dependencies.arrays; diff --git a/pkgs/development/python-modules/uvloop/default.nix b/pkgs/development/python-modules/uvloop/default.nix index 31bbc7a7f2d72..6354d3b3d49ea 100644 --- a/pkgs/development/python-modules/uvloop/default.nix +++ b/pkgs/development/python-modules/uvloop/default.nix @@ -2,9 +2,9 @@ lib, stdenv, buildPythonPackage, - pythonAtLeast, pythonOlder, fetchFromGitHub, + fetchpatch, # build-system cython, @@ -70,6 +70,9 @@ buildPythonPackage rec { "tests/test_tcp.py::Test_AIO_TCP::test_create_connection_open_con_addr" # ConnectionAbortedError: SSL handshake is taking longer than 15.0 seconds "tests/test_tcp.py::Test_AIO_TCPSSL::test_create_connection_ssl_1" + # Fails randomly on hydra + # https://github.com/MagicStack/uvloop/issues/709 + "tests/test_process.py::TestAsyncio_AIO_Process::test_cancel_post_init" ] ++ lib.optionals (pythonOlder "3.11") [ "tests/test_tcp.py::Test_UV_TCPSSL::test_create_connection_ssl_failed_certificat" @@ -79,10 +82,6 @@ buildPythonPackage rec { "tests/test_fs_event.py::Test_UV_FS_EVENT_RENAME::test_fs_event_rename" # Broken: https://github.com/NixOS/nixpkgs/issues/160904 "tests/test_context.py::Test_UV_Context::test_create_ssl_server_manual_connection_lost" - ] - ++ lib.optionals (stdenv.hostPlatform.isDarwin && pythonAtLeast "3.14") [ - # https://github.com/MagicStack/uvloop/issues/709 - "tests/test_process.py::TestAsyncio_AIO_Process::test_cancel_post_init" ]; preCheck = '' diff --git a/pkgs/development/python-modules/vfblib/default.nix b/pkgs/development/python-modules/vfblib/default.nix index 5b147d8ebad00..b1c0a671a24f7 100644 --- a/pkgs/development/python-modules/vfblib/default.nix +++ b/pkgs/development/python-modules/vfblib/default.nix @@ -16,16 +16,21 @@ buildPythonPackage rec { pname = "vfblib"; - version = "0.10.4"; + version = "0.10.6"; pyproject = true; src = fetchFromGitHub { owner = "LucasFonts"; repo = "vfbLib"; tag = "v${version}"; - hash = "sha256-fAczRejHDe02iWMWXQzNHLmxRX5ApIPvUzsYnwqrKn8="; + hash = "sha256-kPPRLs+i181stjoTjgi9XfxsQhx+VKGCggyfhy8o6Nw="; }; + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail "setuptools-scm[toml]>=9.2.0" "setuptools-scm" + ''; + build-system = [ setuptools setuptools-scm @@ -40,6 +45,10 @@ buildPythonPackage rec { defcon ]; + pythonRelaxDeps = [ + "ufonormalizer" + ]; + nativeCheckInputs = [ pytestCheckHook ]; pythonImportsCheck = [ "vfbLib" ]; diff --git a/pkgs/development/python-modules/virtualenv/default.nix b/pkgs/development/python-modules/virtualenv/default.nix index ca1667b4ca65d..7be7089fa303b 100644 --- a/pkgs/development/python-modules/virtualenv/default.nix +++ b/pkgs/development/python-modules/virtualenv/default.nix @@ -17,14 +17,14 @@ buildPythonPackage rec { pname = "virtualenv"; - version = "20.35.4"; + version = "20.36.1"; pyproject = true; src = fetchFromGitHub { owner = "pypa"; repo = "virtualenv"; tag = version; - hash = "sha256-0PWIYU1/zXiOBUV/45rJsJwVlcqHeac68nRM2tvEPHo="; + hash = "sha256-8fiC7+9FzQnmoI+N4cA5kKBLH9tpU7LXZ7pVj8Bz8Wc="; }; build-system = [ diff --git a/pkgs/development/python-modules/werkzeug/default.nix b/pkgs/development/python-modules/werkzeug/default.nix index 588e985af60ba..8cb30d3051acd 100644 --- a/pkgs/development/python-modules/werkzeug/default.nix +++ b/pkgs/development/python-modules/werkzeug/default.nix @@ -27,12 +27,12 @@ buildPythonPackage rec { pname = "werkzeug"; - version = "3.1.3"; + version = "3.1.4"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-YHI86UXBkyhnl5DjKCzHWKpKYEDkuzMPU9MPpUbUR0Y="; + hash = "sha256-zTzZixuS3Dt7OZUDiCbGgJfcsW+bqmOr418g6v65/l4="; }; build-system = [ flit-core ]; diff --git a/pkgs/development/python-modules/yarl/default.nix b/pkgs/development/python-modules/yarl/default.nix index 8e7387921a2d4..ce71ee1c4a71a 100644 --- a/pkgs/development/python-modules/yarl/default.nix +++ b/pkgs/development/python-modules/yarl/default.nix @@ -9,6 +9,7 @@ multidict, propcache, hypothesis, + pydantic, pytest-codspeed, pytest-cov-stub, pytest-xdist, @@ -17,14 +18,14 @@ buildPythonPackage rec { pname = "yarl"; - version = "1.22.0"; + version = "1.23.0"; pyproject = true; src = fetchFromGitHub { owner = "aio-libs"; repo = "yarl"; tag = "v${version}"; - hash = "sha256-IkP6AxLT260NN2X2bd7b5LGVGFUjo7eQiuWxvMtcb8g="; + hash = "sha256-274uVOCTLUihDIJTG62hL2mOBaYDNvRLdTjMcasDFsw="; }; build-system = [ @@ -46,6 +47,7 @@ buildPythonPackage rec { nativeCheckInputs = [ hypothesis + pydantic pytest-codspeed pytest-cov-stub pytest-xdist diff --git a/pkgs/development/rocm-modules/llvm/default.nix b/pkgs/development/rocm-modules/llvm/default.nix index 3d5db0710d413..fd4ca82c838c0 100644 --- a/pkgs/development/rocm-modules/llvm/default.nix +++ b/pkgs/development/rocm-modules/llvm/default.nix @@ -436,6 +436,14 @@ overrideLlvmPackagesRocm (s: { isGNU = false; }; compiler-rt-libc = s.prev.compiler-rt-libc.overrideAttrs (old: { + patches = old.patches ++ [ + # fix build with glibc >= 2.42 + (fetchpatch { + url = "https://github.com/llvm/llvm-project/commit/59978b21ad9c65276ee8e14f26759691b8a65763.patch"; + hash = "sha256-ys5SMLfO3Ay9nCX9GV5yRCQ6pLsseFu/ZY6Xd6OL4p0="; + relative = "compiler-rt"; + }) + ]; meta = old.meta // llvmMeta; }); compiler-rt = s.final.compiler-rt-libc; diff --git a/pkgs/development/rocm-modules/migraphx/default.nix b/pkgs/development/rocm-modules/migraphx/default.nix index afce720b4f23f..32eeb4a84227b 100644 --- a/pkgs/development/rocm-modules/migraphx/default.nix +++ b/pkgs/development/rocm-modules/migraphx/default.nix @@ -120,7 +120,7 @@ stdenv.mkDerivation (finalAttrs: { python3Packages.onnx ]; - LDFLAGS = "-Wl,--allow-shlib-undefined"; + env.LDFLAGS = "-Wl,--allow-shlib-undefined"; cmakeFlags = [ "-DMIGRAPHX_ENABLE_GPU=ON" @@ -147,7 +147,7 @@ stdenv.mkDerivation (finalAttrs: { ]; postPatch = '' - export CXXFLAGS+=" -w -isystem${rocmlir}/include/rocmlir -I${half}/include -I${abseil-cpp}/include -I${hipblas-common}/include" + export CXXFLAGS+=" -w -isystem${rocmlir}/include/rocmlir -I${half}/include -I${lib.getInclude abseil-cpp}/include -I${hipblas-common}/include" patchShebangs tools # `error: '__clang_hip_runtime_wrapper.h' file not found [clang-diagnostic-error]` diff --git a/pkgs/development/tools/analysis/rr/default.nix b/pkgs/development/tools/analysis/rr/default.nix index eade75043d16c..d704b9b9b8fb6 100644 --- a/pkgs/development/tools/analysis/rr/default.nix +++ b/pkgs/development/tools/analysis/rr/default.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, bash, capnproto, cmake, @@ -28,6 +29,14 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-o+HXrgGXdsvjlNh70qsXRtp2yXOiZIT30ejfs1KEaqE="; }; + patches = [ + # fix build w/ glibc-2.42 + (fetchpatch { + url = "https://github.com/rr-debugger/rr/commit/6251648873b9e1ed23536beebbaa5d6fead3d5be.patch"; + hash = "sha256-k+jeGUJyybYq3GF2zIhpDF8NT66Buq6nztUbh28qVD8="; + }) + ]; + postPatch = '' substituteInPlace src/Command.cc --replace '_BSD_SOURCE' '_DEFAULT_SOURCE' patchShebangs src diff --git a/pkgs/development/tools/build-managers/gnumake/default.nix b/pkgs/development/tools/build-managers/gnumake/default.nix index 9cefbee3682db..c6840241c6095 100644 --- a/pkgs/development/tools/build-managers/gnumake/default.nix +++ b/pkgs/development/tools/build-managers/gnumake/default.nix @@ -6,6 +6,7 @@ gettext, guileSupport ? false, guile, + texinfo, # avoid guile depend on bootstrap to prevent dependency cycles inBootstrap ? false, pkg-config, @@ -36,14 +37,14 @@ stdenv.mkDerivation (finalAttrs: { # TODO: stdenv’s setup.sh should be aware of patch directories. It’s very # convenient to keep them in a separate directory but we can defer listing the # directory until derivation realization to avoid unnecessary Nix evaluations. - patches = - lib.filesystem.listFilesRecursive ./patches - ++ lib.optionals stdenv.hostPlatform.isMusl (lib.filesystem.listFilesRecursive ./musl-patches); + patches = lib.filesystem.listFilesRecursive ./patches; nativeBuildInputs = [ autoreconfHook pkg-config - ]; + ] + ++ lib.optionals (!inBootstrap) [ texinfo ]; + buildInputs = lib.optionals guileEnabled [ guile ] # gettext gets pulled in via autoreconfHook because strictDeps is not set, @@ -60,7 +61,18 @@ stdenv.mkDerivation (finalAttrs: { "out" "man" "info" - ]; + ] + ++ lib.optionals (!inBootstrap) [ "doc" ]; + + postBuild = lib.optionalString (!inBootstrap) '' + makeinfo --html --no-split doc/make.texi + ''; + + postInstall = lib.optionalString (!inBootstrap) '' + mkdir -p $doc/share/doc/$pname-$version + cp ./make.html $doc/share/doc/$pname-$version/index.html + ''; + separateDebugInfo = true; passthru.tests = { diff --git a/pkgs/development/tools/build-managers/gnumake/patches/0001-No-impure-bin-sh.patch b/pkgs/development/tools/build-managers/gnumake/patches/0001-No-impure-bin-sh.patch index 778cb4c20c9d6..cd30fd38be02a 100644 --- a/pkgs/development/tools/build-managers/gnumake/patches/0001-No-impure-bin-sh.patch +++ b/pkgs/development/tools/build-managers/gnumake/patches/0001-No-impure-bin-sh.patch @@ -1,7 +1,7 @@ -From b69e3740e68afaec97b9957d40b9c135db87eaab Mon Sep 17 00:00:00 2001 +From 532276a537fbfc08c946c9f808f1b0bb54e16523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sat, 24 Apr 2021 10:11:40 +0200 -Subject: [PATCH 1/3] No impure bin sh +Subject: [PATCH 1/5] No impure bin sh default_shell is used to populuate default shell used to execute jobs. Unless SHELL is set to a different value this would be /bin/sh. @@ -13,12 +13,14 @@ hard-coded has some advantages: shells there (bash vs. dash) - In the past I had issues with LD_PRELOAD with BEAR, where /bin/sh used a different glibc than BEAR which came from my development shell. + +Co-authored-by: Michael Daniels --- - src/job.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/job.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/job.c b/src/job.c -index ea885614..8a9bd8e0 100644 +index ea885614..1f26e0e8 100644 --- a/src/job.c +++ b/src/job.c @@ -76,7 +76,7 @@ char * vms_strsignal (int status); @@ -30,6 +32,17 @@ index ea885614..8a9bd8e0 100644 int batch_mode_shell = 0; #endif +@@ -2470,8 +2470,8 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) + nargv[1] = cmd; + memcpy (&nargv[2], &argv[1], sizeof (char *) * l); + +- while ((r = posix_spawn (&pid, nargv[0], &fa, &attr, nargv, +- child->environment)) == EINTR) ++ while ((r = posix_spawnp (&pid, nargv[0], &fa, &attr, nargv, ++ child->environment)) == EINTR) + ; + + free (nargv); -- -2.44.1 +2.51.2 diff --git a/pkgs/development/tools/build-managers/gnumake/patches/0002-Remove-impure-dirs.patch b/pkgs/development/tools/build-managers/gnumake/patches/0002-Remove-impure-dirs.patch index 8ba6b743176f5..49f6e3543e7a8 100644 --- a/pkgs/development/tools/build-managers/gnumake/patches/0002-Remove-impure-dirs.patch +++ b/pkgs/development/tools/build-managers/gnumake/patches/0002-Remove-impure-dirs.patch @@ -1,7 +1,7 @@ -From 2db52008be2e2d504889f4f19318c2ba5a2a4797 Mon Sep 17 00:00:00 2001 +From 99dcf18f8c66c25e17e0b84c005b03000312eb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sat, 24 Apr 2021 10:20:16 +0200 -Subject: [PATCH 2/3] Remove impure dirs +Subject: [PATCH 2/5] Remove impure dirs Purity: don't look for library dependencies (of the form `-lfoo') in /lib and /usr/lib. It's a stupid feature anyway. Likewise, when @@ -40,5 +40,5 @@ index fe67ab28..1b76560c 100644 #if defined(WINDOWS32) && !defined(LIBDIR) /* -- -2.44.1 +2.51.2 diff --git a/pkgs/development/tools/build-managers/gnumake/patches/0003-Do-not-search-for-a-C-compiler-and-set-MAKE_CXX.patch b/pkgs/development/tools/build-managers/gnumake/patches/0003-Do-not-search-for-a-C-compiler-and-set-MAKE_CXX.patch index cb0ce4defb45b..a48b6192d2b13 100644 --- a/pkgs/development/tools/build-managers/gnumake/patches/0003-Do-not-search-for-a-C-compiler-and-set-MAKE_CXX.patch +++ b/pkgs/development/tools/build-managers/gnumake/patches/0003-Do-not-search-for-a-C-compiler-and-set-MAKE_CXX.patch @@ -1,7 +1,7 @@ -From 3317b3a78666e6073c63f62a322176e3dc680461 Mon Sep 17 00:00:00 2001 +From e63470a43889be3f61c71ca31e57b4e3c3da5961 Mon Sep 17 00:00:00 2001 From: Ivan Trubach Date: Sat, 17 Aug 2024 22:35:03 +0300 -Subject: [PATCH 3/3] Do not search for a C++ compiler and set MAKE_CXX +Subject: [PATCH 3/5] Do not search for a C++ compiler and set MAKE_CXX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -79,5 +79,5 @@ index e396269b..78ba402f 100644 /* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist, and to the empty string if $@ does exist. */ -- -2.44.1 +2.51.2 diff --git a/pkgs/development/tools/build-managers/gnumake/musl-patches/0004-Fix-signatures-for-getenv-getopt.patch b/pkgs/development/tools/build-managers/gnumake/patches/0004-Fix-signatures-for-getenv-getopt.patch similarity index 100% rename from pkgs/development/tools/build-managers/gnumake/musl-patches/0004-Fix-signatures-for-getenv-getopt.patch rename to pkgs/development/tools/build-managers/gnumake/patches/0004-Fix-signatures-for-getenv-getopt.patch diff --git a/pkgs/development/tools/build-managers/gnumake/musl-patches/0005-Fix-signatures-for-getenv-getopt.patch b/pkgs/development/tools/build-managers/gnumake/patches/0005-Fix-signatures-for-getenv-getopt.patch similarity index 100% rename from pkgs/development/tools/build-managers/gnumake/musl-patches/0005-Fix-signatures-for-getenv-getopt.patch rename to pkgs/development/tools/build-managers/gnumake/patches/0005-Fix-signatures-for-getenv-getopt.patch diff --git a/pkgs/development/tools/haskell/iserv-proxy/default.nix b/pkgs/development/tools/haskell/iserv-proxy/default.nix new file mode 100644 index 0000000000000..63e312bfe3a51 --- /dev/null +++ b/pkgs/development/tools/haskell/iserv-proxy/default.nix @@ -0,0 +1,53 @@ +{ + mkDerivation, + fetchFromGitHub, + array, + base, + binary, + bytestring, + containers, + deepseq, + directory, + filepath, + ghci, + lib, + network, +}: +mkDerivation { + pname = "iserv-proxy"; + version = "9.3-unstable-2025-10-30"; + + # https://github.com/stable-haskell/iserv-proxy/pull/1 + src = fetchFromGitHub { + owner = "stable-haskell"; + repo = "iserv-proxy"; + rev = "bbee090fc67bb5cc6ad4508fa5def560b7672591"; + hash = "sha256-2aCGboNCF602huvmbyTcfhe6s+D4/n/NlOefd0c0SC0="; + }; + + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + array + base + binary + bytestring + containers + deepseq + directory + filepath + ghci + network + ]; + executableHaskellDepends = [ + base + binary + bytestring + directory + filepath + ghci + network + ]; + description = "iserv allows GHC to delegate Template Haskell computations"; + license = lib.licenses.bsd3; +} diff --git a/pkgs/development/tools/misc/luarocks/default.nix b/pkgs/development/tools/misc/luarocks/default.nix index d4d8981b31717..9ad31b6e78cdb 100644 --- a/pkgs/development/tools/misc/luarocks/default.nix +++ b/pkgs/development/tools/misc/luarocks/default.nix @@ -26,13 +26,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "luarocks_bootstrap"; - version = "3.12.2"; + version = "3.13.0"; src = fetchFromGitHub { owner = "luarocks"; repo = "luarocks"; tag = "v${finalAttrs.version}"; - hash = "sha256-hQysstYGUcZnnEXL+9ECS0sBViYggeDIMgo6LpUexBA="; + hash = "sha256-ETVoDpeFSsW7ld2z31Vog3RKsMquoxd7c8m9y7Fb1wk="; }; patches = [ diff --git a/pkgs/development/tools/parsing/flex/default.nix b/pkgs/development/tools/parsing/flex/default.nix index 6721ac53862ab..fb1b9a601ac36 100644 --- a/pkgs/development/tools/parsing/flex/default.nix +++ b/pkgs/development/tools/parsing/flex/default.nix @@ -22,22 +22,20 @@ stdenv.mkDerivation rec { sha256 = "15g9bv236nzi665p9ggqjlfn4dwck5835vf0bbw2cz7h5c1swyp8"; }; - # Also upstream, will be part of 2.6.5 - # https://github.com/westes/flex/commit/24fd0551333e patches = [ (fetchurl { + # Also upstream, will be part of 2.6.5 + # https://github.com/westes/flex/commit/24fd0551333e name = "glibc-2.26.patch"; url = "https://raw.githubusercontent.com/lede-project/source/0fb14a2b1ab2f82ce63f4437b062229d73d90516/tools/flex/patches/200-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch"; sha256 = "0mpp41zdg17gx30kcpj83jl8hssks3adbks0qzbhcz882b9c083r"; }) - ] - ++ (lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ (fetchurl { name = "gcc-15.patch"; url = "https://github.com/westes/flex/commit/bf254c75b1e0d2641ebbd7fc85fb183f36a62ea7.patch"; hash = "sha256-Bnv23M2K1Qf7pEaEz0ueSNzTCdjMTDiMm+H7JaxUISs="; }) - ]); + ]; postPatch = '' patchShebangs tests diff --git a/pkgs/development/web/nodejs/deprecate-http2-priority-signaling.patch b/pkgs/development/web/nodejs/deprecate-http2-priority-signaling.patch new file mode 100644 index 0000000000000..efcf74cdb26c1 --- /dev/null +++ b/pkgs/development/web/nodejs/deprecate-http2-priority-signaling.patch @@ -0,0 +1,113 @@ +Adapted from https://github.com/nodejs/node/pull/58293 for 22.x and 20.x lines. + +diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js +index cf7b06d987..369133dafb 100644 +--- a/lib/internal/http2/core.js ++++ b/lib/internal/http2/core.js +@@ -30,2 +30,4 @@ const { + promisify, ++ deprecate, ++ deprecateProperty, + SymbolAsyncDispose, +@@ -713,2 +715,7 @@ function onGoawayData(code, lastStreamID, buf) { + ++// TODO(aduh95): remove this in future semver-major ++const deprecateWeight = deprecateProperty('weight', ++ 'Priority signaling has been deprecated as of RFC 1993.', ++ 'DEP0194'); ++ + // When a ClientHttp2Session is first created, the socket may not yet be +@@ -741,2 +748,4 @@ function requestOnConnect(headers, options) { + ++ deprecateWeight(options); ++ + // `ret` will be either the reserved stream ID (if positive) +@@ -746,3 +755,3 @@ function requestOnConnect(headers, options) { + options.parent | 0, +- options.weight | 0, ++ NGHTTP2_DEFAULT_WEIGHT, + !!options.exclusive); +@@ -785,7 +794,3 @@ function requestOnConnect(headers, options) { + const setAndValidatePriorityOptions = hideStackFrames((options) => { +- if (options.weight === undefined) { +- options.weight = NGHTTP2_DEFAULT_WEIGHT; +- } else { +- validateNumber.withoutStackTrace(options.weight, 'options.weight'); +- } ++ deprecateWeight(options); + +@@ -845,21 +850,2 @@ function submitSettings(settings, callback) { + +-// Submits a PRIORITY frame to be sent to the remote peer +-// Note: If the silent option is true, the change will be made +-// locally with no PRIORITY frame sent. +-function submitPriority(options) { +- if (this.destroyed) +- return; +- this[kUpdateTimer](); +- +- // If the parent is the id, do nothing because a +- // stream cannot be made to depend on itself. +- if (options.parent === this[kID]) +- return; +- +- this[kHandle].priority(options.parent | 0, +- options.weight | 0, +- !!options.exclusive, +- !!options.silent); +-} +- + // Submit a GOAWAY frame to be sent to the remote peer. +@@ -2255,21 +2241,2 @@ class Http2Stream extends Duplex { + +- priority(options) { +- if (this.destroyed) +- throw new ERR_HTTP2_INVALID_STREAM(); +- +- assertIsObject(options, 'options'); +- options = { ...options }; +- setAndValidatePriorityOptions(options); +- +- const priorityFn = submitPriority.bind(this, options); +- +- // If the handle has not yet been assigned, queue up the priority +- // frame to be sent as soon as the ready event is emitted. +- if (this.pending) { +- this.once('ready', priorityFn); +- return; +- } +- priorityFn(); +- } +- + sendTrailers(headers) { +@@ -2431,2 +2398,8 @@ class Http2Stream extends Duplex { + ++// TODO(aduh95): remove this in future semver-major ++Http2Stream.prototype.priority = deprecate(function priority(options) { ++ if (this.destroyed) ++ throw new ERR_HTTP2_INVALID_STREAM(); ++}, 'http2Stream.priority is longer supported after priority signalling was deprecated in RFC 1993', 'DEP0194'); ++ + function callTimeout(self, session) { +diff --git a/lib/internal/util.js b/lib/internal/util.js +index 254791eb48..2f12f5a3f1 100644 +--- a/lib/internal/util.js ++++ b/lib/internal/util.js +@@ -135,2 +135,13 @@ function isPendingDeprecation() { + ++function deprecateProperty(key, msg, code, isPendingDeprecation) { ++ const emitDeprecationWarning = getDeprecationWarningEmitter( ++ code, msg, undefined, false, isPendingDeprecation, ++ ); ++ return (options) => { ++ if (key in options) { ++ emitDeprecationWarning(); ++ } ++ }; ++} ++ + // Internal deprecator for pending --pending-deprecation. This can be invoked +@@ -911,2 +922,3 @@ module.exports = { + deprecate, ++ deprecateProperty, + emitExperimentalWarning, diff --git a/pkgs/development/web/nodejs/nodejs.nix b/pkgs/development/web/nodejs/nodejs.nix index 03d8cbb0dac62..77a237432e716 100644 --- a/pkgs/development/web/nodejs/nodejs.nix +++ b/pkgs/development/web/nodejs/nodejs.nix @@ -2,11 +2,36 @@ lib, stdenv, fetchurl, - openssl, + fetchpatch2, + fetchFromGitHub, python, - zlib, + ada, + brotli, + c-ares, libuv, + llhttp, + nghttp2, + nghttp3, + ngtcp2, + openssl, + simdjson, + simdutf, + simdutf_6 ? ( + simdutf.overrideAttrs { + version = "6.5.0"; + + src = fetchFromGitHub { + owner = "simdutf"; + repo = "simdutf"; + rev = "v6.5.0"; + hash = "sha256-bZ4r62GMz2Dkd3fKTJhelitaA8jUBaDjG6jOysEg8Nk="; + }; + } + ), sqlite, + uvwasi, + zlib, + zstd, icu, bash, ninja, @@ -98,14 +123,47 @@ let null; # TODO: also handle MIPS flags (mips_arch, mips_fpu, mips_float_abi). - useSharedSQLite = lib.versionAtLeast version "22.5"; + useSharedAdaAndSimd = !stdenv.hostPlatform.isStatic && lib.versionAtLeast version "22.2"; + useSharedSQLite = !stdenv.hostPlatform.isStatic && lib.versionAtLeast version "22.5"; + useSharedZstd = !stdenv.hostPlatform.isStatic && lib.versionAtLeast version "22.15"; - sharedLibDeps = { - inherit openssl zlib libuv; - } - // (lib.optionalAttrs useSharedSQLite { - inherit sqlite; - }); + sharedLibDeps = + (lib.optionalAttrs (!stdenv.hostPlatform.isStatic) { + inherit + brotli + libuv + nghttp3 + ngtcp2 + openssl + uvwasi + zlib + ; + cares = c-ares; + http-parser = llhttp; + nghttp2 = nghttp2.overrideAttrs { + patches = [ + (fetchpatch2 { + url = "https://github.com/nghttp2/nghttp2/commit/7784fa979d0bcf801a35f1afbb25fb048d815cd7.patch?full_index=1"; + hash = "sha256-RG87Qifjpl7HTP9ac2JwHj2XAbDlFgOpAnpZX3ET6gU="; + excludes = [ "lib/includes/nghttp2/nghttp2.h" ]; + revert = true; + }) + ]; + }; + }) + // (lib.optionalAttrs useSharedAdaAndSimd { + inherit + ada + simdjson + ; + simdutf = if lib.versionAtLeast version "25" then simdutf else simdutf_6; + }) + // (lib.optionalAttrs useSharedSQLite { + inherit sqlite; + }) + // (lib.optionalAttrs useSharedZstd { + inherit zstd; + }); copyLibHeaders = map (name: "${lib.getDev sharedLibDeps.${name}}/include/*") ( builtins.attrNames sharedLibDeps @@ -182,13 +240,10 @@ let # wrappers over the corresponding JS scripts. There are some packages though # that use bash wrappers, e.g. polaris-web. buildInputs = [ - zlib - libuv - openssl - icu bash + icu ] - ++ lib.optionals useSharedSQLite [ sqlite ]; + ++ builtins.attrValues sharedLibDeps; nativeBuildInputs = [ installShellFiles @@ -388,6 +443,10 @@ let ++ lib.optionals (!lib.versionAtLeast version "22") [ "test-tls-multi-key" ] + ++ lib.optionals useSharedAdaAndSimd [ + # Different versions of Ada affect the WPT tests + "test-url" + ] ++ lib.optionals stdenv.hostPlatform.is32bit [ # utime (actually utimensat) fails with EINVAL on 2038 timestamp "test-fs-utimes-y2K38" diff --git a/pkgs/development/web/nodejs/v20.nix b/pkgs/development/web/nodejs/v20.nix index 1434b2a1171c2..c0bccf940de6f 100644 --- a/pkgs/development/web/nodejs/v20.nix +++ b/pkgs/development/web/nodejs/v20.nix @@ -1,4 +1,6 @@ { + lib, + stdenv, callPackage, fetchpatch2, openssl, @@ -54,5 +56,19 @@ buildNodejs { hash = "sha256-wF4+CytC1OB5egJGOfLm1USsYY12f9kADymVrxotezE="; }) ] + ++ lib.optionals (!stdenv.hostPlatform.isStatic) [ + # Fix builds with shared llhttp + (fetchpatch2 { + url = "https://github.com/nodejs/node/commit/ff3a028f8bf88da70dc79e1d7b7947a8d5a8548a.patch?full_index=1"; + hash = "sha256-LJcO3RXVPnpbeuD87fiJ260m3BQXNk3+vvZkBMFUz5w="; + }) + # update tests for nghttp2 1.65 + ./deprecate-http2-priority-signaling.patch + (fetchpatch2 { + url = "https://github.com/nodejs/node/commit/a63126409ad4334dd5d838c39806f38c020748b9.diff?full_index=1"; + hash = "sha256-lfq8PMNvrfJjlp0oE3rJkIsihln/Gcs1T/qgI3wW2kQ="; + includes = [ "test/*" ]; + }) + ] ++ gypPatches; } diff --git a/pkgs/development/web/nodejs/v22.nix b/pkgs/development/web/nodejs/v22.nix index cfc4f014fa1df..69e909ecad7a8 100644 --- a/pkgs/development/web/nodejs/v22.nix +++ b/pkgs/development/web/nodejs/v22.nix @@ -57,5 +57,19 @@ buildNodejs { ./use-correct-env-in-tests.patch ./bin-sh-node-run-v22.patch ./use-nix-codesign.patch + ] + ++ lib.optionals (!stdenv.hostPlatform.isStatic) [ + # Fix builds with shared llhttp + (fetchpatch2 { + url = "https://github.com/nodejs/node/commit/ff3a028f8bf88da70dc79e1d7b7947a8d5a8548a.patch?full_index=1"; + hash = "sha256-LJcO3RXVPnpbeuD87fiJ260m3BQXNk3+vvZkBMFUz5w="; + }) + # update tests for nghttp2 1.65 + ./deprecate-http2-priority-signaling.patch + (fetchpatch2 { + url = "https://github.com/nodejs/node/commit/a63126409ad4334dd5d838c39806f38c020748b9.diff?full_index=1"; + hash = "sha256-lfq8PMNvrfJjlp0oE3rJkIsihln/Gcs1T/qgI3wW2kQ="; + includes = [ "test/*" ]; + }) ]; } diff --git a/pkgs/development/web/nodejs/v24.nix b/pkgs/development/web/nodejs/v24.nix index 09ce2e3e28af5..8213ee1229ada 100644 --- a/pkgs/development/web/nodejs/v24.nix +++ b/pkgs/development/web/nodejs/v24.nix @@ -25,8 +25,8 @@ let in buildNodejs { inherit enableNpm; - version = "24.12.0"; - sha256 = "6d3e891a016b90f6c6a19ea5cbc9c90c57eef9198670ba93f04fa82af02574ae"; + version = "24.13.0"; + sha256 = "320fe909cbb347dcf516201e4964ef177b8138df9a7f810d0d54950481b3158b"; patches = ( if (stdenv.hostPlatform.emulatorAvailable buildPackages) then diff --git a/pkgs/os-specific/darwin/libcxx/default.nix b/pkgs/os-specific/darwin/libcxx/default.nix index f1a0e63833b5a..dd5b8694518ad 100644 --- a/pkgs/os-specific/darwin/libcxx/default.nix +++ b/pkgs/os-specific/darwin/libcxx/default.nix @@ -1,7 +1,7 @@ { # Use the text-based stubs and headers from the latest SDK (currently 15.x). This is safe because # using features that are not available on an older deployment target is a hard error. - apple-sdk_15, + apple-sdk_26, stdenvNoCC, }: @@ -9,8 +9,8 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "libcxx"; # Keep this in sync with the corresponding LLVM libc++ version # defined as `_LIBCPP_VERSION` in `usr/include/c++/v1/__config`. - version = "19.1.2+apple-sdk-${apple-sdk_15.version}"; - inherit (apple-sdk_15) src; + version = "20.1.0+apple-sdk-${apple-sdk_26.version}"; + inherit (apple-sdk_26) src; dontConfigure = true; dontBuild = true; diff --git a/pkgs/os-specific/linux/kernel-headers/default.nix b/pkgs/os-specific/linux/kernel-headers/default.nix index b03a97d348ad0..9c228e1f4f1e2 100644 --- a/pkgs/os-specific/linux/kernel-headers/default.nix +++ b/pkgs/os-specific/linux/kernel-headers/default.nix @@ -152,13 +152,13 @@ in linuxHeaders = let - version = "6.16.7"; + version = "6.18"; in makeLinuxHeaders { inherit version; src = fetchurl { url = "mirror://kernel/linux/kernel/v${lib.versions.major version}.x/linux-${version}.tar.xz"; - hash = "sha256-W+PaoflCexvbNMSJTZwa36w4z/Z0N2/gYRowZXKaGoE="; + hash = "sha256-kQakYF2p4x/xdlnZWHgrgV+VkaswjQOw7iGq1sfc7Us="; }; patches = [ ./no-relocs.patch # for building x86 kernel headers on non-ELF platforms diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix index 6c071d109a410..5e90af00b2e99 100644 --- a/pkgs/os-specific/linux/kernel/common-config.nix +++ b/pkgs/os-specific/linux/kernel/common-config.nix @@ -701,9 +701,9 @@ let NTFS3_LZX_XPRESS = whenAtLeast "5.15" yes; NTFS3_FS_POSIX_ACL = whenAtLeast "5.15" yes; - REISERFS_FS_XATTR = option yes; - REISERFS_FS_POSIX_ACL = option yes; - REISERFS_FS_SECURITY = option yes; + REISERFS_FS_XATTR = whenOlder "6.13" (option yes); + REISERFS_FS_POSIX_ACL = whenOlder "6.13" (option yes); + REISERFS_FS_SECURITY = whenOlder "6.13" (option yes); JFS_POSIX_ACL = option yes; JFS_SECURITY = option yes; diff --git a/pkgs/os-specific/linux/lvm2/2_03.nix b/pkgs/os-specific/linux/lvm2/2_03.nix index 2081ba8eacc26..8a840541a28bf 100644 --- a/pkgs/os-specific/linux/lvm2/2_03.nix +++ b/pkgs/os-specific/linux/lvm2/2_03.nix @@ -1,4 +1,4 @@ import ./common.nix { - version = "2.03.37"; - hash = "sha256-sCZWzDmi+GpwLEMtqw0DF+EhEfyp1iOhjxucP4e4ggA="; + version = "2.03.38"; + hash = "sha256-Mi1Ev0DeMY5ua1LFaZmq64axbIJnGHrC4BpE1NxSaWA="; } diff --git a/pkgs/os-specific/linux/systemd/0007-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch b/pkgs/os-specific/linux/systemd/0007-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch index 21589efdd8494..254a63c1a1072 100644 --- a/pkgs/os-specific/linux/systemd/0007-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch +++ b/pkgs/os-specific/linux/systemd/0007-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch @@ -70,7 +70,7 @@ index 55931a2546..2e00bd7539 100644 return r; /* Return EINVAL if not a symlink */ - const char *e = PATH_STARTSWITH_SET(t, "/usr/share/zoneinfo/", "../usr/share/zoneinfo/"); -+ const char *e = PATH_STARTSWITH_SET(t, "/etc/zoneinfo/", "../etc/zoneinfo/"); ++ const char *e = PATH_STARTSWITH_SET(t, "/etc/zoneinfo/", "../etc/zoneinfo/", "zoneinfo/"); if (!e) return -EINVAL; if (!timezone_is_valid(e, LOG_DEBUG)) @@ -112,7 +112,7 @@ index 480a9c55c6..02c9ae6608 100644 path, - "../usr/share/zoneinfo/", - "/usr/share/zoneinfo/"); -+ "../etc/zoneinfo/", ++ "../etc/zoneinfo/", "zoneinfo/", + "/etc/zoneinfo/"); } diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index 4831c9cffd939..f6510f5a783fc 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -207,13 +207,13 @@ let in stdenv.mkDerivation (finalAttrs: { inherit pname; - version = "258.2"; + version = "258.3"; src = fetchFromGitHub { owner = "systemd"; repo = "systemd"; rev = "v${finalAttrs.version}"; - hash = "sha256-1iWeuNefDOIEUSTzxzvt+jfcs6sSMPhxQfdwp0mqUjQ="; + hash = "sha256-wpg/0z7xrB8ysPaa/zNp1mz+yYRCGyXz0ODZcKapovM="; }; # On major changes, or when otherwise required, you *must* : @@ -957,7 +957,6 @@ stdenv.mkDerivation (finalAttrs: { systemd-initrd-luks-empty-passphrase systemd-initrd-luks-password systemd-initrd-luks-tpm2 - systemd-initrd-luks-unl0kr systemd-initrd-modprobe systemd-initrd-shutdown systemd-initrd-simple diff --git a/pkgs/servers/x11/xorg/builder.sh b/pkgs/servers/x11/xorg/builder.sh deleted file mode 100644 index 99a753301d7ef..0000000000000 --- a/pkgs/servers/x11/xorg/builder.sh +++ /dev/null @@ -1,39 +0,0 @@ -# This is the builder for all X.org components. - -# After installation, automatically add all "Requires" fields in the -# pkgconfig files (*.pc) to the propagated build inputs. -origPostInstall=$postInstall -postInstall() { - if test -n "$origPostInstall"; then eval "$origPostInstall"; fi - - local r p requires - set +o pipefail - requires=$(grep "Requires:" ${!outputDev}/lib/pkgconfig/*.pc | \ - sed "s/Requires://" | sed "s/,/ /g") - set -o pipefail - - echo "propagating requisites $requires" - - for r in $requires; do - for p in "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}"; do - if test -e $p/lib/pkgconfig/$r.pc; then - echo " found requisite $r in $p" - appendToVar propagatedBuildInputs "$p" - fi - done - done -} - - -prependToVar installFlags "appdefaultdir=$out/share/X11/app-defaults" - - -if test -n "$x11BuildHook"; then - source $x11BuildHook -fi - - -enableParallelBuilding=1 -enableParallelInstalling=1 - -genericBuild diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index c6c491c75a567..0c1225237ba72 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -1,9 +1,12 @@ -# THIS IS A GENERATED FILE. DO NOT EDIT! { lib, + config, + # keep-sorted start case=no numeric=no block=yes appres, + automake, bdftopcf, bitmap, + ed, editres, font-adobe-100dpi, font-adobe-75dpi, @@ -39,10 +42,10 @@ font-screen-cyrillic, font-sony-misc, font-sun-misc, - fonttosfnt, font-util, font-winitzki-cyrillic, font-xfree86-type1, + fonttosfnt, gccmakedep, iceauth, ico, @@ -121,41 +124,57 @@ xcmsdb, xcompmgr, xconsole, - xcursorgen, xcursor-themes, + xcursorgen, xdm, xdpyinfo, xdriinfo, xev, xeyes, + xf86-input-evdev, + xf86-input-joystick, + xf86-input-keyboard, + xf86-input-libinput, xf86-input-mouse, xf86-input-synaptics, xf86-input-vmmouse, xf86-input-void, + xf86-video-amdgpu, xf86-video-apm, xf86-video-ark, xf86-video-ast, xf86-video-ati, xf86-video-chips, xf86-video-cirrus, + xf86-video-dummy, + xf86-video-fbdev, xf86-video-geode, xf86-video-i128, xf86-video-i740, + xf86-video-intel, xf86-video-mga, xf86-video-neomagic, xf86-video-nouveau, + xf86-video-nv, + xf86-video-omap, + xf86-video-openchrome, xf86-video-qxl, xf86-video-r128, xf86-video-s3virge, + xf86-video-savage, + xf86-video-siliconmotion, xf86-video-sis, xf86-video-sisusb, xf86-video-suncg6, xf86-video-sunffb, xf86-video-sunleo, xf86-video-tdfx, + xf86-video-trident, xf86-video-v4l, xf86-video-vbox, xf86-video-vesa, + xf86-video-vmware, + xf86-video-voodoo, xfd, xfontsel, xfs, @@ -163,10 +182,14 @@ xgamma, xgc, xhost, + xinit, + xinput, + xkbcomp, xkbevd, xkbprint, xkbutils, xkeyboard-config, + xkeyboard-config_custom, xkill, xload, xlsatoms, @@ -178,9 +201,9 @@ xmore, xorg-cf-files, xorg-docs, - xorgproto, xorg-server, xorg-sgml-doctools, + xorgproto, xpr, xprop, xrandr, @@ -193,13 +216,15 @@ xtrans, xvfb, xvinfo, + xwd, xwininfo, xwud, +# keep-sorted end }: - -self: with self; { - +_: +{ inherit + # keep-sorted start case=no numeric=no block=yes appres bdftopcf bitmap @@ -251,6 +276,9 @@ self: with self; { xgamma xgc xhost + xinit + xinput + xkbcomp xkbevd xkbprint xkbutils @@ -276,9 +304,13 @@ self: with self; { xtrans xvfb xvinfo + xwd xwininfo xwud + # keep-sorted end ; + + # keep-sorted start case=no numeric=no block=yes encodings = font-encodings; fontadobe100dpi = font-adobe-100dpi; fontadobe75dpi = font-adobe-75dpi; @@ -331,8 +363,8 @@ self: with self; { libXdmcp = libxdmcp; libXext = libxext; libXfixes = libxfixes; - libXfont2 = libxfont_2; libXfont = libxfont_1; + libXfont2 = libxfont_2; libXft = libxft; libXi = libxi; libXinerama = libxinerama; @@ -351,947 +383,83 @@ self: with self; { libXxf86dga = libxxf86dga; libXxf86misc = libxxf86misc; libXxf86vm = libxxf86vm; + mkfontdir = mkfontscale; twm = tab-window-manager; utilmacros = util-macros; xcbproto = xcb-proto; + xcbutil = libxcb-util; xcbutilcursor = libxcb-cursor; xcbutilerrors = libxcb-errors; xcbutilimage = libxcb-image; xcbutilkeysyms = libxcb-keysyms; - xcbutil = libxcb-util; xcbutilrenderutil = libxcb-render-util; xcbutilwm = libxcb-wm; xcursorthemes = xcursor-themes; + xf86inputevdev = xf86-input-evdev; + xf86inputjoystick = xf86-input-joystick; + xf86inputkeyboard = xf86-input-keyboard; + xf86inputlibinput = xf86-input-libinput; xf86inputmouse = xf86-input-mouse; xf86inputsynaptics = xf86-input-synaptics; xf86inputvmmouse = xf86-input-vmmouse; xf86inputvoid = xf86-input-void; + xf86videoamdgpu = xf86-video-amdgpu; xf86videoapm = xf86-video-apm; xf86videoark = xf86-video-ark; xf86videoast = xf86-video-ast; xf86videoati = xf86-video-ati; xf86videochips = xf86-video-chips; xf86videocirrus = xf86-video-cirrus; + xf86videodummy = xf86-video-dummy; + xf86videofbdev = xf86-video-fbdev; xf86videogeode = xf86-video-geode; xf86videoi128 = xf86-video-i128; xf86videoi740 = xf86-video-i740; + xf86videointel = xf86-video-intel; xf86videomga = xf86-video-mga; xf86videoneomagic = xf86-video-neomagic; xf86videonouveau = xf86-video-nouveau; + xf86videonv = xf86-video-nv; + xf86videoomap = xf86-video-omap; + xf86videoopenchrome = xf86-video-openchrome; xf86videoqxl = xf86-video-qxl; xf86videor128 = xf86-video-r128; xf86videos3virge = xf86-video-s3virge; + xf86videosavage = xf86-video-savage; + xf86videosiliconmotion = xf86-video-siliconmotion; xf86videosis = xf86-video-sis; xf86videosisusb = xf86-video-sisusb; xf86videosuncg6 = xf86-video-suncg6; xf86videosunffb = xf86-video-sunffb; xf86videosunleo = xf86-video-sunleo; xf86videotdfx = xf86-video-tdfx; + xf86videotrident = xf86-video-trident; xf86videov4l = xf86-video-v4l; xf86videovboxvideo = xf86-video-vbox; xf86videovesa = xf86-video-vesa; + xf86videovmware = xf86-video-vmware; + xf86videovoodoo = xf86-video-voodoo; xkeyboardconfig = xkeyboard-config; + xkeyboardconfig_custom = xkeyboard-config_custom; xorgcffiles = xorg-cf-files; xorgdocs = xorg-docs; xorgserver = xorg-server; xorgsgmldoctools = xorg-sgml-doctools; + # keep-sorted end +} - # THIS IS A GENERATED FILE. DO NOT EDIT! - libXTrap = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libX11, - libXext, - libXt, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "libXTrap"; - version = "1.0.1"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/lib/libXTrap-1.0.1.tar.bz2"; - sha256 = "0bi5wxj6avim61yidh9fd3j4n8czxias5m8vss9vhxjnk1aksdwg"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libX11 - libXext - libXt - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ "xtrap" ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86inputevdev = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libevdev, - udev, - mtdev, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-input-evdev"; - version = "2.11.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-input-evdev-2.11.0.tar.xz"; - sha256 = "058k0xdf4hkn8lz5gx4c08mgbzvv58haz7a32axndhscjgg2403k"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libevdev - udev - mtdev - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ "xorg-evdev" ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86inputjoystick = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-input-joystick"; - version = "1.6.4"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-input-joystick-1.6.4.tar.xz"; - sha256 = "1lnc6cvrg81chb2hj3jphgx7crr4ab8wn60mn8f9nsdwza2w8plh"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ "xorg-joystick" ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86inputkeyboard = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-input-keyboard"; - version = "2.1.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-input-keyboard-2.1.0.tar.xz"; - sha256 = "0mvwxrnkq0lzhjr894p420zxffdn34nc2scinmp7qd1hikr51kkp"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86inputlibinput = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libinput, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-input-libinput"; - version = "1.5.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-input-libinput-1.5.0.tar.xz"; - sha256 = "1rl06l0gdqmc4v08mya93m74ana76b7s3fzkmq8ylm3535gw6915"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libinput - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ "xorg-libinput" ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videoamdgpu = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libgbm, - libGL, - libdrm, - udev, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-amdgpu"; - version = "23.0.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-amdgpu-23.0.0.tar.xz"; - sha256 = "0qf0kjh6pww5abxmqa4c9sfa2qq1hq4p8qcgqpfd1kpkcvmg012g"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libgbm - libGL - libdrm - udev - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videodummy = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-dummy"; - version = "0.4.1"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-dummy-0.4.1.tar.xz"; - sha256 = "1byzsdcnlnzvkcqrzaajzc3nzm7y7ydrk9bjr4x9lx8gznkj069m"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videofbdev = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libpciaccess, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-fbdev"; - version = "0.5.1"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-fbdev-0.5.1.tar.xz"; - sha256 = "11zk8whari4m99ad3w30xwcjkgya4xbcpmg8710q14phkbxw0aww"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libpciaccess - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videointel = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - cairo, - xorgproto, - libdrm, - libpng, - udev, - libpciaccess, - libX11, - xcbutil, - libxcb, - libXcursor, - libXdamage, - libXext, - libXfixes, - xorgserver, - libXrandr, - libXrender, - libxshmfence, - libXtst, - libXvMC, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-intel"; - version = "2.99.917"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-intel-2.99.917.tar.bz2"; - sha256 = "1jb7jspmzidfixbc0gghyjmnmpqv85i7pi13l4h2hn2ml3p83dq0"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - cairo - xorgproto - libdrm - libpng - udev - libpciaccess - libX11 - xcbutil - libxcb - libXcursor - libXdamage - libXext - libXfixes - xorgserver - libXrandr - libXrender - libxshmfence - libXtst - libXvMC - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videonv = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libpciaccess, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-nv"; - version = "2.1.23"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-nv-2.1.23.tar.xz"; - sha256 = "1jlap6xjn4pfwg9ab8fxm5mwf4dqfywp70bgc0071m7k66jbv3f6"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libpciaccess - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videoomap = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libdrm, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-omap"; - version = "0.4.5"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-omap-0.4.5.tar.bz2"; - sha256 = "0nmbrx6913dc724y8wj2p6vqfbj5zdjfmsl037v627jj0whx9rwk"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libdrm - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videoopenchrome = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libdrm, - udev, - libpciaccess, - libX11, - libXext, - xorgserver, - libXvMC, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-openchrome"; - version = "0.6.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-openchrome-0.6.0.tar.bz2"; - sha256 = "0x9gq3hw6k661k82ikd1y2kkk4dmgv310xr5q59dwn4k6z37aafs"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libdrm - udev - libpciaccess - libX11 - libXext - xorgserver - libXvMC - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videosavage = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libdrm, - libpciaccess, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-savage"; - version = "2.4.1"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-savage-2.4.1.tar.xz"; - sha256 = "1bqhgldb6yahpgav7g7cyc4kl5pm3mgkq8w2qncj36311hb92hb7"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libdrm - libpciaccess - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videosiliconmotion = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libpciaccess, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-siliconmotion"; - version = "1.7.10"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-siliconmotion-1.7.10.tar.xz"; - sha256 = "1h4g2mqxshaxii416ldw0aqy6cxnsbnzayfin51xm2526dw9q18n"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libpciaccess - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videotrident = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libpciaccess, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-trident"; - version = "1.4.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-trident-1.4.0.tar.xz"; - sha256 = "16qqn1brz50mwcy42zi1wsw9af56qadsaaiwm9hn1p6plyf22xkz"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libpciaccess - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videovmware = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libdrm, - udev, - libpciaccess, - libX11, - libXext, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-vmware"; - version = "13.4.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-vmware-13.4.0.tar.xz"; - sha256 = "06mq7spifsrpbwq9b8kn2cn61xq6mpkq6lvh4qi6xk2yxpjixlxf"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libdrm - udev - libpciaccess - libX11 - libXext - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xf86videovoodoo = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libpciaccess, - xorgserver, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xf86-video-voodoo"; - version = "1.2.6"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/driver/xf86-video-voodoo-1.2.6.tar.xz"; - sha256 = "00pn5826aazsdipf7ny03s1lypzid31fmswl8y2hrgf07bq76ab2"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libpciaccess - xorgserver - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xinit = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - libX11, - xorgproto, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xinit"; - version = "1.4.4"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/app/xinit-1.4.4.tar.xz"; - sha256 = "1ygymifhg500sx1ybk8x4d1zn4g4ywvlnyvqwcf9hzsc2rx7r920"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - libX11 - xorgproto - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xinput = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - xorgproto, - libX11, - libXext, - libXi, - libXinerama, - libXrandr, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xinput"; - version = "1.6.4"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/app/xinput-1.6.4.tar.xz"; - sha256 = "1j2pf28c54apr56v1fmvprp657n6x4sdrv8f24rx3138cl6x015d"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - xorgproto - libX11 - libXext - libXi - libXinerama - libXrandr - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xkbcomp = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - libX11, - libxkbfile, - xorgproto, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xkbcomp"; - version = "1.5.0"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/app/xkbcomp-1.5.0.tar.xz"; - sha256 = "0q3092w42w9wyfr5zf3ymkmzlqr24z6kz6ypkinxnxh7c0k1zhra"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - libX11 - libxkbfile - xorgproto - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ "xkbcomp" ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xtrap = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - libX11, - libXt, - libXTrap, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xtrap"; - version = "1.0.3"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/app/xtrap-1.0.3.tar.bz2"; - sha256 = "0sqm4j1zflk1s94iq4waa70hna1xcys88v9a70w0vdw66czhvj2j"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - libX11 - libXt - libXTrap - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - - # THIS IS A GENERATED FILE. DO NOT EDIT! - xwd = callPackage ( - { - stdenv, - pkg-config, - fetchurl, - libxkbfile, - libX11, - xorgproto, - testers, - }: - stdenv.mkDerivation (finalAttrs: { - pname = "xwd"; - version = "1.0.9"; - builder = ./builder.sh; - src = fetchurl { - url = "mirror://xorg/individual/app/xwd-1.0.9.tar.xz"; - sha256 = "0gxx3y9zlh13jgwkayxljm6i58ng8jc1xzqv2g8s7d3yjj21n4nw"; - }; - hardeningDisable = [ - "bindnow" - "relro" - ]; - strictDeps = true; - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - libxkbfile - libX11 - xorgproto - ]; - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - meta = { - pkgConfigModules = [ ]; - platforms = lib.platforms.unix; - }; - }) - ) { }; - +# deprecate some packages +// lib.optionalAttrs config.allowAliases { + # keep-sorted start case=no numeric=no block=yes + fontbitstreamspeedo = throw "Bitstream Speedo is an obsolete font format that hasn't been supported by Xorg since 2005"; # added 2025-09-24 + libXtrap = throw "XTrap was a proposed X11 extension that hasn't been in Xorg since X11R6 in 1994, it is deprecated and archived upstream."; # added 2025-12-13 + xf86videoglide = throw "The Xorg Glide video driver has been archived upstream due to being obsolete"; # added 2025-12-13 + xf86videoglint = throw '' + The Xorg GLINT/Permedia video driver has been broken since xorg 21. + see https://gitlab.freedesktop.org/xorg/driver/xf86-video-glint/-/issues/1''; # added 2025-12-13 + xf86videonewport = throw "The Xorg Newport video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 + xf86videotga = throw "The Xorg TGA (aka DEC 21030) video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 + xf86videowsfb = throw "The Xorg BSD wsdisplay framebuffer video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 + xtrap = throw "XTrap was a proposed X11 extension that hasn't been in Xorg since X11R6 in 1994, it is deprecated and archived upstream."; # added 2025-12-13 + # keep-sorted end } diff --git a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl deleted file mode 100755 index 5c8d473f2bc09..0000000000000 --- a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl +++ /dev/null @@ -1,822 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell --pure --keep NIX_PATH -i perl -p cacert nix perl - -# Usage: manually update tarballs.list then run: ./generate-expr-from-tarballs.pl tarballs.list - -use strict; -use warnings; - -use File::Basename; -use File::Spec::Functions; -use File::Temp; - - -my %pkgURLs; -my %pkgHashes; -my %pkgNames; -my %pkgVersions; -my %pkgRequires; -my %pkgNativeRequires; - -my %pcProvides; -my %pcMap; - -my %extraAttrs; - - -my @missingPCs = ("fontconfig", "libdrm", "libXaw", "zlib", "perl", "python3", "mkfontscale", "bdftopcf", "libxslt", "openssl", "gperf", "m4", "libinput", "libevdev", "mtdev", "xorgproto", "cairo", "gettext", "meson", "ninja", "wrapWithXFileSearchPathHook" ); -$pcMap{$_} = $_ foreach @missingPCs; -$pcMap{"freetype2"} = "freetype"; -$pcMap{"libpng12"} = "libpng"; -$pcMap{"libpng"} = "libpng"; -$pcMap{"dbus-1"} = "dbus"; -$pcMap{"uuid"} = "libuuid"; -$pcMap{"libudev"} = "udev"; -$pcMap{"gl"} = "libGL"; -$pcMap{"GL"} = "libGL"; -$pcMap{"gbm"} = "libgbm"; -$pcMap{"hwdata"} = "hwdata"; -$pcMap{"dmx"} = "libdmx"; -$pcMap{"fontenc"} = "libfontenc"; -$pcMap{"fontutil"} = "fontutil"; -$pcMap{"ice"} = "libICE"; -$pcMap{"libfs"} = "libFS"; -$pcMap{"pciaccess"} = "libpciaccess"; -$pcMap{"pthread-stubs"} = "libpthreadstubs"; -$pcMap{"sm"} = "libSM"; -$pcMap{"x11"} = "libX11"; -$pcMap{"x11-xcb"} = "libX11"; -$pcMap{"xau"} = "libXau"; -$pcMap{"xaw6"} = "libXaw"; -$pcMap{"xaw7"} = "libXaw"; -$pcMap{"xbitmaps"} = "xbitmaps"; -$pcMap{"xcb-atom"} = "xcbutil"; -$pcMap{"xcb-aux"} = "xcbutil"; -$pcMap{"xcb-errors"} = "xcbutilerrors"; -$pcMap{"xcb-event"} = "xcbutil"; -$pcMap{"xcb-ewmh"} = "xcbutilwm"; -$pcMap{"xcb-icccm"} = "xcbutilwm"; -$pcMap{"xcb-image"} = "xcbutilimage"; -$pcMap{"xcb-keysyms"} = "xcbutilkeysyms"; -$pcMap{"xcb-cursor"} = "xcbutilcursor"; -$pcMap{"xcb-proto"} = "xcbproto"; -$pcMap{"xcb-renderutil"} = "xcbutilrenderutil"; -$pcMap{"xcb-util"} = "xcbutil"; -$pcMap{"xcomposite"} = "libXcomposite"; -$pcMap{"xcursor"} = "libXcursor"; -$pcMap{"xdamage"} = "libXdamage"; -$pcMap{"xdmcp"} = "libXdmcp"; -$pcMap{"xext"} = "libXext"; -$pcMap{"xfixes"} = "libXfixes"; -$pcMap{"xfont"} = "libXfont"; -$pcMap{"xfont2"} = "libXfont2"; -$pcMap{"xft"} = "libXft"; -$pcMap{"xi"} = "libXi"; -$pcMap{"xinerama"} = "libXinerama"; -$pcMap{"xkbfile"} = "libxkbfile"; -$pcMap{"xmu"} = "libXmu"; -$pcMap{"xmuu"} = "libXmu"; -$pcMap{"xorg-server"} = "xorgserver"; -$pcMap{"xp"} = "libXp"; -$pcMap{"xpm"} = "libXpm"; -$pcMap{"xpresent"} = "libXpresent"; -$pcMap{"xrandr"} = "libXrandr"; -$pcMap{"xrender"} = "libXrender"; -$pcMap{"xres"} = "libXres"; -$pcMap{"xscrnsaver"} = "libXScrnSaver"; -$pcMap{"xshmfence"} = "libxshmfence"; -$pcMap{"xt"} = "libXt"; -$pcMap{"xtrans"} = "xtrans"; -$pcMap{"xtst"} = "libXtst"; -$pcMap{"xv"} = "libXv"; -$pcMap{"xvmc"} = "libXvMC"; -$pcMap{"xvmc-wrapper"} = "libXvMC"; -$pcMap{"xxf86dga"} = "libXxf86dga"; -$pcMap{"xxf86misc"} = "libXxf86misc"; -$pcMap{"xxf86vm"} = "libXxf86vm"; -$pcMap{"\$PIXMAN"} = "pixman"; -$pcMap{"\$RENDERPROTO"} = "xorgproto"; -$pcMap{"\$DRI3PROTO"} = "xorgproto"; -$pcMap{"\$DRI2PROTO"} = "xorgproto"; -$pcMap{"\${XKBMODULE}"} = "libxkbfile"; -foreach my $mod ("xcb", "xcb-composite", "xcb-damage", "xcb-dpms", "xcb-dri2", "xcb-dri3", - "xcb-glx", "xcb-present", "xcb-randr", "xcb-record", "xcb-render", "xcb-res", "xcb-screensaver", - "xcb-shape", "xcb-shm", "xcb-sync", "xcb-xf86dri", "xcb-xfixes", "xcb-xinerama", "xcb-xinput", - "xcb-xkb", "xcb-xtest", "xcb-xv", "xcb-xvmc") { - $pcMap{$mod} = "libxcb"; -} -foreach my $mod ("applewmproto", "bigreqsproto", "compositeproto", "damageproto", "dmxproto", - "dpmsproto", "dri2proto", "dri3proto", "evieproto", "fixesproto", "fontcacheproto", - "fontsproto", "glproto", "inputproto", "kbproto", "lg3dproto", "presentproto", - "printproto", "randrproto", "recordproto", "renderproto", "resourceproto", "scrnsaverproto", - "trapproto", "videoproto", "windowswmproto", "xcalibrateproto", "xcmiscproto", "xextproto", - "xf86bigfontproto", "xf86dgaproto", "xf86driproto", "xf86miscproto", "xf86rushproto", - "xf86vidmodeproto", "xineramaproto", "xproto", "xproxymngproto", "xwaylandproto") { - $pcMap{$mod} = "xorgproto"; -} - - -my $downloadCache = "./download-cache"; -mkdir $downloadCache, 0755; - - -while (<>) { - chomp; - my $tarball = "$_"; - print "\nDOING TARBALL $tarball\n"; - - my $pkg; - if ($tarball =~ s/:([a-zA-Z0-9_]+)$//) { - $pkg = $1; - } else { - $tarball =~ /\/((?:(?:[A-Za-z0-9]|(?:-[^0-9])|(?:-[0-9]*[a-z]))+))[^\/]*$/; - die unless defined $1; - $pkg = $1; - $pkg =~ s/(-|[a-f0-9]{40})//g; # Remove hyphen-minus and SHA-1 - #next unless $pkg eq "xcbutil"; - } - - $tarball =~ /\/([^\/]*)\.(tar\.(bz2|gz|xz)|tgz)$/; - my $pkgName = $1; - - print " $pkg $pkgName\n"; - - if (defined $pkgNames{$pkg}) { - print " SKIPPING\n"; - next; - } - - # Split by first occurrence of hyphen followed by only numbers, ends line, another hyphen follows, or SHA-1 - my ($name, $version) = split(/-(?=[.0-9]+(?:$|-)|[a-f0-9]{40})/, $pkgName, 2); - - $pkgURLs{$pkg} = $tarball; - $pkgNames{$pkg} = $name; - $pkgVersions{$pkg} = $version; - - my $cachePath = catdir($downloadCache, basename($tarball)); - my $hash; - my $path; - if (-e $cachePath) { - $path = readlink($cachePath); - $hash = `nix-hash --type sha256 --base32 --flat $cachePath`; - } - else { - ($hash, $path) = `PRINT_PATH=1 QUIET=1 nix-prefetch-url '$tarball'`; - `nix-store --realise --add-root $cachePath --indirect $path`; - } - chomp $hash; - chomp $path; - $pkgHashes{$pkg} = $hash; - - print "\nunpacking $path\n"; - my $tmpDir = File::Temp->newdir(); - system "cd '$tmpDir' && tar xf '$path'"; - die "cannot unpack `$path'" if $? != 0; - print "\n"; - - my $pkgDir = `echo $tmpDir/*`; - chomp $pkgDir; - - my $provides = `find $pkgDir -name "*.pc.in"`; - my @provides2 = split '\n', $provides; - my @requires = (); - my @nativeRequires = (); - - foreach my $pcFile (@provides2) { - my $pc = $pcFile; - $pc =~ s/.*\///; - $pc =~ s/.pc.in//; - push @{$pcProvides{$pkg}}, $pc; - print "PROVIDES $pc\n"; - die "collision with $pcMap{$pc}" if defined $pcMap{$pc}; - $pcMap{$pc} = $pkg; - - open FOO, "<$pcFile" or die; - while () { - if (/Requires:(.*)/) { - my @reqs = split ' ', $1; - foreach my $req (@reqs) { - next unless $req =~ /^[a-z]+$/; - print "REQUIRE (from $pc): $req\n"; - push @requires, $req; - } - } - } - close FOO; - - } - - my $file; - { - local $/; - open FOO, "cd '$tmpDir'/* && grep -v '^ *#' configure.ac |"; - $file = ; - close FOO; - } - - if ($file =~ /XAW_CHECK_XPRINT_SUPPORT/) { - push @requires, "libXaw"; - } - - if ($file =~ /zlib is required/ || $file =~ /AC_CHECK_LIB\(z\,/) { - push @requires, "zlib"; - } - - if ($file =~ /Perl is required/) { - push @requires, "perl"; - } - - if ($file =~ /AC_PATH_PROG\(BDFTOPCF/) { - push @nativeRequires, "bdftopcf"; - } - - if ($file =~ /AC_PATH_PROG\(MKFONTSCALE/ || $file =~ /XORG_FONT_REQUIRED_PROG\(MKFONTSCALE/) { - push @nativeRequires, "mkfontscale"; - } - - if ($file =~ /AC_PATH_PROG\(MKFONTDIR/) { - push @nativeRequires, "mkfontscale"; - } - - if ($file =~ /AM_PATH_PYTHON/) { - push @nativeRequires, "python3"; - } - - if ($file =~ /AC_PATH_PROG\(FCCACHE/) { - # Don't run fc-cache. - die if defined $extraAttrs{$pkg}; - push @{$extraAttrs{$pkg}}, "preInstall = \"installFlags=(FCCACHE=true)\";"; - } - - my $isFont; - - if ($file =~ /XORG_FONT_BDF_UTILS/) { - push @nativeRequires, "bdftopcf", "mkfontscale"; - $isFont = 1; - } - - if ($file =~ /XORG_FONT_SCALED_UTILS/) { - push @nativeRequires, "mkfontscale"; - $isFont = 1; - } - - if ($file =~ /XORG_FONT_UCS2ANY/) { - push @nativeRequires, "fontutil", "mkfontscale"; - $isFont = 1; - } - - if ($isFont) { - push @requires, "fontutil"; - push @{$extraAttrs{$pkg}}, "configureFlags = [ \"--with-fontrootdir=\$(out)/lib/X11/fonts\" ];"; - push @{$extraAttrs{$pkg}}, "postPatch = ''substituteInPlace configure --replace 'MAPFILES_PATH=`pkg-config' 'MAPFILES_PATH=`\$PKG_CONFIG' '';"; - } - - if (@@ = glob("$tmpDir/*/app-defaults/")) { - push @nativeRequires, "wrapWithXFileSearchPathHook"; - } - - sub process { - my $requires = shift; - my $s = shift; - $s =~ s/\[/\ /g; - $s =~ s/\]/\ /g; - $s =~ s/\,/\ /g; - foreach my $req (split / /, $s) { - next if $req eq ">="; - #next if $req =~ /^\$/; - next if $req =~ /^[0-9]/; - next if $req =~ /^\s*$/; - next if $req eq '$REQUIRED_MODULES'; - next if $req eq '$REQUIRED_LIBS'; - next if $req eq '$XDMCP_MODULES'; - next if $req eq '$XORG_MODULES'; - print "REQUIRE: $req\n"; - push @{$requires}, $req; - } - } - - #process \@requires, $1 while $file =~ /PKG_CHECK_MODULES\([^,]*,\s*[\[]?([^\)\[]*)/g; - process \@requires, $1 while $file =~ /PKG_CHECK_MODULES\([^,]*,([^\)\,]*)/g; - process \@requires, $1 while $file =~ /AC_SEARCH_LIBS\([^,]*,([^\)\,]*)/g; - process \@requires, $1 while $file =~ /MODULES=\"(.*)\"/g; - process \@requires, $1 while $file =~ /REQUIRED_LIBS=\"(.*)\"/g; - process \@requires, $1 while $file =~ /REQUIRED_MODULES=\"(.*)\"/g; - process \@requires, $1 while $file =~ /REQUIRES=\"(.*)\"/g; - process \@requires, $1 while $file =~ /X11_REQUIRES=\'(.*)\'/g; - process \@requires, $1 while $file =~ /XDMCP_MODULES=\"(.*)\"/g; - process \@requires, $1 while $file =~ /XORG_MODULES=\"(.*)\"/g; - process \@requires, $1 while $file =~ /NEEDED=\"(.*)\"/g; - process \@requires, $1 while $file =~ /ivo_requires=\"(.*)\"/g; - process \@requires, $1 while $file =~ /XORG_DRIVER_CHECK_EXT\([^,]*,([^\)]*)\)/g; - - push @nativeRequires, "gettext" if $file =~ /USE_GETTEXT/; - push @requires, "libxslt" if $pkg =~ /libxcb/; - push @nativeRequires, "meson", "ninja" if $pkg =~ /libxcvt/; - push @nativeRequires, "m4" if $pkg =~ /xcbutil/; - push @requires, "gperf", "xorgproto" if $pkg =~ /xcbutil/; - - print "REQUIRES $pkg => @requires\n"; - print "NATIVE_REQUIRES $pkg => @nativeRequires\n"; - $pkgRequires{$pkg} = \@requires; - $pkgNativeRequires{$pkg} = \@nativeRequires; - - print "done\n"; -} - - -print "\nWRITE OUT\n"; - -open OUT, ">default.nix"; - -print OUT ""; -print OUT < - - - a - - - ${name} - ${layout.description} - ${layout.description} - - - . - w - EOF - - # add layout description - ${ed}/bin/ed -v rules/base.xml < - - - a - - - ${name} - ${name} - ${layout.description} - - ${lib.concatMapStrings (lang: "${lang}\n") layout.languages} - - - - - . - w - EOF - ''; - in - xorg.xkeyboardconfig.overrideAttrs (old: { - nativeBuildInputs = old.nativeBuildInputs ++ [ automake ]; - postPatch = lib.concatStrings (lib.mapAttrsToList patchIn layouts); - }); - - xinit = - (super.xinit.override { - stdenv = if isDarwin then clangStdenv else stdenv; - }).overrideAttrs - (attrs: { - nativeBuildInputs = attrs.nativeBuildInputs ++ lib.optional isDarwin bootstrap_cmds; - depsBuildBuild = [ buildPackages.stdenv.cc ]; - configureFlags = [ - "--with-xserver=${xorg.xorgserver.out}/bin/X" - ] - ++ lib.optionals isDarwin [ - "--with-bundle-id-prefix=org.nixos.xquartz" - "--with-launchdaemons-dir=\${out}/LaunchDaemons" - "--with-launchagents-dir=\${out}/LaunchAgents" - ]; - postPatch = '' - # Avoid replacement of word-looking cpp's builtin macros in Nix's cross-compiled paths - substituteInPlace Makefile.in --replace "PROGCPPDEFS =" "PROGCPPDEFS = -Dlinux=linux -Dunix=unix" - ''; - propagatedBuildInputs = - attrs.propagatedBuildInputs or [ ] - ++ [ xorg.xauth ] - ++ lib.optionals isDarwin [ - xorg.libX11 - xorg.xorgproto - ]; - postFixup = '' - sed -i $out/bin/startx \ - -e '/^sysserverrc=/ s:=.*:=/etc/X11/xinit/xserverrc:' \ - -e '/^sysclientrc=/ s:=.*:=/etc/X11/xinit/xinitrc:' - ''; - meta = attrs.meta // { - mainProgram = "xinit"; - }; - }); - - xf86videointel = super.xf86videointel.overrideAttrs (attrs: { - # the update script only works with released tarballs :-/ - name = "xf86-video-intel-2024-05-06"; - src = fetchFromGitLab { - domain = "gitlab.freedesktop.org"; - group = "xorg"; - owner = "driver"; - repo = "xf86-video-intel"; - rev = "ce811e78882d9f31636351dfe65351f4ded52c74"; - sha256 = "sha256-PKCxFHMwxgbew0gkxNBKiezWuqlFG6bWLkmtUNyoF8Q="; - }; - buildInputs = attrs.buildInputs ++ [ - xorg.libXScrnSaver - xorg.libXv - xorg.pixman - ]; - nativeBuildInputs = attrs.nativeBuildInputs ++ [ - autoreconfHook - xorg.utilmacros - xorg.xorgserver - ]; - configureFlags = [ - "--with-default-dri=3" - "--enable-tools" - ]; - patches = [ ./use_crocus_and_iris.patch ]; - - meta = attrs.meta // { - platforms = [ - "i686-linux" - "x86_64-linux" - ]; - }; - }); - - xf86videoopenchrome = super.xf86videoopenchrome.overrideAttrs (attrs: { - buildInputs = attrs.buildInputs ++ [ xorg.libXv ]; - patches = [ - # Pull upstream fix for -fno-common toolchains. - (fetchpatch { - name = "fno-common.patch"; - url = "https://github.com/freedesktop/openchrome-xf86-video-openchrome/commit/edb46574d4686c59e80569ba236d537097dcdd0e.patch"; - sha256 = "0xqawg9zzwb7x5vaf3in60isbkl3zfjq0wcnfi45s3hiii943sxz"; - }) - ]; - }); - - xinput = addMainProgram super.xinput { }; - - xwd = addMainProgram super.xwd { }; -} - -# deprecate some packages -// lib.optionalAttrs config.allowAliases { - fontbitstreamspeedo = throw "Bitstream Speedo is an obsolete font format that hasn't been supported by Xorg since 2005"; # added 2025-09-24 - xf86videoglide = throw "The Xorg Glide video driver has been archived upstream due to being obsolete"; # added 2025-12-13 - xf86videoglint = throw '' - The Xorg GLINT/Permedia video driver has been broken since xorg 21. - see https://gitlab.freedesktop.org/xorg/driver/xf86-video-glint/-/issues/1 - ''; # added 2025-12-13 - xf86videonewport = throw "The Xorg Newport video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 - xf86videotga = throw "The Xorg TGA (aka DEC 21030) video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 - xf86videowsfb = throw "The Xorg BSD wsdisplay framebuffer video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 -} diff --git a/pkgs/servers/x11/xorg/tarballs.list b/pkgs/servers/x11/xorg/tarballs.list deleted file mode 100644 index 6ac329c0aa3dd..0000000000000 --- a/pkgs/servers/x11/xorg/tarballs.list +++ /dev/null @@ -1,22 +0,0 @@ -mirror://xorg/individual/app/xinit-1.4.4.tar.xz -mirror://xorg/individual/app/xinput-1.6.4.tar.xz -mirror://xorg/individual/app/xkbcomp-1.5.0.tar.xz -mirror://xorg/individual/app/xtrap-1.0.3.tar.bz2 -mirror://xorg/individual/app/xwd-1.0.9.tar.xz -mirror://xorg/individual/driver/xf86-input-evdev-2.11.0.tar.xz -mirror://xorg/individual/driver/xf86-input-joystick-1.6.4.tar.xz -mirror://xorg/individual/driver/xf86-input-keyboard-2.1.0.tar.xz -mirror://xorg/individual/driver/xf86-input-libinput-1.5.0.tar.xz -mirror://xorg/individual/driver/xf86-video-amdgpu-23.0.0.tar.xz -mirror://xorg/individual/driver/xf86-video-dummy-0.4.1.tar.xz -mirror://xorg/individual/driver/xf86-video-fbdev-0.5.1.tar.xz -mirror://xorg/individual/driver/xf86-video-intel-2.99.917.tar.bz2 -mirror://xorg/individual/driver/xf86-video-nv-2.1.23.tar.xz -mirror://xorg/individual/driver/xf86-video-omap-0.4.5.tar.bz2 -mirror://xorg/individual/driver/xf86-video-openchrome-0.6.0.tar.bz2 -mirror://xorg/individual/driver/xf86-video-savage-2.4.1.tar.xz -mirror://xorg/individual/driver/xf86-video-siliconmotion-1.7.10.tar.xz -mirror://xorg/individual/driver/xf86-video-trident-1.4.0.tar.xz -mirror://xorg/individual/driver/xf86-video-vmware-13.4.0.tar.xz -mirror://xorg/individual/driver/xf86-video-voodoo-1.2.6.tar.xz -mirror://xorg/individual/lib/libXTrap-1.0.1.tar.bz2 diff --git a/pkgs/servers/x11/xorg/update.py b/pkgs/servers/x11/xorg/update.py deleted file mode 100755 index 65a2fe190a17c..0000000000000 --- a/pkgs/servers/x11/xorg/update.py +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell --pure --keep NIX_PATH -i python3 -p nix git nixfmt "python3.withPackages (ps: [ ps. packaging ps.beautifulsoup4 ps.requests ])" - -# Usage: Run ./update.py from the directory containing tarballs.list. The script checks for the -# latest versions of all packages, updates the expressions if any update is found, and commits -# any changes. - -import subprocess - -import requests -from bs4 import BeautifulSoup -from packaging import version - -mirror = "mirror://xorg/" -allversions = {} - -print("Downloading latest version info...") - -# xorg packages -for component in [ - "individual/app", - "individual/data", - "individual/data/xkeyboard-config", - "individual/doc", - "individual/driver", - "individual/font", - "individual/lib", - "individual/proto", - "individual/util", - "individual/xcb", - "individual/xserver", -]: - url = "https://xorg.freedesktop.org/releases/{}/".format(component) - r = requests.get(url) - soup = BeautifulSoup(r.text, "html.parser") - for a in soup.table.find_all("a"): - href = a["href"] - if not href.endswith((".tar.bz2", ".tar.gz", ".tar.xz")): - continue - - pname, rem = href.rsplit("-", 1) - ver, _, ext = rem.rsplit(".", 2) - - if "rc" in ver: - continue - - entry = allversions.setdefault(f"{mirror}{component}/{pname}", ([], {})) - entry[0].append(version.parse(ver)) - entry[1][ver] = f"{mirror}{component}/{href}" - -print("Finding updated versions...") - -with open("./tarballs.list") as f: - lines_tarballs = f.readlines() - -updated_tarballs = [] -changes = {} -changes_text = [] -for line in lines_tarballs: - line = line.rstrip("\n") - - if line.startswith(mirror): - pname, rem = line.rsplit("-", 1) - if line.startswith(mirror): - ver, _, _ = rem.rsplit(".", 2) - else: - ver, _ = rem.rsplit(".", 1) - - if pname not in allversions: - print("# WARNING: no version found for {}".format(pname)) - continue - - highest = max(allversions[pname][0]) - if highest > version.parse(ver): - line = allversions[pname][1][str(highest)] - text = f"{pname.split('/')[-1]}: {ver} -> {str(highest)}" - print(f" Updating {text}") - changes[pname] = line - changes_text.append(text) - - updated_tarballs.append(line) - -if len(changes) == 0: - print("No updates found") - exit() - -print("Updating tarballs.list...") - -with open("./tarballs.list", "w") as f: - f.writelines(f'{tarball}\n' for tarball in updated_tarballs) - -print("Generating updated expr (slow)...") - -subprocess.run(["./generate-expr-from-tarballs.pl", "tarballs.list"], check=True) - -print("Formatting generated expr...") - -subprocess.run(["nixfmt", "default.nix"], check=True) - -print("Committing...") - -subprocess.run(["git", "add", "default.nix", "tarballs.list"], check=True) -subprocess.run(["git", "commit", "-mxorg.*: update\n\n%s" % "\n".join(changes_text)], check=True) diff --git a/pkgs/shells/bash/bash-5.3-patches.nix b/pkgs/shells/bash/bash-5.3-patches.nix index b285f9918ca6c..28055cc582aa7 100644 --- a/pkgs/shells/bash/bash-5.3-patches.nix +++ b/pkgs/shells/bash/bash-5.3-patches.nix @@ -4,4 +4,10 @@ patch: [ (patch "001" "0zr8wgg1gb67vxn7ws971n1znrdinczymc688ndnpy2a6qs88q0z") (patch "002" "009051z55plsy4jmmjdb3ys7li2jraynz99qg7n6a1qk025591g3") (patch "003" "1vb0gnrkmz49rcfpxjcxy0v0k5278wrlkljk9gc20nizvk3xjigj") + (patch "004" "1l27jz4xzrajp0ww0rd7ylir1knrp6043y8j10pz6aam0i2x54cm") + (patch "005" "17f91flpsdws5hgbwf15zs704568n9j9n9ikiv4knhxzvd9fz8fc") + (patch "006" "047zjp4hc9q0jrp3fa2a1pihwy1i5j153z9pms8zz3pdxzfrl499") + (patch "007" "16dj7vx971q4zbagb46nya7mc6530vr5h86nzmy3qid1zyznp5y0") + (patch "008" "1d1zclczgh6j8kjv9ibycn155n1z783188n399khg2gvrcixfz09") + (patch "009" "132gy991ayjmr2rynx077rhzr749101y047043zb432bibkhzqzf") ] diff --git a/pkgs/stdenv/darwin/stdenv-bootstrap-tools.nix b/pkgs/stdenv/darwin/stdenv-bootstrap-tools.nix index 46c463bf48841..2a83899d77ccf 100644 --- a/pkgs/stdenv/darwin/stdenv-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/stdenv-bootstrap-tools.nix @@ -128,7 +128,7 @@ stdenv.mkDerivation (finalAttrs: { # Copy coreutils, bash, etc. cp ${getBin coreutils_}/bin/* $out/bin - (cd $out/bin && rm vdir dir sha*sum pinky factor pathchk runcon shuf who whoami shred users) + (cd $out/bin && rm vdir dir sha*sum pinky factor pathchk shuf who whoami shred users && rm -f runcon) cp -d ${getBin bashNonInteractive}/bin/{ba,}sh $out/bin cp -d ${getBin diffutils}/bin/* $out/bin diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 7f20b3b5de931..1c5c82be25b7d 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -1455,7 +1455,16 @@ configurePhase() { fi if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then - prependToVar configureFlags "${prefixKey:---prefix=}$prefix" + # For __structuredAttrs: if prefixKey ends in a space, + # we need to add the prefixKey and the prefix as separate entries, + # and since we prepend, we do it in reverse order. + local -r prefixKeyOrDefault="${prefixKey:---prefix=}" + if [ "${prefixKeyOrDefault: -1}" = " " ]; then + prependToVar configureFlags "$prefix" + prependToVar configureFlags "${prefixKeyOrDefault::-1}" + else + prependToVar configureFlags "$prefixKeyOrDefault$prefix" + fi fi if [[ -f "$configureScript" ]]; then diff --git a/pkgs/stdenv/linux/stdenv-bootstrap-tools.nix b/pkgs/stdenv/linux/stdenv-bootstrap-tools.nix index e4f1ae7342053..eb052a915ba2a 100644 --- a/pkgs/stdenv/linux/stdenv-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/stdenv-bootstrap-tools.nix @@ -108,7 +108,7 @@ stdenv.mkDerivation (finalAttrs: { + '' # Copy coreutils, bash, etc. cp -d ${coreutilsMinimal.out}/bin/* $out/bin - (cd $out/bin && rm vdir dir sha*sum pinky factor pathchk runcon shuf who whoami shred users) + (cd $out/bin && rm vdir dir sha*sum pinky factor pathchk shuf who whoami shred users && rm -f runcon) cp ${bashNonInteractive.out}/bin/bash $out/bin cp ${findutils.out}/bin/find $out/bin diff --git a/pkgs/test/auto-patchelf-hook-preserve-origin/default.nix b/pkgs/test/auto-patchelf-hook-preserve-origin/default.nix new file mode 100644 index 0000000000000..7685f41e91c9a --- /dev/null +++ b/pkgs/test/auto-patchelf-hook-preserve-origin/default.nix @@ -0,0 +1,91 @@ +{ + lib, + stdenv, + tests, + autoPatchelfHook, + patchelf, +}: + +let + foo = tests.stdenv-inputs.foo; + bar = tests.stdenv-inputs.bar; + + # similar to lib-check in stdenv-inputs, but we ship + # binary and libraries in the same output, and only + # $ORIGIN/../lib in RUNPATH. + lib-check = stdenv.mkDerivation { + name = "lib-check-bundle"; + + buildInputs = [ + foo + bar + ]; + + nativeBuildInputs = [ + patchelf + ]; + + buildCommand = '' + $CC -lfoo -lbar -Wl,-rpath,'$ORIGIN/../lib' -o lib-check ${./lib-main.c} + + # Shrink RUNPATH to only keep the $ORIGIN/../lib one, + # dropping references to foo and bar store path. + patchelf --shrink-rpath --allowed-rpath-prefixes '$ORIGIN/../lib' lib-check + + + mkdir -p $out/lib $out/bin + cp ${lib.getDev foo}/lib/* ${lib.getDev bar}/lib/* $out/lib/ + cp lib-check $out/bin/ + + # Make sure the binary still works + $out/bin/lib-check + ''; + + disallowedReferences = [ + (lib.getDev foo) + (lib.getDev bar) + ]; + }; + # We treat `lib-check` as binaries and libraries coming from somewhere, + # and run `autoPatchelfHook` on them, but setting `--preserve-origin`. + # If we wouldn't,`autoPatchelfHook` would replace `RUNPATH` with a + # (self-)reference. + lib-check-autopatchelfed = stdenv.mkDerivation { + name = "lib-check-autopatchelfed"; + + nativeBuildInputs = [ + autoPatchelfHook + ]; + + autoPatchelfFlags = [ "--preserve-origin" ]; + + dontUnpack = true; + + # we don't set buildCommand because we want to ensure fixupPhase + # (containing autoPatchelfHook) is run. + installPhase = '' + mkdir -p $out + cp -R ${lib-check}/* $out + ''; + + # Should not refer to our source nor to itself. + disallowedReferences = [ + lib-check + "out" + ]; + }; +in +stdenv.mkDerivation { + name = "auto-patchelf-hook-preserve-origin"; + + buildCommand = '' + # Ensure the binary still works + ${lib-check-autopatchelfed}/bin/lib-check + touch $out + ''; + + meta.platforms = lib.platforms.all; + passthru = { + inherit lib-check lib-check-autopatchelfed; + }; +} diff --git a/pkgs/test/auto-patchelf-hook-preserve-origin/lib-main.c b/pkgs/test/auto-patchelf-hook-preserve-origin/lib-main.c new file mode 100644 index 0000000000000..c9488fe43e559 --- /dev/null +++ b/pkgs/test/auto-patchelf-hook-preserve-origin/lib-main.c @@ -0,0 +1,14 @@ +#include + +extern unsigned int foo(void); +extern unsigned int bar(void); + +int main(int argc, char **argv) +{ + if (foo() != 42) + return 1; + if (bar() != 42) + return 1; + fprintf(stderr, "ok\n"); + return 0; +} diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix index 283e96ec9690e..3823ce88bc80c 100644 --- a/pkgs/test/default.nix +++ b/pkgs/test/default.nix @@ -229,6 +229,8 @@ in auto-patchelf-hook = callPackage ./auto-patchelf-hook { }; + auto-patchelf-hook-preserve-origin = callPackage ./auto-patchelf-hook-preserve-origin { }; + # Accumulate all passthru.tests from arrayUtilities into a single attribute set. arrayUtilities = recurseIntoAttrs ( concatMapAttrs ( diff --git a/pkgs/test/stdenv-inputs/default.nix b/pkgs/test/stdenv-inputs/default.nix index 9ffe2e6479ce4..2615c905045de 100644 --- a/pkgs/test/stdenv-inputs/default.nix +++ b/pkgs/test/stdenv-inputs/default.nix @@ -70,4 +70,7 @@ stdenv.mkDerivation { ''; meta.platforms = lib.platforms.all; + passthru = { + inherit foo bar; + }; } diff --git a/pkgs/tools/compression/gzip/default.nix b/pkgs/tools/compression/gzip/default.nix index 9d250c69fe6d1..85b452f2260b8 100644 --- a/pkgs/tools/compression/gzip/default.nix +++ b/pkgs/tools/compression/gzip/default.nix @@ -5,6 +5,10 @@ makeShellWrapper, updateAutotoolsGnuConfigScriptsHook, runtimeShellPackage, + # Tests + gzip, + less, + perl, }: # Note: this package is used for bootstrapping fetchurl, and thus @@ -44,6 +48,12 @@ stdenv.mkDerivation (finalAttrs: { "ZLESS_PROG=zless" ]; + nativeCheckInputs = [ + less + perl + ]; + doCheck = false; + # Many gzip executables are shell scripts that depend upon other gzip # executables being in $PATH. Rather than try to re-write all the # internal cross-references, just add $out/bin to PATH at the top of @@ -66,6 +76,8 @@ stdenv.mkDerivation (finalAttrs: { --add-flags "\''${GZIP_NO_TIMESTAMPS:+-n}" ''; + passthru.tests.makecheck = gzip.overrideAttrs { doCheck = true; }; + meta = { homepage = "https://www.gnu.org/software/gzip/"; description = "GNU zip compression program"; diff --git a/pkgs/tools/compression/xz/default.nix b/pkgs/tools/compression/xz/default.nix index b89d3d79b4bf3..ed8fc7a0bab60 100644 --- a/pkgs/tools/compression/xz/default.nix +++ b/pkgs/tools/compression/xz/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "xz"; - version = "5.8.1"; + version = "5.8.2"; src = fetchurl { url = with finalAttrs; "https://github.com/tukaani-project/xz/releases/download/v${version}/xz-${version}.tar.xz"; - hash = "sha256-C1T3nfhZElBN4LFK7Hlx4/lkSRrxgS2DRHAFgHUTzZ4="; + hash = "sha256-iQlm7D9dXMFRB3h54VfAWTUApSL0E6xQuibSKpoUUhQ="; }; strictDeps = true; diff --git a/pkgs/tools/compression/zstd/default.nix b/pkgs/tools/compression/zstd/default.nix index 13da3b9f7de41..a014b652d313f 100644 --- a/pkgs/tools/compression/zstd/default.nix +++ b/pkgs/tools/compression/zstd/default.nix @@ -111,6 +111,13 @@ stdenv.mkDerivation (finalAttrs: { '' ); + # replace invalid symlinks when executable suffix is .exe + postInstall = lib.optionalString stdenv.hostPlatform.isCygwin '' + for link in unzstd zstdcat zstdmt; do + ln -sf zstd.exe $bin/bin/$link + done + ''; + outputs = [ "bin" "dev" diff --git a/pkgs/tools/misc/coreutils/cp-1.patch b/pkgs/tools/misc/coreutils/cp-1.patch deleted file mode 100644 index f40fdbbead791..0000000000000 --- a/pkgs/tools/misc/coreutils/cp-1.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 231cc20195294c9774ab68f523dd06059f4b0a5c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A1draig=20Brady?= -Date: Wed, 29 Oct 2025 23:41:55 +0000 -Subject: [PATCH] copy: avoid posix_fadvise bypassing copy offload behavior - -* src/copy-file-data.c (): pass 0 to posix_fadvise to indicate to EOF. -coreutils 9.8 used OFF_T_MAX instead, which triggered OpenZFS 2.2.2 -at least to synchronously (decompress and) populate the page cache. -Addresses https://github.com/coreutils/coreutils/issues/122 ---- - src/copy-file-data.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/copy-file-data.c b/src/copy-file-data.c -index 1eefd3071f58a54f725c96dfcd2fd352012398c5..9eb6f47244f0a62c2f4934c7663794fd4dcf21bf 100644 ---- a/src/copy-file-data.c -+++ b/src/copy-file-data.c -@@ -536,9 +536,12 @@ copy_file_data (int ifd, struct stat const *ist, off_t ipos, char const *iname, - && scantype != PLAIN_SCANTYPE))); - - /* Don't bother calling fadvise for small copies, as it is not -- likely to help performance and might even hurt it. */ -+ likely to help performance and might even hurt it. -+ Note it's important to use a 0 length to indicate the whole file -+ as OpenZFS 2.2.2 at least will otherwise synchronously -+ (decompress and) populate the cache when given a specific length. */ - if (IO_BUFSIZE < ibytes) -- fdadvise (ifd, ipos, ibytes <= OFF_T_MAX - ipos ? ibytes : 0, -+ fdadvise (ifd, ipos, ibytes < OFF_T_MAX - ipos ? ibytes : 0, - FADVISE_SEQUENTIAL); - - /* If not making a sparse file, try to use a more-efficient diff --git a/pkgs/tools/misc/coreutils/cp-2.patch b/pkgs/tools/misc/coreutils/cp-2.patch deleted file mode 100644 index 197269e787687..0000000000000 --- a/pkgs/tools/misc/coreutils/cp-2.patch +++ /dev/null @@ -1,68 +0,0 @@ -(NB: we drop the NEWS change to avoid conflicts) - -From 64b8fdb5b4767e0f833486507c3eae46ed1b40f8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A1draig=20Brady?= -Date: Thu, 30 Oct 2025 13:02:48 +0000 -Subject: [PATCH] copy: don't avoid copy-offload upon SEEK_HOLE indicating - non-sparse - -* src/copy-file-data.c (infer_scantype): Fall back to a plain copy -if SEEK_HOLE indicates non-sparse, as zero copy avoids copy offload. -This was seen with transparently compressed files on OpenZFS. -* tests/cp/sparse-perf.sh: Add a test case even though it might -only trigger on compressed file systems that don't support reflink. -* NEWS: Mention the bug fix. -Addresses https://github.com/coreutils/coreutils/issues/122 ---- - NEWS | 8 ++++++++ - src/copy-file-data.c | 11 +++++++++-- - tests/cp/sparse-perf.sh | 10 ++++++++++ - 3 files changed, 27 insertions(+), 2 deletions(-) - -diff --git a/src/copy-file-data.c b/src/copy-file-data.c -index 9eb6f47244f0a62c2f4934c7663794fd4dcf21bf..8fd25fee9201eda7bd0a8caf01f02821a3390448 100644 ---- a/src/copy-file-data.c -+++ b/src/copy-file-data.c -@@ -481,12 +481,19 @@ infer_scantype (int fd, struct stat const *sb, off_t pos, - if (scan_inference->hole_start < sb->st_size) - return LSEEK_SCANTYPE; - -- /* Though the file likely has holes, SEEK_DATA and SEEK_HOLE -+ /* Though the file may have holes, SEEK_DATA and SEEK_HOLE - didn't find any. This can happen with file systems like - circa-2025 squashfs that support SEEK_HOLE only trivially. -- Fall back on ZERO_SCANTYPE. */ -+ This can also happen due to transparent file compression, -+ which can also indicate fewer than the usual number of blocks. */ -+ - if (lseek (fd, pos, SEEK_SET) < 0) - return ERROR_SCANTYPE; -+ -+ /* we prefer to return PLAIN_SCANTYPE here so that copy offload -+ continues to be used. Falling through to ZERO_SCANTYPE would be -+ less performant in the compressed file case. */ -+ return PLAIN_SCANTYPE; - } - } - else if (pos < scan_inference->ext_start || errno == ENXIO) -diff --git a/tests/cp/sparse-perf.sh b/tests/cp/sparse-perf.sh -index 5a283c1fe65816a36342d9f583c1ed787947bf10..5ee984c527d7d8b6395d4193fcf81804b1135b8a 100755 ---- a/tests/cp/sparse-perf.sh -+++ b/tests/cp/sparse-perf.sh -@@ -35,6 +35,16 @@ cmp $other_partition_sparse k2 || fail=1 - grep ': avoided' cp.out && { cat cp.out; fail=1; } - - -+# Create a large-non-sparse-but-compressible file -+# Ensure we don't avoid copy offload which we saw with -+# transparent compression on OpenZFS at least -+# (as that triggers our sparse heuristic). -+mls='might-look-sparse' -+yes | head -n1M > "$mls" || framework_failure_ -+cp --debug "$mls" "$mls.cp" >cp.out || fail=1 -+cmp "$mls" "$mls.cp" || fail=1 -+grep ': avoided' cp.out && { cat cp.out; fail=1; } -+ - - # Create a large-but-sparse file on the current partition. - # We disable relinking below, thus verifying SEEK_HOLE support diff --git a/pkgs/tools/misc/coreutils/cp-3.patch b/pkgs/tools/misc/coreutils/cp-3.patch deleted file mode 100644 index 0c662e042e45a..0000000000000 --- a/pkgs/tools/misc/coreutils/cp-3.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 2c5754649e08a664f3d43f7bc1df08f498bc1554 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A1draig=20Brady?= -Date: Fri, 31 Oct 2025 15:37:55 +0000 -Subject: [PATCH] copy: be more defensive/restrictive with posix_fadvise - -* src/copy-file-data.c (copy_file_data): Only give the -POSIX_FADV_SEQUENTIAL hint when we _know_ we'll definitely -use a read/write loop to copy the data. Also only apply -the hint to the whole file, as we've seen OpenZFS at least -special case that. -(sparse_copy): Update stale comment. ---- - src/copy-file-data.c | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) - -diff --git a/src/copy-file-data.c b/src/copy-file-data.c -index 8fd25fee9201eda7bd0a8caf01f02821a3390448..c46b7edc5228f5f1e9c398d8ad7ff20b6fa60fb6 100644 ---- a/src/copy-file-data.c -+++ b/src/copy-file-data.c -@@ -105,8 +105,6 @@ is_CLONENOTSUP (int err) - If HOLE_SIZE, look for holes in the input; *HOLE_SIZE contains - the size of the current hole so far, and update *HOLE_SIZE - at end to be the size of the hole at the end of the copy. -- Set *TOTAL_N_READ to the number of bytes read; this counts -- the trailing hole, which has not yet been output. - Read and update *DEBUG as needed. - If successful, return the number of bytes copied, - otherwise diagnose the failure and return -1. */ -@@ -542,14 +540,17 @@ copy_file_data (int ifd, struct stat const *ist, off_t ipos, char const *iname, - || (x->sparse_mode == SPARSE_AUTO - && scantype != PLAIN_SCANTYPE))); - -- /* Don't bother calling fadvise for small copies, as it is not -- likely to help performance and might even hurt it. -- Note it's important to use a 0 length to indicate the whole file -+ /* If we _know_ we're going to read data sequentially into the process, -+ i.e., --reflink or --sparse are not in auto mode, -+ give that hint to the kernel so it can tune caching behavior. -+ Also we don't bother calling fadvise for small copies, -+ as it is not likely to help performance and might even hurt it. -+ Also we only apply this hint for the whole file (0 length) - as OpenZFS 2.2.2 at least will otherwise synchronously - (decompress and) populate the cache when given a specific length. */ -- if (IO_BUFSIZE < ibytes) -- fdadvise (ifd, ipos, ibytes < OFF_T_MAX - ipos ? ibytes : 0, -- FADVISE_SEQUENTIAL); -+ if (ipos == 0 && ibytes == COUNT_MAX -+ && (x->reflink_mode != REFLINK_AUTO || x->sparse_mode != SPARSE_AUTO)) -+ fdadvise (ifd, 0, 0, FADVISE_SEQUENTIAL); - - /* If not making a sparse file, try to use a more-efficient - buffer size. */ diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 647c24e9c6443..998050399cdab 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -2,14 +2,11 @@ lib, stdenv, fetchurl, - autoreconfHook, buildPackages, libiconv, perl, - texinfo, xz, binlore, - coreutils, gmpSupport ? true, gmp, aclSupport ? lib.meta.availableOn stdenv.hostPlatform acl, @@ -46,28 +43,15 @@ let ; isCross = (stdenv.hostPlatform != stdenv.buildPlatform); in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "coreutils" + (optionalString (!minimal) "-full"); - version = "9.8"; + version = "9.9"; src = fetchurl { - url = "mirror://gnu/coreutils/coreutils-${version}.tar.xz"; - hash = "sha256-5tT9LYUskUGhwqGKE9FGoM1+RRlfcik6TkwETsbMyhU="; + url = "mirror://gnu/coreutils/coreutils-${finalAttrs.version}.tar.xz"; + hash = "sha256-Gby2yoZxg8V9dxVerpRsXs7YgYMUO0XKUa19JsYoynU="; }; - patches = [ - # Extremely bad bug where `tail` prints fewer lines than it should. - # https://github.com/coreutils/coreutils/commit/914972e80dbf82aac9ffe3ff1f67f1028e1a788b - ./tail.patch - # Fix performance regression in cp. - # https://github.com/coreutils/coreutils/commit/231cc20195294c9774ab68f523dd06059f4b0a5c - # https://github.com/coreutils/coreutils/commit/64b8fdb5b4767e0f833486507c3eae46ed1b40f8 - # https://github.com/coreutils/coreutils/commit/2c5754649e08a664f3d43f7bc1df08f498bc1554 - ./cp-1.patch - ./cp-2.patch - ./cp-3.patch - ]; - postPatch = '' # The test tends to fail on btrfs, f2fs and maybe other unusual filesystems. sed '2i echo Skipping dd sparse test && exit 77' -i ./tests/dd/sparse.sh @@ -245,19 +229,27 @@ stdenv.mkDerivation rec { # # binlore only spots exec in runcon on some platforms (i.e., not # darwin; see comment on inverse case below) - binlore.out = binlore.synthesize coreutils '' - execer can bin/{chroot,env,install,nice,nohup,runcon,sort,split,stdbuf,timeout} - execer cannot bin/{[,b2sum,base32,base64,basename,basenc,cat,chcon,chgrp,chmod,chown,cksum,comm,cp,csplit,cut,date,dd,df,dir,dircolors,dirname,du,echo,expand,expr,factor,false,fmt,fold,groups,head,hostid,id,join,kill,link,ln,logname,ls,md5sum,mkdir,mkfifo,mknod,mktemp,mv,nl,nproc,numfmt,od,paste,pathchk,pinky,pr,printenv,printf,ptx,pwd,readlink,realpath,rm,rmdir,seq,sha1sum,sha224sum,sha256sum,sha384sum,sha512sum,shred,shuf,sleep,stat,stty,sum,sync,tac,tail,tee,test,touch,tr,true,truncate,tsort,tty,uname,unexpand,uniq,unlink,uptime,users,vdir,wc,who,whoami,yes} - ''; + binlore.out = binlore.synthesize finalAttrs.finalPackage ( + '' + execer can bin/{chroot,env,install,nice,nohup,sort,split,stdbuf,timeout} + execer cannot bin/{[,b2sum,base32,base64,basename,basenc,cat,chgrp,chmod,chown,cksum,comm,cp,csplit,cut,date,dd,df,dir,dircolors,dirname,du,echo,expand,expr,factor,false,fmt,fold,groups,head,hostid,id,join,kill,link,ln,logname,ls,md5sum,mkdir,mkfifo,mknod,mktemp,mv,nl,nproc,numfmt,od,paste,pathchk,pinky,pr,printenv,printf,ptx,pwd,readlink,realpath,rm,rmdir,seq,sha1sum,sha224sum,sha256sum,sha384sum,sha512sum,shred,shuf,sleep,stat,stty,sum,sync,tac,tail,tee,test,touch,tr,true,truncate,tsort,tty,uname,unexpand,uniq,unlink,uptime,users,vdir,wc,who,whoami,yes} + '' + + optionalString selinuxSupport '' + execer can bin/runcon + execer cannot bin/chcon + '' + ); } // optionalAttrs (singleBinary == false) { # binlore only spots exec in runcon on some platforms (i.e., not # darwin; I have a note that the behavior may need selinux?). # hard-set it so people working on macOS don't miss cases of # runcon until ofBorg fails. - binlore.out = binlore.synthesize coreutils '' - execer can bin/runcon - ''; + binlore.out = binlore.synthesize finalAttrs.finalPackage ( + optionalString selinuxSupport '' + execer can bin/runcon + '' + ); }; meta = { @@ -276,4 +268,4 @@ stdenv.mkDerivation rec { platforms = with lib.platforms; unix ++ windows; priority = 10; }; -} +}) diff --git a/pkgs/tools/misc/coreutils/tail.patch b/pkgs/tools/misc/coreutils/tail.patch deleted file mode 100644 index 40336daae1370..0000000000000 --- a/pkgs/tools/misc/coreutils/tail.patch +++ /dev/null @@ -1,50 +0,0 @@ -(NB: we omit the new test, in order to avoid rerunning autoconf.) - -From 914972e80dbf82aac9ffe3ff1f67f1028e1a788b Mon Sep 17 00:00:00 2001 -From: Hannes Braun -Date: Wed, 24 Sep 2025 21:20:49 +0200 -Subject: [PATCH] tail: fix tailing larger number of lines in regular files - -* src/tail.c (file_lines): Seek to the previous block instead of the -beginning (or a little before) of the block that was just scanned. -Otherwise, the same block is read and scanned (at least partially) -again. This bug was introduced by commit v9.7-219-g976f8abc1. -* tests/tail/basic-seek.sh: Add a new test. -* tests/local.mk: Reference the new test. -* NEWS: mention the bug fix. ---- - NEWS | 4 ++++ - src/tail.c | 2 +- - tests/local.mk | 1 + - tests/tail/basic-seek.sh | 28 ++++++++++++++++++++++++++++ - 4 files changed, 34 insertions(+), 1 deletion(-) - create mode 100755 tests/tail/basic-seek.sh - -diff --git a/NEWS b/NEWS -index 7a1a73113e839f010aa6c734e6f07da68827b953..dc1d26879327761d35499815776477771758edd4 100644 ---- a/NEWS -+++ b/NEWS -@@ -7,6 +7,10 @@ GNU coreutils NEWS -*- outline -*- - `basenc --base58` would not operate correctly with input > 15561475 bytes. - [bug introduced with --base58 in coreutils-9.8] - -+ 'tail' outputs the correct number of lines again for non-small -n values. -+ Previously it may have output too few lines. -+ [bug introduced in coreutils-9.8] -+ - - * Noteworthy changes in release 9.8 (2025-09-22) [stable] - -diff --git a/src/tail.c b/src/tail.c -index b8bef1d91cdb6cde2b666b6c1575376e075eaeb8..c7779c77dfe4cf5a672a265b6e796c7153590170 100644 ---- a/src/tail.c -+++ b/src/tail.c -@@ -596,7 +596,7 @@ file_lines (char const *prettyname, int fd, struct stat const *sb, - goto free_buffer; - } - -- pos = xlseek (fd, -bufsize, SEEK_CUR, prettyname); -+ pos = xlseek (fd, -(bufsize + bytes_read), SEEK_CUR, prettyname); - bytes_read = read (fd, buffer, bufsize); - if (bytes_read < 0) - { diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix index 083c38138fdcd..a5e8459355ac9 100644 --- a/pkgs/tools/misc/findutils/default.nix +++ b/pkgs/tools/misc/findutils/default.nix @@ -24,7 +24,14 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace xargs/xargs.c --replace 'char default_cmd[] = "echo";' 'char default_cmd[] = "${coreutils}/bin/echo";' ''; - patches = [ ./no-install-statedir.patch ]; + patches = [ + ./no-install-statedir.patch + + # Fixes test-float failure on ppc64 with C23 + # https://lists.gnu.org/archive/html/bug-gnulib/2025-07/msg00021.html + # Multiple upstream commits squashed with adjustments, see header + ./gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch + ]; nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ]; buildInputs = [ coreutils ]; # bin/updatedb script needs to call sort diff --git a/pkgs/tools/misc/findutils/gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch b/pkgs/tools/misc/findutils/gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch new file mode 100644 index 0000000000000..5eb610a1c2c67 --- /dev/null +++ b/pkgs/tools/misc/findutils/gnulib-float-h-tests-port-to-C23-PowerPC-GCC.patch @@ -0,0 +1,225 @@ +Applied the following incremental gnulib commits: + +- 55a366a06fbd98bf13adc531579e3513cee97a32 +- 65ed9d3b24ad09fd61d326c83e7f1b05f6e9d65f +- ce8e9de0bf34bc63dffc67ab384334c509175f64 +- 6164b4cb0887b5331a4e64449107decd37d32735 + +With adjustments specific to the structure & differences in findutils: + +- gnulib code is split across gl/lib and gnulib-tests +- float.in.h seems old, lacking blocks for standards C11 and up. Relevant code for LDBL_NORM_MAX was added. +- A Makefile.in is used for the test flags instead of the fancy automake modules + in the upstream gnulib project, so we add -lm to the float test there. + Surrounding texts in this file are slightly different in every project. +--- +diff '--color=auto' -ruN a/gl/lib/float.c b/gl/lib/float.c +--- a/gl/lib/float.c 2024-01-01 21:35:38.000000000 +0100 ++++ b/gl/lib/float.c 2026-01-02 16:11:07.508755119 +0100 +@@ -22,7 +22,7 @@ + + #if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + const union gl_long_double_union gl_LDBL_MAX = +- { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; ++ { { DBL_MAX, DBL_MAX / 0x1p53 } }; + #elif defined __i386__ + const union gl_long_double_union gl_LDBL_MAX = + { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } }; +diff '--color=auto' -ruN a/gl/lib/float.in.h b/gl/lib/float.in.h +--- a/gl/lib/float.in.h 2024-01-01 21:35:38.000000000 +0100 ++++ b/gl/lib/float.in.h 2026-01-02 16:13:56.571684867 +0100 +@@ -111,44 +111,38 @@ + # define LDBL_MAX_10_EXP 4932 + #endif + +-/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are +- wrong. +- On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */ +-#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ ++/* On PowerPC with gcc 15 when using __ibm128 long double, the value of ++ LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX, and LDBL_NORM_MAX are wrong. */ ++#if ((defined _ARCH_PPC || defined _POWER) && LDBL_MANT_DIG == 106 \ ++ && defined __GNUC__) + # undef LDBL_MIN_EXP + # define LDBL_MIN_EXP DBL_MIN_EXP + # undef LDBL_MIN_10_EXP + # define LDBL_MIN_10_EXP DBL_MIN_10_EXP + # undef LDBL_MIN + # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ +-#endif +-#if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ + # undef LDBL_MAX +-/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }. +- It is not easy to define: +- #define LDBL_MAX 1.79769313486231580793728971405302307166e308L +- is too small, whereas +- #define LDBL_MAX 1.79769313486231580793728971405302307167e308L +- is too large. Apparently a bug in GCC decimal-to-binary conversion. +- Also, I can't get values larger than +- #define LDBL63 ((long double) (1ULL << 63)) +- #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) +- #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL) +- which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }. +- So, define it like this through a reference to an external variable ++/* LDBL_MAX is 2**1024 - 2**918, represented as: { 0x7FEFFFFF, 0xFFFFFFFF, ++ 0x7C9FFFFF, 0xFFFFFFFF }. ++ ++ Do not write it as a constant expression, as GCC would likely treat ++ that as infinity due to the vagaries of this platform's funky arithmetic. ++ Instead, define it through a reference to an external variable. ++ Like the following, but using a union to avoid type mismatches: + +- const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }; ++ const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / 0x1p53 }; + extern const long double LDBL_MAX; + +- or through a pointer cast ++ The following alternative would not work as well when GCC is optimizing: ++ ++ #define LDBL_MAX (*(long double const *) (double[]) ++ { DBL_MAX, DBL_MAX / 0x1p53 }) + +- #define LDBL_MAX \ +- (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }) ++ The following alternative would require GCC 6 or later: + +- Unfortunately, this is not a constant expression, and the latter expression +- does not work well when GCC is optimizing.. */ ++ #define LDBL_MAX __builtin_pack_longdouble (DBL_MAX, DBL_MAX / 0x1p53) ++ ++ Unfortunately none of the alternatives are constant expressions. */ + # if !GNULIB_defined_long_double_union + union gl_long_double_union + { +@@ -159,6 +153,8 @@ + # endif + extern const union gl_long_double_union gl_LDBL_MAX; + # define LDBL_MAX (gl_LDBL_MAX.ld) ++# undef LDBL_NORM_MAX ++# define LDBL_NORM_MAX LDBL_MAX + #endif + + /* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong. +@@ -179,6 +175,35 @@ + # endif + #endif + ++/* On PowerPC platforms, 'long double' has a double-double representation. ++ Up to ISO C 17, this was outside the scope of ISO C because it can represent ++ numbers with mantissas of the form 1.<52 bits><52 bits>, such as ++ 1.0L + 4.94065645841246544176568792868221e-324L = 1 + 2^-1074; see ++ ISO C 17 § 5.2.4.2.2.(3). ++ In ISO C 23, wording has been included that makes this 'long double' ++ representation compliant; see ISO C 23 § 5.2.5.3.3.(8)-(9). In this setting, ++ numbers with mantissas of the form 1.<52 bits><52 bits> are ++ called "unnormalized". And since LDBL_EPSILON must be normalized (per ++ ISO C 23 § 5.2.5.3.3.(33)), it must be 2^-105. */ ++#if defined __powerpc__ && LDBL_MANT_DIG == 106 ++# undef LDBL_EPSILON ++# define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */ ++#endif ++ ++/* ============================ ISO C23 support ============================ */ ++ ++/* 'long double' properties */ ++ ++#ifndef LDBL_NORM_MAX ++# ifdef __LDBL_NORM_MAX__ ++# define LDBL_NORM_MAX __LDBL_NORM_MAX__ ++# else ++# define LDBL_NORM_MAX LDBL_MAX ++# endif ++#endif ++ ++/* ================================= Other ================================= */ ++ + #if @REPLACE_ITOLD@ + /* Pull in a function that fixes the 'int' to 'long double' conversion + of glibc 2.7. */ +diff '--color=auto' -ruN a/gnulib-tests/Makefile.in b/gnulib-tests/Makefile.in +--- a/gnulib-tests/Makefile.in 2024-06-01 18:18:09.000000000 +0200 ++++ b/gnulib-tests/Makefile.in 2026-01-02 15:56:12.645625323 +0100 +@@ -1172,7 +1172,7 @@ + ../gl/lib/libgnulib.a libtests.a $(am__DEPENDENCIES_1) + test_float_SOURCES = test-float.c + test_float_OBJECTS = test-float.$(OBJEXT) +-test_float_LDADD = $(LDADD) ++test_float_LDADD = $(LDADD) -lm + test_float_DEPENDENCIES = libtests.a ../gl/lib/libgnulib.a libtests.a \ + ../gl/lib/libgnulib.a libtests.a $(am__DEPENDENCIES_1) + test_fnmatch_SOURCES = test-fnmatch.c +diff '--color=auto' -ruN a/gnulib-tests/test-float.c b/gnulib-tests/test-float.c +--- a/gnulib-tests/test-float.c 2024-05-27 21:48:37.000000000 +0200 ++++ b/gnulib-tests/test-float.c 2026-01-02 16:15:21.261123584 +0100 +@@ -59,6 +59,8 @@ + + /* ------------------------------------------------------------------------- */ + ++#include ++ + #include "fpucw.h" + #include "macros.h" + +@@ -295,6 +297,44 @@ + + /* -------------------- Check macros for 'long double' -------------------- */ + ++static int ++test_isfinitel (long double volatile x) ++{ ++ if (x != x) ++ return 0; ++ long double volatile zero = x * 0; ++ return zero == 0; ++} ++ ++/* Return X after normalization. This makes a difference on platforms ++ where long double can represent unnormalized values. For example, ++ suppose x = 1 + 2**-106 on PowerPC with IBM long double where ++ FLT_RADIX = 2, LDBL_MANT_DIG = 106, and LDBL_EPSILON = 2**-105. ++ Then 1 < x < 1 + LDBL_EPSILON, and normalize_long_double (x) returns 1. */ ++static long double ++normalize_long_double (long double volatile x) ++{ ++ if (FLT_RADIX == 2 && test_isfinitel (x)) ++ { ++ int xexp; ++ long double volatile ++ frac = frexpl (x, &xexp), ++ significand = frac * pow2l (LDBL_MANT_DIG), ++ normalized_significand = truncl (significand), ++ normalized_x = normalized_significand * pow2l (xexp - LDBL_MANT_DIG); ++ ++ /* The test_isfinitel defends against PowerPC with IBM long double, ++ which fritzes out near LDBL_MAX. */ ++ if (test_isfinitel (normalized_x)) ++ x = normalized_x; ++ } ++ else ++ { ++ /* Hope that X is already normalized. */ ++ } ++ return x; ++} ++ + static void + test_long_double (void) + { +@@ -354,11 +394,14 @@ + for (n = 0; n <= 2 * LDBL_MANT_DIG; n++) + { + volatile long double half_n = pow2l (- n); /* 2^-n */ +- volatile long double x = me - half_n; ++ volatile long double x = normalize_long_double (me - half_n); + if (x < me) + ASSERT (x <= 1.0L); + } + } ++ ++ /* Check the value of LDBL_NORM_MAX. */ ++ ASSERT (LDBL_NORM_MAX == normalize_long_double (LDBL_MAX)); + } + + int diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 67558e6ba96bc..1dbc5e241cf50 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -329,6 +329,7 @@ mapAliases { audio-recorder = throw "'audio-recorder' has been removed, as it is unmaintained upstream and broken. Consider using 'gnome-sound-recorder' or 'reco' instead"; # Added 2026-01-02 august = throw "'august' has been removed, as it has been unmaintained since august 2023"; # Added 2025-12-25 AusweisApp2 = throw "'AusweisApp2' has been renamed to/replaced by 'ausweisapp'"; # Converted to throw 2025-10-27 + autobase = throw "'autobase' is a Node library, use buildNpmPackage for that"; # Added 2025-09-26 autoconf213 = throw "'autoconf213' has been removed in favor of 'autoconf'"; # Added 2025-07-21 autoconf264 = throw "'autoconf264' has been removed in favor of 'autoconf'"; # Added 2025-07-21 automake111x = throw "'automake111x' has been removed in favor of 'automake'"; # Added 2025-07-21 @@ -599,6 +600,7 @@ mapAliases { emulationstation = throw "emulationstation was removed due to numerous vulnerabilities in freeimage"; # Added 2025-10-23 emulationstation-de = throw "emulationstation-de was removed due to numerous vulnerabilities in freeimage"; # Added 2025-10-23 enchant2 = warnAlias "'enchant2' has been renamed to 'enchant_2'" enchant_2; # Added 2026-01-14 + encodings = font-encodings; # Added 2026-01-19 enyo-doom = throw "'enyo-doom' has been renamed to/replaced by 'enyo-launcher'"; # Converted to throw 2025-10-27 epapirus-icon-theme = throw "'epapirus-icon-theme' has been removed because 'papirus-icon-theme' no longer supports building with elementaryOS icon support"; # Added 2025-06-15 eris-go = throw "'eris-go' has been removed due to a hostile upstream moving tags and breaking src FODs"; # Added 2025-09-01 @@ -651,6 +653,37 @@ mapAliases { flutter327 = throw "flutter327 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2025-10-28 fmsynth = throw "'fmsynth' has been removed as it was broken and unmaintained both upstream and in nixpkgs."; # Added 2025-09-01 follow = warnAlias "follow has been renamed to folo" folo; # Added 2025-05-18 + fontadobe75dpi = font-adobe-75dpi; # Added 2026-01-19 + fontadobeutopia75dpi = font-adobe-utopia-75dpi; # Added 2026-01-19 + fontadobeutopiatype1 = font-adobe-utopia-type1; # Added 2026-01-19 + fontalias = font-alias; # Added 2026-01-19 + fontarabicmisc = font-arabic-misc; # Added 2026-01-19 + fontbh75dpi = font-bh-75dpi; # Added 2026-01-19 + fontbhlucidatypewriter75dpi = font-bh-lucidatypewriter-75dpi; # Added 2026-01-19 + fontbhttf = font-bh-ttf; # Added 2026-01-19 + fontbhtype1 = font-bh-type1; # Added 2026-01-19 + fontbitstream75dpi = font-bitstream-75dpi; # Added 2026-01-19 + fontbitstreamspeedo = throw "Bitstream Speedo is an obsolete font format that hasn't been supported by Xorg since 2005"; # added 2025-09-24 + fontbitstreamtype1 = font-bitstream-type1; # Added 2026-01-19 + fontcronyxcyrillic = font-cronyx-cyrillic; # Added 2026-01-19 + fontcursormisc = font-cursor-misc; # Added 2026-01-19 + fontdaewoomisc = font-daewoo-misc; # Added 2026-01-19 + fontdecmisc = font-dec-misc; # Added 2026-01-19 + fontibmtype1 = font-ibm-type1; # Added 2026-01-19 + fontisasmisc = font-isas-misc; # Added 2026-01-19 + fontjismisc = font-jis-misc; # Added 2026-01-19 + fontmicromisc = font-micro-misc; # Added 2026-01-19 + fontmisccyrillic = font-misc-cyrillic; # Added 2026-01-19 + fontmiscethiopic = font-misc-ethiopic; # Added 2026-01-19 + fontmiscmeltho = font-misc-meltho; # Added 2026-01-19 + fontmiscmisc = font-misc-misc; # Added 2026-01-19 + fontmuttmisc = font-mutt-misc; # Added 2026-01-19 + fontschumachermisc = font-schumacher-misc; # Added 2026-01-19 + fontscreencyrillic = font-screen-cyrillic; # Added 2026-01-19 + fontsonymisc = font-sony-misc; # Added 2026-01-19 + fontsunmisc = font-sun-misc; # Added 2026-01-19 + fontwinitzkicyrillic = font-winitzki-cyrillic; # Added 2026-01-19 + fontxfree86type1 = font-xfree86-type1; # Added 2026-01-19 forceSystem = warnAlias "forceSystem is deprecated in favour of explicitly importing Nixpkgs" ( system: _: (import self.path { localSystem = { inherit system; }; }) ); # Converted to warning 2025-10-28 @@ -944,7 +977,10 @@ mapAliases { libtransmission_3 = throw "libtransmission_3 has been removed in favour of libtransmission_4. Note that upgrade caused data loss for some users so backup is recommended (see NixOS 24.11 release notes for details)"; # Converted to throw 2025-10-26 libuinputplus = throw "'libuinputplus' has been removed, as it was unmaintained upstream since 2021, no longer builds, and is no longer used by anything"; # Added 2025-11-02 libviper = throw "'libviper' was removed as it is broken and not maintained upstream"; # Added 2025-05-17 + libWindowsWM = libwindowswm; # Added 2026-01-19 libwnck3 = throw "'libwnck3' has been renamed to/replaced by 'libwnck'"; # Converted to throw 2025-10-27 + libXfont = libxfont_1; # Added 2026-01-19 + libXtrap = throw "XTrap was a proposed X11 extension that hasn't been in Xorg since X11R6 in 1994, it is deprecated and archived upstream."; # added 2025-12-13 lightdm_gtk_greeter = throw "'lightdm_gtk_greeter' has been renamed to/replaced by 'lightdm-gtk-greeter'"; # Converted to throw 2025-10-27 lightly-boehs = throw "'lightly-boehs' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20 lightly-qt = throw "'lightly-qt' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20 @@ -1170,6 +1206,7 @@ mapAliases { mpdWithFeatures = warnAlias "mpdWithFeatures has been replaced by mpd.override" mpd.override; # Added 2025-08-08 mpris-discord-rpc = throw "'mpris-discord-rpc' has been renamed to 'music-discord-rpc'."; # Added 2025-09-14 mpw = throw "'mpw' has been removed, as upstream development has moved to Spectre, which is packaged as 'spectre-cli'"; # Added 2025-10-26 + mrpeach = throw "'mrpeach' has been removed as it is unmaintained"; # Added 2025-10-06 mrxvt = throw "'mrxvt' has been removed due to lack of maintainence upstream"; # Added 2025-09-25 msgpack = throw "msgpack has been split into msgpack-c and msgpack-cxx"; # Added 2025-09-14 msp430NewlibCross = throw "'msp430NewlibCross' has been renamed to/replaced by 'msp430Newlib'"; # Converted to throw 2025-10-27 @@ -1406,6 +1443,7 @@ mapAliases { postgresqlJitPackages = throw "'postgresqlJitPackages' has been renamed to/replaced by 'postgresqlPackages'"; # Converted to throw 2025-10-27 pot = throw "'pot' has been removed as it requires libsoup 2.4 which is EOL"; # Added 2025-10-09 powerdns = throw "'powerdns' has been renamed to/replaced by 'pdns'"; # Converted to throw 2025-10-27 + powwow = throw "'powwow' has been removed, since it's unmaintained since 2021 and doesn't build with glibc 2.42"; # Added 2025-09-28 prboom-plus = throw "'prboom-plus' has been removed since it is unmaintained upstream."; # Added 2025-09-14 preload = throw "'preload' has been removed due to lack of usage and being broken since its introduction into nixpkgs"; # Added 2025-11-29 presage = throw "presage has been removed, as it has been unmaintained since 2018"; # Added 2025-06-19 @@ -1489,6 +1527,7 @@ mapAliases { redocly-cli = throw "'redocly-cli' has been renamed to/replaced by 'redocly'"; # Converted to throw 2025-10-27 redpanda = throw "'redpanda' has been renamed to/replaced by 'redpanda-client'"; # Converted to throw 2025-10-27 redshift-plasma-applet = throw "'redshift-plasma-applet' has been removed as it is obsolete and lacks maintenance upstream."; # Added 2025-11-09 + reiserfsprogs = throw "'reiserfsprogs' has been removed as ReiserFS has not been actively maintained for many years."; # Added 2025-11-13 remotebox = throw "remotebox has been removed because it was unmaintained and broken for a long time"; # Added 2025-09-11 resp-app = throw "'resp-app' has been replaced by 'redisinsight'"; # Added 2025-12-17 responsively-app = throw "'responsively-app' has been removed due to lack of maintenance upstream."; # Added 2025-06-25 @@ -1819,20 +1858,72 @@ mapAliases { xbrightness = throw "'xbrightness' has been removed as it is unmaintained"; # Added 2025-08-28 xbursttools = throw "'xbursttools' has been removed as it is broken and unmaintained upstream."; # Added 2025-06-12 xcb-util-cursor-HEAD = warnAlias "'xcb-util-cursor-HEAD' has been removed; use 'libxcb-cursor' instead" libxcb-cursor; # added 2026-01-12 + xcursorthemes = xcursor-themes; # Added 2026-01-19 xdragon = throw "'xdragon' has been renamed to/replaced by 'dragon-drop'"; # Converted to throw 2025-10-27 xf86_input_cmt = xf86-input-cmt; # Added 2025-12-12 xf86_input_wacom = xf86-input-wacom; # Added 2025-12-12 + xf86inputjoystick = xf86-input-joystick; # Added 2026-01-19 + xf86inputkeyboard = xf86-input-keyboard; # Added 2026-01-19 + xf86inputmouse = xf86-input-mouse; # Added 2026-01-19 + xf86inputsynaptics = xf86-input-synaptics; # Added 2026-01-19 + xf86inputvmmouse = xf86-input-vmmouse; # Added 2026-01-19 + xf86inputvoid = xf86-input-void; # Added 2026-01-19 + xf86videoamdgpu = xf86-video-amdgpu; # Added 2026-01-19 + xf86videoapm = xf86-video-apm; # Added 2026-01-19 + xf86videoark = xf86-video-ark; # Added 2026-01-19 + xf86videoast = xf86-video-ast; # Added 2026-01-19 + xf86videoati = xf86-video-ati; # Added 2026-01-19 + xf86videochips = xf86-video-chips; # Added 2026-01-19 + xf86videocirrus = xf86-video-cirrus; # Added 2026-01-19 + xf86videodummy = xf86-video-dummy; # Added 2026-01-19 + xf86videofbdev = xf86-video-fbdev; # Added 2026-01-19 + xf86videogeode = xf86-video-geode; # Added 2026-01-19 + xf86videoglide = throw "The Xorg Glide video driver has been archived upstream due to being obsolete"; # added 2025-12-13 + xf86videoglint = throw "The Xorg GLINT/Permedia video driver has been broken since xorg 21. see https://gitlab.freedesktop.org/xorg/driver/xf86-video-glint/-/issues/1"; # added 2025-12-13 + xf86videoi128 = xf86-video-i128; # Added 2026-01-19 + xf86videoi740 = xf86-video-i740; # Added 2026-01-19 + xf86videointel = xf86-video-intel; # Added 2026-01-19 + xf86videomga = xf86-video-mga; # Added 2026-01-19 + xf86videoneomagic = xf86-video-neomagic; # Added 2026-01-19 + xf86videonewport = throw "The Xorg Newport video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 + xf86videonv = xf86-video-nv; # Added 2026-01-19 + xf86videoomap = xf86-video-omap; # Added 2026-01-19 + xf86videoopenchrome = xf86-video-openchrome; # Added 2026-01-19 + xf86videoqxl = xf86-video-qxl; # Added 2026-01-19 + xf86videor128 = xf86-video-r128; # Added 2026-01-19 + xf86videos3virge = xf86-video-s3virge; # Added 2026-01-19 + xf86videosavage = xf86-video-savage; # Added 2026-01-19 + xf86videosiliconmotion = xf86-video-siliconmotion; # Added 2026-01-19 + xf86videosis = xf86-video-sis; # Added 2026-01-19 + xf86videosisusb = xf86-video-sisusb; # Added 2026-01-19 + xf86videosuncg6 = xf86-video-suncg6; # Added 2026-01-19 + xf86videosunffb = xf86-video-sunffb; # Added 2026-01-19 + xf86videosunleo = xf86-video-sunleo; # Added 2026-01-19 + xf86videotdfx = xf86-video-tdfx; # Added 2026-01-19 + xf86videotga = throw "The Xorg TGA (aka DEC 21030) video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 + xf86videotrident = xf86-video-trident; # Added 2026-01-19 + xf86videov4l = xf86-video-v4l; # Added 2026-01-19 + xf86videovboxvideo = xf86-video-vbox; # Added 2026-01-19 + xf86videovesa = xf86-video-vesa; # Added 2026-01-19 + xf86videovmware = xf86-video-vmware; # Added 2026-01-19 + xf86videovoodoo = xf86-video-voodoo; # Added 2026-01-19 + xf86videowsfb = throw "The Xorg BSD wsdisplay framebuffer video driver is broken and hasn't had a release since 2012"; # added 2025-12-13 xflux = throw "'xflux' has been removed as it was unmaintained"; # Added 2025-08-22 xflux-gui = throw "'xflux-gui' has been removed as it was unmaintained"; # Added 2025-08-22 xinput_calibrator = xinput-calibrator; # Added 2025-08-28 xjump = throw "'xjump' has been removed as it is unmaintained"; # Added 2025-08-22 + xkeyboardconfig_custom = xkeyboard-config_custom; # Added 2026-01-19 xmlada = throw "'xmlada' has been renamed to/replaced by 'gnatPackages.xmlada'"; # Converted to throw 2025-10-27 xmlroff = throw "'xmlroff' has been removed as it is unmaintained and broken"; # Added 2025-05-18 xo = throw "Use 'dbtpl' instead of 'xo'"; # Added 2025-09-28 xonsh-unwrapped = throw "'xonsh-unwrapped' has been renamed to/replaced by 'python3Packages.xonsh'"; # Converted to throw 2025-10-27 xorg-autoconf = util-macros; # Added 2025-08-18 + xorgdocs = xorg-docs; # Added 2026-01-19 + xorgsgmldoctools = xorg-sgml-doctools; # Added 2026-01-19 xsw = throw "'xsw' has been removed due to lack of upstream maintenance"; # Added 2025-08-22 + xtrap = throw "XTrap was a proposed X11 extension that hasn't been in Xorg since X11R6 in 1994, it is deprecated and archived upstream."; # added 2025-12-13 xulrunner = throw "'xulrunner' has been renamed to/replaced by 'firefox-unwrapped'"; # Converted to throw 2025-10-27 + xxgdb = throw "'xxgdb' seems inactive and doesn't compile with glibc 2.42"; # Added 2025-09-28 yabar = throw "'yabar' has been removed as the upstream project was archived"; # Added 2025-06-10 yabar-unstable = throw "'yabar' has been removed as the upstream project was archived"; # Added 2025-06-10 yafaray-core = throw "'yafaray-core' has been renamed to/replaced by 'libyafaray'"; # Converted to throw 2025-10-27 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1f9dbf7315e31..f2a4cf1f5871d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3050,7 +3050,7 @@ with pkgs; npmHooks = recurseIntoAttrs (callPackage ../build-support/node/build-npm-package/hooks { }); - inherit (callPackages ../build-support/node/fetch-npm-deps { }) + inherit (callPackages ../build-support/node/prefetch-npm-deps { }) fetchNpmDeps prefetch-npm-deps ; @@ -4544,10 +4544,9 @@ with pkgs; haskellPackages = recurseIntoAttrs ( # Prefer native-bignum to avoid linking issues with gmp; - # TemplateHaskell doesn't work with hadrian built GHCs yet - # https://github.com/NixOS/nixpkgs/issues/275304 + # GHC 9.10 doesn't work too well with iserv-proxy. if stdenv.hostPlatform.isStatic then - haskell.packages.native-bignum.ghc94 + haskell.packages.native-bignum.ghc912 # JS backend can't use gmp else if stdenv.hostPlatform.isGhcjs then haskell.packages.native-bignum.ghc910 @@ -4987,15 +4986,15 @@ with pkgs; wrapRustcWith = { rustc-unwrapped, ... }@args: callPackage ../build-support/rust/rustc-wrapper args; wrapRustc = rustc-unwrapped: wrapRustcWith { inherit rustc-unwrapped; }; - rust_1_91 = callPackage ../development/compilers/rust/1_91.nix { }; - rust = rust_1_91; + rust_1_92 = callPackage ../development/compilers/rust/1_92.nix { }; + rust = rust_1_92; mrustc = callPackage ../development/compilers/mrustc { }; mrustc-minicargo = callPackage ../development/compilers/mrustc/minicargo.nix { }; mrustc-bootstrap = callPackage ../development/compilers/mrustc/bootstrap.nix { }; - rustPackages_1_91 = rust_1_91.packages.stable; - rustPackages = rustPackages_1_91; + rustPackages_1_92 = rust_1_92.packages.stable; + rustPackages = rustPackages_1_92; inherit (rustPackages) cargo @@ -5409,6 +5408,8 @@ with pkgs; lua5_3_compat lua5_4 lua5_4_compat + lua5_5 + lua5_5_compat luajit_2_1 luajit_2_0 luajit_openresty @@ -5421,6 +5422,7 @@ with pkgs; lua52Packages = recurseIntoAttrs lua5_2.pkgs; lua53Packages = recurseIntoAttrs lua5_3.pkgs; lua54Packages = recurseIntoAttrs lua5_4.pkgs; + lua55Packages = recurseIntoAttrs lua5_5.pkgs; luajitPackages = recurseIntoAttrs luajit.pkgs; luaPackages = lua52Packages; @@ -6457,10 +6459,6 @@ with pkgs; enablePythonApi = false; }; - gdb = callPackage ../development/tools/misc/gdb { - guile = null; - }; - gdbHostCpuOnly = gdb.override { hostCpuOnly = true; }; valgrind-light = (valgrind.override { gdb = null; }).overrideAttrs (oldAttrs: { @@ -8364,24 +8362,24 @@ with pkgs; ]; }; - sbcl_2_5_9 = wrapLisp { - pkg = callPackage ../development/compilers/sbcl { version = "2.5.9"; }; - + sbcl_2_5_10 = wrapLisp { + pkg = callPackage ../development/compilers/sbcl { version = "2.5.10"; }; faslExt = "fasl"; flags = [ "--dynamic-space-size" "3000" ]; }; - sbcl_2_5_10 = wrapLisp { - pkg = callPackage ../development/compilers/sbcl { version = "2.5.10"; }; + sbcl_2_6_0 = wrapLisp { + pkg = callPackage ../development/compilers/sbcl { version = "2.6.0"; }; + faslExt = "fasl"; flags = [ "--dynamic-space-size" "3000" ]; }; - sbcl = sbcl_2_5_10; + sbcl = sbcl_2_6_0; sbclPackages = recurseIntoAttrs sbcl.pkgs; @@ -9147,26 +9145,71 @@ with pkgs; virtualenv-clone = with python3Packages; toPythonApplication virtualenv-clone; - xorg = - let - # Use `lib.callPackageWith __splicedPackages` rather than plain `callPackage` - # so as not to have the newly bound xorg items already in scope, which would - # have created a cycle. - overrides = lib.callPackageWith __splicedPackages ../servers/x11/xorg/overrides.nix { - inherit (buildPackages.darwin) bootstrap_cmds; - udev = if stdenv.hostPlatform.isLinux then udev else null; - libdrm = if stdenv.hostPlatform.isLinux then libdrm else null; - }; - - generatedPackages = lib.callPackageWith __splicedPackages ../servers/x11/xorg/default.nix { }; - - xorgPackages = makeScopeWithSplicing' { - otherSplices = generateSplicesForMkScope "xorg"; - f = lib.extends overrides generatedPackages; - }; + xorg = recurseIntoAttrs (makeScopeWithSplicing' { + otherSplices = generateSplicesForMkScope "xorg"; + # Use `lib.callPackageWith __splicedPackages` rather than plain `callPackage` + # so as not to have the newly bound xorg items already in scope, which would + # have created a cycle. + f = lib.callPackageWith __splicedPackages ../servers/x11/xorg { }; + }); - in - recurseIntoAttrs xorgPackages; + inherit (xorg) + fontadobe100dpi + fontadobeutopia100dpi + fontbh100dpi + fontbhlucidatypewriter100dpi + fontbitstream100dpi + fontutil + libAppleWM + libFS + libICE + libSM + libX11 + libXScrnSaver + libXau + libXaw + libXcomposite + libXcursor + libXdamage + libXdmcp + libXext + libXfixes + libXfont2 + libXft + libXi + libXinerama + libXmu + libXp + libXpm + libXpresent + libXrandr + libXrender + libXres + libXt + libXtst + libXv + libXvMC + libXxf86dga + libXxf86misc + libXxf86vm + libpthreadstubs + mkfontdir + utilmacros + xcbproto + xcbutil + xcbutilcursor + xcbutilerrors + xcbutilimage + xcbutilkeysyms + xcbutilrenderutil + xcbutilwm + xf86inputevdev + xf86inputlibinput + xf86videonouveau + xkeyboardconfig + xorgcffiles + xorgserver + ; zabbixFor = version: rec { agent = (callPackages ../servers/monitoring/zabbix/agent.nix { }).${version}; @@ -9890,10 +9933,6 @@ with pkgs; protobuf = protobuf_21; # https://github.com/blueprint-freespeech/ricochet-refresh/issues/178 }; - shaderc = callPackage ../development/compilers/shaderc { - inherit (darwin) autoSignDarwinBinariesHook; - }; - scheherazade-new = scheherazade.override { version = "4.400"; }; @@ -9934,6 +9973,7 @@ with pkgs; tex-gyre-math = recurseIntoAttrs (callPackages ../data/fonts/tex-gyre-math { }); xkeyboard_config = xkeyboard-config; + xkeyboard-config_custom = callPackage ../by-name/xk/xkeyboard-config/custom.nix { }; xlsx2csv = with python3Packages; toPythonApplication xlsx2csv; diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 115d8a75b70c7..949915974dd07 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -60,6 +60,15 @@ let buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_20; llvmPackages = pkgs.llvmPackages_20; + # Note the Nixpkgs default version is chosen in all-packages.nix. + chooseDefaultVersions = sets: { + ghc94 = sets.ghc948; + ghc96 = sets.ghc967; + ghc98 = sets.ghc984; + ghc910 = sets.ghc9103; + ghc912 = sets.ghc9122; + ghc914 = sets.ghc9141; + }; in { lib = haskellLibUncomposable; @@ -100,7 +109,6 @@ in inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook; inherit buildTargetLlvmPackages llvmPackages; }; - ghc94 = compiler.ghc948; ghc967 = callPackage ../development/compilers/ghc/9.6.7.nix { bootPkgs = if @@ -116,7 +124,6 @@ in inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook; inherit buildTargetLlvmPackages llvmPackages; }; - ghc96 = compiler.ghc967; ghc984 = callPackage ../development/compilers/ghc/9.8.4.nix { bootPkgs = if @@ -134,7 +141,6 @@ in inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook; inherit buildTargetLlvmPackages llvmPackages; }; - ghc98 = compiler.ghc984; ghc9102 = callPackage ../development/compilers/ghc/9.10.2.nix { bootPkgs = if @@ -169,7 +175,6 @@ in inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook; inherit buildTargetLlvmPackages llvmPackages; }; - ghc910 = compiler.ghc9103; ghc9122 = callPackage ../development/compilers/ghc/9.12.2.nix { bootPkgs = # No suitable bindist packaged yet @@ -186,7 +191,6 @@ in inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook; inherit buildTargetLlvmPackages llvmPackages; }; - ghc912 = compiler.ghc9122; ghc9141 = callPackage ../development/compilers/ghc/9.14.1.nix { bootPkgs = # No suitable bindist packaged yet @@ -195,7 +199,6 @@ in inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook; inherit buildTargetLlvmPackages llvmPackages; }; - ghc914 = compiler.ghc9141; ghcHEAD = callPackage ../development/compilers/ghc/head.nix { bootPkgs = # No suitable bindist packaged yet @@ -219,6 +222,7 @@ in ) ); } + // chooseDefaultVersions compiler // pkgs.lib.optionalAttrs config.allowAliases { ghc810 = throw "'haskell.compiler.ghc810' has been removed."; # Added 2025-09-07 ghc90 = throw "'haskell.compiler.ghc90' has been removed."; # Added 2025-09-07 @@ -261,19 +265,16 @@ in ghc = bh.compiler.ghc948; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.4.x.nix { }; }; - ghc94 = packages.ghc948; ghc967 = callPackage ../development/haskell-modules { buildHaskellPackages = bh.packages.ghc967; ghc = bh.compiler.ghc967; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.6.x.nix { }; }; - ghc96 = packages.ghc967; ghc984 = callPackage ../development/haskell-modules { buildHaskellPackages = bh.packages.ghc984; ghc = bh.compiler.ghc984; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.8.x.nix { }; }; - ghc98 = packages.ghc984; ghc9102 = callPackage ../development/haskell-modules { buildHaskellPackages = bh.packages.ghc9102; ghc = bh.compiler.ghc9102; @@ -284,7 +285,6 @@ in ghc = bh.compiler.ghc9103; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.10.x.nix { }; }; - ghc910 = packages.ghc9103; ghc9122 = callPackage ../development/haskell-modules { buildHaskellPackages = bh.packages.ghc9122; ghc = bh.compiler.ghc9122; @@ -295,13 +295,11 @@ in ghc = bh.compiler.ghc9123; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.12.x.nix { }; }; - ghc912 = packages.ghc9122; ghc9141 = callPackage ../development/haskell-modules { buildHaskellPackages = bh.packages.ghc9141; ghc = bh.compiler.ghc9141; compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.14.x.nix { }; }; - ghc914 = packages.ghc9141; ghcHEAD = callPackage ../development/haskell-modules { buildHaskellPackages = bh.packages.ghcHEAD; ghc = bh.compiler.ghcHEAD; @@ -322,6 +320,7 @@ in } ); } + // chooseDefaultVersions packages // pkgs.lib.optionalAttrs config.allowAliases { ghc810 = throw "'haskell.packages.ghc810' has been removed."; # Added 2025-09-07 ghc90 = throw "'haskell.packages.ghc90' has been removed."; # Added 2025-09-07 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 13735ac2daf26..e64a6ef38fc41 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19485,6 +19485,8 @@ self: super: with self; { typer-config = callPackage ../development/python-modules/typer-config { }; + typer-injector = callPackage ../development/python-modules/typer-injector { }; + typer-shell = callPackage ../development/python-modules/typer-shell { }; typer-slim = callPackage ../development/python-modules/typer-slim { }; diff --git a/pkgs/top-level/release-haskell.nix b/pkgs/top-level/release-haskell.nix index c99d79adccae0..4998871272b33 100644 --- a/pkgs/top-level/release-haskell.nix +++ b/pkgs/top-level/release-haskell.nix @@ -429,38 +429,9 @@ let postgrest ; }; - - haskell.packages.native-bignum.ghc9103 = { - inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc9103) - hello - random - QuickCheck - terminfo # isn't bundled for cross - ; - }; }; pkgsCross = { - aarch64-android-prebuilt.pkgsStatic = - removePlatforms - [ - # Android NDK package doesn't support building on - "aarch64-darwin" - "aarch64-linux" - - "x86_64-darwin" - ] - { - haskell.packages.ghc912 = { - inherit - (packagePlatforms pkgs.pkgsCross.aarch64-android-prebuilt.pkgsStatic.haskell.packages.ghc912) - ghc - hello - microlens - ; - }; - }; - ghcjs = removePlatforms [ @@ -521,7 +492,24 @@ let ghc948 ; }; - }; + } + // + removePlatforms + [ + # Testing cross from x86_64-linux + "aarch64-darwin" + "aarch64-linux" + "x86_64-darwin" + ] + { + haskellPackages = { + inherit (packagePlatforms pkgs.pkgsCross.aarch64-multiplatform.haskellPackages) + ghc + hello + th-orphans + ; + }; + }; }; }) (versionedCompilerJobs { @@ -665,7 +653,6 @@ let constituents = accumulateDerivations [ jobs.pkgsStatic.haskell.packages.native-bignum.ghc948 # non-hadrian jobs.pkgsStatic.haskellPackages - jobs.pkgsStatic.haskell.packages.native-bignum.ghc9103 ]; }; } diff --git a/pkgs/top-level/splice.nix b/pkgs/top-level/splice.nix index 66721e3bee565..50adc32168e5c 100644 --- a/pkgs/top-level/splice.nix +++ b/pkgs/top-level/splice.nix @@ -106,25 +106,7 @@ let ; }; - splicedPackagesWithXorg = - splicedPackages - // removeAttrs splicedPackages.xorg [ - "callPackage" - "newScope" - "overrideScope" - "packages" - ]; - - packagesWithXorg = - pkgs - // removeAttrs pkgs.xorg [ - "callPackage" - "newScope" - "overrideScope" - "packages" - ]; - - pkgsForCall = if actuallySplice then splicedPackagesWithXorg else packagesWithXorg; + pkgsForCall = if actuallySplice then splicedPackages else pkgs; in