From 3c7770cca58bbafa2984ee08804613083791dae0 Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Wed, 20 Mar 2024 23:00:59 +0100 Subject: [PATCH 1/8] rust: update to 1.77.0 --- mingw-w64-rust/PKGBUILD | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index 35999265e11a2..7a8d1dae2f2b8 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -8,11 +8,14 @@ if [[ $MINGW_PACKAGE_PREFIX == *-clang-aarch64 ]]; then _bootstrapping=no fi +rust_dist_server=https://static.rust-lang.org/dist +#rust_dist_server=https://dev-static.rust-lang.org/dist/2024-03-17 + _realname=rust pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" $([[ ${CARCH} == i686 ]] || echo "${MINGW_PACKAGE_PREFIX}-rust-docs")) -pkgver=1.76.0 +pkgver=1.77.0 pkgrel=1 pkgdesc="Systems programming language focused on safety, speed and concurrency (mingw-w64)" arch=('any') @@ -37,14 +40,14 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools" $([[ "$_bootstrapping" == "no" ]] && echo "${MINGW_PACKAGE_PREFIX}-rust") "${MINGW_PACKAGE_PREFIX}-zlib") -source=("https://static.rust-lang.org/dist/${_realname}c-${pkgver}-src.tar.gz"{,.asc} +source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} "0001-rustc-llvm-fix-libs.patch" "0005-win32-config.patch" "0007-clang-subsystem.patch" "0008-disable-self-contained.patch" "0011-disable-uac-for-installer.patch") noextract=(${_realname}c-${pkgver}-src.tar.gz) -sha256sums=('9e5cff033a7f0d2266818982ad90e4d3e4ef8f8ee1715776c6e25073a136c021' +sha256sums=('0d6ccd1fa845fe3456b9ed4d483fc06acf9bbae9417e396b5144488c1a522d87' 'SKIP' '7cb1773c288ffb1c1e751edc49b1890c84bf9c362742bc5225d19d474edb73a0' '7d1c4e49524b835a8eadc961b39f5594b12a522a1e24368999be2c7e85399e4e' From 3eff2aa6c9b7d63e825a29bd7d419899461ad567 Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Mon, 25 Mar 2024 12:13:17 -0700 Subject: [PATCH 2/8] libc++: enable frame apis in libunwind. The bootstrapping hack used by the rust package on clang subsystems (namely, substituting compiler-rt and libunwind for libgcc and using the official gcc-based binaries to bootstrap) attempts to link to __register_frame_info and __deregister_frame_info on i686. Enabling this option brings them back. --- mingw-w64-libc++/PKGBUILD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mingw-w64-libc++/PKGBUILD b/mingw-w64-libc++/PKGBUILD index ffa32d8492267..21301ce034497 100644 --- a/mingw-w64-libc++/PKGBUILD +++ b/mingw-w64-libc++/PKGBUILD @@ -12,7 +12,7 @@ _version=18.1.2 _rc="" _tag=llvmorg-${_version}${_rc} pkgver=${_version}${_rc/-/} -pkgrel=1 +pkgrel=2 arch=(any) mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://libcxx.llvm.org/" @@ -119,6 +119,7 @@ build() { -DLIBCXXABI_ENABLE_SHARED=OFF \ -DLIBCXXABI_ENABLE_STATIC=ON \ -DLIBCXXABI_HAS_WIN32_THREAD_API=ON \ + -DLIBUNWIND_ENABLE_FRAME_APIS=ON \ -DLIBUNWIND_ENABLE_SHARED=ON \ -DLIBUNWIND_ENABLE_STATIC=ON \ "${_extra_config[@]}" \ From aceb5ea65056c29381976a9f133a3490bc3b4b35 Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Mon, 25 Mar 2024 12:27:59 -0700 Subject: [PATCH 3/8] rust: backport rust-lang/compiler-builtins#575 Also, fix 0011 patch to Cargo.lock (it was adding the embed-manifest dependency to the wrong crate due to fuzziness), and add a patch to vendor embed-manifest. This allows CLANG32 to build with --enable-vendor, which is required to use our now-patched version of compiler-builtins. --- .../0011-disable-uac-for-installer.patch | 24 +- .../0012-backport-compiler-builtins.patch | 131 ++ .../0013-vendor-embed-manifest.patch | 1966 +++++++++++++++++ mingw-w64-rust/PKGBUILD | 23 +- 4 files changed, 2122 insertions(+), 22 deletions(-) create mode 100644 mingw-w64-rust/0012-backport-compiler-builtins.patch create mode 100644 mingw-w64-rust/0013-vendor-embed-manifest.patch diff --git a/mingw-w64-rust/0011-disable-uac-for-installer.patch b/mingw-w64-rust/0011-disable-uac-for-installer.patch index 1082d00370659..13bfcf23c84a8 100644 --- a/mingw-w64-rust/0011-disable-uac-for-installer.patch +++ b/mingw-w64-rust/0011-disable-uac-for-installer.patch @@ -1,15 +1,7 @@ -diff -urN rustc-1.72.0-src/Cargo.lock.orig rustc-1.72.0-src/Cargo.lock ---- rustc-1.72.0-src/Cargo.lock.orig 2023-08-21 16:57:17.000000000 +0200 -+++ rustc-1.72.0-src/Cargo.lock 2023-08-23 14:37:30.805984900 +0200 -@@ -323,6 +323,7 @@ - version = "0.1.0" - dependencies = [ - "anyhow", -+ "embed-manifest", - "flate2", - "hex", - "rayon", -@@ -986,6 +987,12 @@ +diff -urN rustc-1.77.0-src/Cargo.lock.orig rustc-1.77.0-src/Cargo.lock +--- rustc-1.77.0-src/Cargo.lock.orig 2024-03-17 12:03:00.000000000 -0700 ++++ rustc-1.77.0-src/Cargo.lock 2024-03-25 11:14:51.855058900 -0700 +@@ -1211,6 +1211,12 @@ ] [[package]] @@ -22,6 +14,14 @@ diff -urN rustc-1.72.0-src/Cargo.lock.orig rustc-1.72.0-src/Cargo.lock name = "ena" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" +@@ -2011,6 +2017,7 @@ + dependencies = [ + "anyhow", + "clap", ++ "embed-manifest", + "flate2", + "rayon", + "tar", diff -urN rustc-1.64.0-src.orig/src/tools/rust-installer/build.rs rustc-1.64.0-src/src/tools/rust-installer/build.rs --- rustc-1.64.0-src.orig/src/tools/rust-installer/build.rs 1970-01-01 01:00:00.000000000 +0100 +++ rustc-1.64.0-src/src/tools/rust-installer/build.rs 2022-11-08 00:18:24.231485300 +0100 diff --git a/mingw-w64-rust/0012-backport-compiler-builtins.patch b/mingw-w64-rust/0012-backport-compiler-builtins.patch new file mode 100644 index 0000000000000..d3af5a0654d2d --- /dev/null +++ b/mingw-w64-rust/0012-backport-compiler-builtins.patch @@ -0,0 +1,131 @@ +diff -ur rustc-1.77.0-src/vendor/compiler_builtins.orig/.cargo-checksum.json rustc-1.77.0-src/vendor/compiler_builtins/.cargo-checksum.json +--- rustc-1.77.0-src/vendor/compiler_builtins.orig/.cargo-checksum.json 2024-03-17 13:42:45.000000000 -0700 ++++ rustc-1.77.0-src/vendor/compiler_builtins/.cargo-checksum.json 2024-03-25 10:25:45.364385400 -0700 +@@ -1 +1 @@ +-{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"693b529db2e5dd13069c05ef2e76e26c1fe1b2a590b07cd8e26dfb2df087ba62","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"117b50d6725ee0af0a7b3d197ea580655561f66a870ebc450d96af22bf7f39f6","src/x86_64.rs":"aa26062784eff574fee4075d23b0ea2fdd1bdbc9a7458b099c8fd307ee61024f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} +\ No newline at end of file ++{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"693b529db2e5dd13069c05ef2e76e26c1fe1b2a590b07cd8e26dfb2df087ba62","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"15e6e8180d52761492423aa3a1284b6640bc3dee9ba030465ec0e15fe6cfe754","src/x86_64.rs":"13b5e010a0d45164844fda4ada4d4e965f422f2a27768b3ce495c637714cf66f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} +diff -ur rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86.rs rustc-1.77.0-src/vendor/compiler_builtins/src/x86.rs +--- rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86.rs 2024-03-17 13:42:45.000000000 -0700 ++++ rustc-1.77.0-src/vendor/compiler_builtins/src/x86.rs 2024-03-25 10:25:45.697034000 -0700 +@@ -6,7 +6,6 @@ + // calling convention which can't be implemented using a normal Rust function + + // NOTE These functions are never mangled as they are not tested against compiler-rt +-// and mangling ___chkstk would break the `jmp ___chkstk` instruction in __alloca + + intrinsics! { + #[naked] +@@ -15,50 +14,8 @@ + target_env = "gnu", + not(feature = "no-asm") + ))] +- pub unsafe extern "C" fn ___chkstk_ms() { +- core::arch::asm!( +- "push %ecx", +- "push %eax", +- "cmp $0x1000,%eax", +- "lea 12(%esp),%ecx", +- "jb 1f", +- "2:", +- "sub $0x1000,%ecx", +- "test %ecx,(%ecx)", +- "sub $0x1000,%eax", +- "cmp $0x1000,%eax", +- "ja 2b", +- "1:", +- "sub %eax,%ecx", +- "test %ecx,(%ecx)", +- "pop %eax", +- "pop %ecx", +- "ret", +- options(noreturn, att_syntax) +- ); +- } +- +- // FIXME: __alloca should be an alias to __chkstk +- #[naked] +- #[cfg(all( +- windows, +- target_env = "gnu", +- not(feature = "no-asm") +- ))] + pub unsafe extern "C" fn __alloca() { +- core::arch::asm!( +- "jmp ___chkstk", // Jump to ___chkstk since fallthrough may be unreliable" +- options(noreturn, att_syntax) +- ); +- } +- +- #[naked] +- #[cfg(all( +- windows, +- target_env = "gnu", +- not(feature = "no-asm") +- ))] +- pub unsafe extern "C" fn ___chkstk() { ++ // _chkstk and _alloca are the same function + core::arch::asm!( + "push %ecx", + "cmp $0x1000,%eax", +diff -ur rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86_64.rs rustc-1.77.0-src/vendor/compiler_builtins/src/x86_64.rs +--- rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86_64.rs 2024-03-17 13:42:45.000000000 -0700 ++++ rustc-1.77.0-src/vendor/compiler_builtins/src/x86_64.rs 2024-03-25 10:25:45.697034000 -0700 +@@ -6,7 +6,6 @@ + // calling convention which can't be implemented using a normal Rust function + + // NOTE These functions are never mangled as they are not tested against compiler-rt +-// and mangling ___chkstk would break the `jmp ___chkstk` instruction in __alloca + + intrinsics! { + #[naked] +@@ -35,49 +34,6 @@ + "ret", + options(noreturn, att_syntax) + ); +- } +- +- #[naked] +- #[cfg(all( +- any(all(windows, target_env = "gnu"), target_os = "uefi"), +- not(feature = "no-asm") +- ))] +- pub unsafe extern "C" fn __alloca() { +- core::arch::asm!( +- "mov %rcx,%rax", // x64 _alloca is a normal function with parameter in rcx +- "jmp ___chkstk", // Jump to ___chkstk since fallthrough may be unreliable" +- options(noreturn, att_syntax) +- ); +- } +- +- #[naked] +- #[cfg(all( +- any(all(windows, target_env = "gnu"), target_os = "uefi"), +- not(feature = "no-asm") +- ))] +- pub unsafe extern "C" fn ___chkstk() { +- core::arch::asm!( +- "push %rcx", +- "cmp $0x1000,%rax", +- "lea 16(%rsp),%rcx", // rsp before calling this routine -> rcx +- "jb 1f", +- "2:", +- "sub $0x1000,%rcx", +- "test %rcx,(%rcx)", +- "sub $0x1000,%rax", +- "cmp $0x1000,%rax", +- "ja 2b", +- "1:", +- "sub %rax,%rcx", +- "test %rcx,(%rcx)", +- "lea 8(%rsp),%rax", // load pointer to the return address into rax +- "mov %rcx,%rsp", // install the new top of stack pointer into rsp +- "mov -8(%rax),%rcx", // restore rcx +- "push (%rax)", // push return address onto the stack +- "sub %rsp,%rax", // restore the original value in rax +- "ret", +- options(noreturn, att_syntax) +- ); + } + } + diff --git a/mingw-w64-rust/0013-vendor-embed-manifest.patch b/mingw-w64-rust/0013-vendor-embed-manifest.patch new file mode 100644 index 0000000000000..57d967d170ab3 --- /dev/null +++ b/mingw-w64-rust/0013-vendor-embed-manifest.patch @@ -0,0 +1,1966 @@ +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/.cargo-checksum.json rustc-1.77.0-src/vendor/embed-manifest/.cargo-checksum.json +--- rustc-1.77.0-src/vendor.orig/embed-manifest/.cargo-checksum.json 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/.cargo-checksum.json 2024-03-25 11:10:27.791701600 -0700 +@@ -0,0 +1 @@ ++{"files":{"CHANGELOG.md":"3b9d90277c0bb06de10a31110f3c7eea58802f2d090266631e32161f2d9c8562","Cargo.toml":"0d754491e05500fd1f461808c2d6c8239234c9f3a0404713b34f78021fbe9739","LICENSE":"d041a5a86caaf9cc7720f3637d689252083a664d9ccd946a36d1c7c708d204cb","README.md":"8cf8a7b20cfb7fa43c4ee9585bf92ea6c5a5c4ca3ef700974edb02025d5146c8","rustfmt.toml":"d364003c8da50e2707b7c01140c170098bac682b3f94ff98057f4ce74a18e62a","sample.exe.manifest":"a0e53ad5d65af69fe608999bcdab2e7c705a27c4a722c444d2d12cb89de68b6b","src/embed/coff.rs":"0ea7bfb9f5135843221912078bfd83a4f424a13cf5a610b25c4275a400484fcc","src/embed/error.rs":"aecb4928e70b02b784557352608f6d4fb9b88b44ae3297a33969a0f2219c416c","src/embed/mod.rs":"0c2df4c80a4b9818f4de8e54074098d195eea19bcdd0858097416e67c733c4d9","src/embed/test.rs":"d527b7ce78bd9672057f2f9e2e268b48ffa40ad909fd6ffd119650d5244cf4a9","src/lib.rs":"ff1e87d48bb9549764e5322c54184934da08127f5187ede0db7f138544b00711","src/manifest/mod.rs":"432f4bbf330fe7c5d57876ba38cd789b6a1cd55f5c1cf408674ed153db8293a5","src/manifest/xml.rs":"1bce12120e17a49da43eabbd1b04f712b3f6ece7fcbca9186319e301890e20c5"},"package":"40ff574b0b0a794f8995383bb83f21f8f99214422cae791cb48d66da524b00f7"} +\ No newline at end of file +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/Cargo.toml rustc-1.77.0-src/vendor/embed-manifest/Cargo.toml +--- rustc-1.77.0-src/vendor.orig/embed-manifest/Cargo.toml 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/Cargo.toml 2024-03-25 11:10:27.789193500 -0700 +@@ -0,0 +1,39 @@ ++# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO ++# ++# When uploading crates to the registry Cargo will automatically ++# "normalize" Cargo.toml files for maximal compatibility ++# with all versions of Cargo and also rewrite `path` dependencies ++# to registry (e.g., crates.io) dependencies. ++# ++# If you are reading this file be aware that the original Cargo.toml ++# will likely look very different (and much more reasonable). ++# See Cargo.toml.orig for the original contents. ++ ++[package] ++edition = "2021" ++rust-version = "1.56" ++name = "embed-manifest" ++version = "1.3.1" ++authors = ["Carey Evans "] ++description = "Build script library to easily embed a Windows manifest." ++readme = "README.md" ++keywords = [ ++ "build", ++ "manifest", ++ "windows", ++] ++categories = ["development-tools::build-utils"] ++license = "MIT" ++repository = "https://gitlab.com/careyevans/embed-manifest" ++resolver = "2" ++ ++[dev-dependencies.object] ++version = "0.29.0" ++features = [ ++ "read_core", ++ "coff", ++] ++default-features = false ++ ++[dev-dependencies.tempfile] ++version = "3.3.0" +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/CHANGELOG.md rustc-1.77.0-src/vendor/embed-manifest/CHANGELOG.md +--- rustc-1.77.0-src/vendor.orig/embed-manifest/CHANGELOG.md 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/CHANGELOG.md 2024-03-25 11:10:27.789193500 -0700 +@@ -0,0 +1,49 @@ ++# Changelog ++All notable changes to this project will be documented in this file. ++ ++The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ++and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ++ ++## [1.3.1] - 2022-08-07 ++### Added ++- Format the code with Rustfmt. ++- Assume `gnullvm` target environment should work like `gnu`. ++- Add Windows 11 22H2 SDK version for maxversiontested. ++### Changed ++- Update `object` dependency and simplify unit tests. ++ ++## [1.3.0] - 2022-05-01 ++### Changed ++- Use our own code again to generate COFF object files for GNU targets, but with ++ better knowledge of how such files are structured, reducing dependencies and ++ compile time. ++- Link directly to the COFF object file instead of an archive file with one member. ++### Fixed ++- Make the custom `Error` type public. ++ ++## [1.2.1] - 2022-04-18 ++### Added ++- Add checks for Windows builds to the documentation, for programs that ++ should still build for non-Windows targets. ++ ++## [1.2.0] - 2022-04-17 ++### Added ++- Generate the manifest XML from Rust code rather than requiring the developer ++ to supply a correct manifest file. ++ ++## [1.1.0] - 2022-03-24 ++### Changed ++- Use [Gimli Object](https://crates.io/crates/object) crate to build COFF ++ objects containing resources for GNU targets, removing a lot of magic numbers ++ and generating output more like LLVM `windres`. ++ ++## [1.0.0] - 2021-12-18 ++### Added ++- Initial version. ++ ++[1.0.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.0.0 ++[1.1.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.1.0 ++[1.2.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.2.0 ++[1.2.1]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.2.1 ++[1.3.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.3.0 ++[1.3.1]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.3.1 +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/LICENSE rustc-1.77.0-src/vendor/embed-manifest/LICENSE +--- rustc-1.77.0-src/vendor.orig/embed-manifest/LICENSE 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/LICENSE 2024-03-25 11:10:27.789193500 -0700 +@@ -0,0 +1,23 @@ ++MIT License ++ ++Copyright (c) 2021, 2022 Carey Evans ++ ++All rights reserved. ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy ++of this software and associated documentation files (the "Software"), to deal ++in the Software without restriction, including without limitation the rights ++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++copies of the Software, and to permit persons to whom the Software is ++furnished to do so, subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included in all ++copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++SOFTWARE. +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/README.md rustc-1.77.0-src/vendor/embed-manifest/README.md +--- rustc-1.77.0-src/vendor.orig/embed-manifest/README.md 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/README.md 2024-03-25 11:10:27.789193500 -0700 +@@ -0,0 +1,62 @@ ++Windows Manifest Embedding for Rust ++=================================== ++ ++The `embed-manifest` crate provides a straightforward way to embed ++a Windows manifest in an executable, whatever the build environment, ++without dependencies on external tools from LLVM or MinGW. ++ ++If you need to embed more resources than just a manifest, you may ++find the [winres](https://crates.io/crates/winres) or ++[embed-resource](https://crates.io/crates/embed-resource) ++crates more suitable. They have additional dependencies and setup ++requirements that may make them a little more difficult to use, though. ++ ++ ++Why use it? ++----------- ++ ++The Rust compiler doesn’t add a manifest to a Windows executable, which ++means that it runs with a few compatibility options and settings that ++make it look like the program is running on an older version of Windows. ++By adding an application manifest using this crate, even when cross-compiling: ++ ++- 32-bit programs with names that look like installers don’t try to run ++ as an administrator. ++- 32-bit programs aren’t shown a virtualised view of the filesystem and ++ registry. ++- Many non-Unicode APIs accept UTF-8 strings, the same as Rust uses. ++- The program sees the real Windows version, not Windows Vista. ++- Built-in message boxes and other UI elements can display without blurring ++ on high-DPI monitors. ++- Other features like long path names in APIs can be enabled. ++ ++ ++Usage ++----- ++ ++To embed a default manifest, include this code in a `build.rs` build ++script: ++ ++```rust ++use embed_manifest::{embed_manifest, new_manifest}; ++ ++fn main() { ++ if std::env::var_os("CARGO_CFG_WINDOWS").is_some() { ++ embed_manifest(new_manifest("Contoso.Sample")) ++ .expect("unable to embed manifest file"); ++ } ++ println!("cargo:rerun-if-changed=build.rs"); ++} ++``` ++ ++See the [crate documentation](https://docs.rs/embed-manifest) for ++information about how to customise the embedded manifest. ++ ++ ++License ++------- ++ ++For the avoidance of doubt, while this crate itself is licensed to ++you under the MIT License, this does not affect the copyright status ++and licensing of your own code when this is used from a Cargo build ++script. +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/rustfmt.toml rustc-1.77.0-src/vendor/embed-manifest/rustfmt.toml +--- rustc-1.77.0-src/vendor.orig/embed-manifest/rustfmt.toml 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/rustfmt.toml 2024-03-25 11:10:27.790696600 -0700 +@@ -0,0 +1,2 @@ ++max_width = 132 ++newline_style = "Unix" +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/sample.exe.manifest rustc-1.77.0-src/vendor/embed-manifest/sample.exe.manifest +--- rustc-1.77.0-src/vendor.orig/embed-manifest/sample.exe.manifest 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/sample.exe.manifest 2024-03-25 11:10:27.790696600 -0700 +@@ -0,0 +1,11 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +\ No newline at end of file +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/coff.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/coff.rs +--- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/coff.rs 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/coff.rs 2024-03-25 11:10:27.790696600 -0700 +@@ -0,0 +1,288 @@ ++//! Just as much COFF object file support as is needed to write a resource data segment ++//! for GNU Windows targets. Inspired by the `write::Object` code from the `object` crate. ++//! ++//! Integers are converted from u64 to u32 and added without checking because the manifest ++//! data cannot get anywhere close to overflowing unless the supplied application name or ++//! number of dependencies was extremely long. If this code was used more generally or if ++//! the input was less trustworthy then more checked conversions and checked arithmetic ++//! would be needed. ++ ++use std::io::{self, Seek, SeekFrom, Write}; ++use std::time::SystemTime; ++ ++#[derive(Debug, Clone, Copy)] ++pub enum MachineType { ++ I386, ++ X86_64, ++ Aarch64, ++} ++ ++impl MachineType { ++ pub fn machine(&self) -> u16 { ++ match self { ++ Self::I386 => 0x014c, ++ Self::X86_64 => 0x8664, ++ Self::Aarch64 => 0xaa64, ++ } ++ } ++ ++ pub fn relocation_type(&self) -> u16 { ++ match self { ++ Self::I386 => 7, ++ Self::X86_64 => 3, ++ Self::Aarch64 => 2, ++ } ++ } ++} ++ ++pub struct CoffWriter { ++ /// wrapped writer or buffer ++ writer: W, ++ /// machine type for file header ++ machine_type: MachineType, ++ /// details for section table ++ sections: Vec
, ++ /// details for non-section symbols in symbol table ++ symbols: Vec, ++ /// 0-based section currently being written ++ current_section: u16, ++} ++ ++impl CoffWriter { ++ /// Create a new instance wrapping a writer. ++ pub fn new(writer: W, machine_type: MachineType, section_count: u16) -> Self { ++ let mut sections = Vec::new(); ++ sections.resize_with(section_count as usize, Section::new); ++ Self { ++ writer, ++ machine_type, ++ sections, ++ symbols: Vec::new(), ++ current_section: 0, ++ } ++ } ++ ++ fn section(&mut self) -> &mut Section { ++ &mut self.sections[self.current_section as usize] ++ } ++ ++ /// Add a symbol to be updated when its section and address are known. ++ pub fn add_symbol(&mut self, name: &[u8; 8]) -> u32 { ++ let index = self.symbols.len() as u32; ++ self.symbols.push(Symbol { ++ name: *name, ++ value: 0, ++ section: 0, ++ }); ++ index ++ } ++ ++ /// Set a symbol to the current offset in a section. ++ pub fn set_symbol(&mut self, symbol_index: u32) { ++ let mut symbol = &mut self.symbols[symbol_index as usize]; ++ symbol.value = self.sections[self.current_section as usize].size_of_raw_data; ++ symbol.section = self.current_section + 1; ++ } ++} ++ ++impl CoffWriter { ++ pub fn start_section(&mut self, name: &[u8; 8]) -> io::Result<()> { ++ // Add space for file header and section table if this is the first section. ++ if self.current_section == 0 && self.sections[0].name == [0; 8] { ++ self.writer.write_all(&[0; 20])?; ++ for _ in 0..self.sections.len() { ++ self.writer.write_all(&[0; 40])?; ++ } ++ } else { ++ self.current_section += 1; ++ } ++ ++ // Save the section name for later. ++ self.section().name = *name; ++ Ok(()) ++ } ++ ++ /// Pad the current file position to a multiple of four bytes ++ /// and save it as the section's start position. ++ fn align_section(&mut self) -> io::Result<()> { ++ let position = self.writer.stream_position()? as u32; ++ let offset = (position & 3) as u32; ++ if offset != 0 { ++ let padding = 4 - offset; ++ self.writer.write_all(&[0; 4][0..(padding as usize)])?; ++ self.section().pointer_to_raw_data = position + padding; ++ } else { ++ self.section().pointer_to_raw_data = position; ++ } ++ Ok(()) ++ } ++ ++ /// Add data to a section and return its offset within the section. ++ pub fn add_data(&mut self, data: &[u8]) -> io::Result { ++ let start = self.section().size_of_raw_data; ++ if start == 0 { ++ self.align_section()?; ++ } ++ self.writer.write_all(data)?; ++ self.section().size_of_raw_data = start + data.len() as u32; ++ Ok(start) ++ } ++ ++ /// Write a relocation for a symbol at the end of the section. ++ pub fn relocation(&mut self, address: u32, symbol_index: u32) -> io::Result<()> { ++ self.section().number_of_relocations += 1; ++ self.writer.write_all(&address.to_le_bytes())?; ++ self.writer.write_all(&symbol_index.to_le_bytes())?; ++ self.writer.write_all(&self.machine_type.relocation_type().to_le_bytes()) ++ } ++ ++ /// Write the object and section headers and write the symbol table. ++ pub fn finish(mut self) -> io::Result { ++ // Copy values for the header. ++ let number_of_sections = self.sections.len() as u16; ++ let timestamp = SystemTime::now() ++ .duration_since(SystemTime::UNIX_EPOCH) ++ .map_or(0, |d| d.as_secs() as u32); ++ let pointer_to_symbol_table = self.writer.stream_position()? as u32; ++ let number_of_symbols = (2 * self.sections.len() + self.symbols.len()) as u32; ++ ++ // Write the normal symbols. ++ for symbol in self.symbols { ++ self.writer.write_all(&symbol.name)?; ++ self.writer.write_all(&symbol.value.to_le_bytes())?; ++ self.writer.write_all(&symbol.section.to_le_bytes())?; ++ self.writer.write_all(&[0, 0, 6, 0])?; ++ } ++ ++ // Write the symbols and auxiliary data for sections. ++ for (i, section) in self.sections.iter().enumerate() { ++ self.writer.write_all(§ion.name)?; ++ self.writer.write_all(&[0, 0, 0, 0])?; ++ self.writer.write_all(&((i + 1) as u16).to_le_bytes())?; ++ self.writer.write_all(&[0, 0, 3, 1])?; ++ self.writer.write_all(§ion.pointer_to_raw_data.to_le_bytes())?; ++ self.writer.write_all(§ion.number_of_relocations.to_le_bytes())?; ++ self.writer.write_all(&[0; 12])?; ++ } ++ ++ // Write the empty string table. ++ self.writer.write_all(&[0; 4])?; ++ ++ // Write the object header. ++ let end_of_file = self.writer.seek(SeekFrom::Start(0))?; ++ self.writer.write_all(&self.machine_type.machine().to_le_bytes())?; ++ self.writer.write_all(&number_of_sections.to_le_bytes())?; ++ self.writer.write_all(×tamp.to_le_bytes())?; ++ self.writer.write_all(&pointer_to_symbol_table.to_le_bytes())?; ++ self.writer.write_all(&number_of_symbols.to_le_bytes())?; ++ self.writer.write_all(&[0; 4])?; // optional header size = 0, characteristics = 0 ++ ++ // Update the section headers. ++ for section in self.sections.iter() { ++ self.writer.write_all(§ion.name)?; ++ self.writer.write_all(&[0; 8])?; // virtual size = 0 and virtual address = 0 ++ self.writer.write_all(§ion.size_of_raw_data.to_le_bytes())?; ++ self.writer.write_all(§ion.pointer_to_raw_data.to_le_bytes())?; ++ self.writer.write_all(§ion.pointer_to_relocations().to_le_bytes())?; ++ self.writer.write_all(&[0; 4])?; // pointer to line numbers ++ self.writer.write_all(§ion.number_of_relocations.to_le_bytes())?; ++ self.writer.write_all(&[0; 2])?; // number of line numbers ++ self.writer.write_all(&[0x40, 0, 0x30, 0xc0])?; // characteristics ++ } ++ ++ // Return the inner writer and dispose of this object. ++ self.writer.seek(SeekFrom::Start(end_of_file))?; ++ Ok(self.writer) ++ } ++} ++ ++/// Details for writing the section table at the start of the file. ++struct Section { ++ name: [u8; 8], ++ size_of_raw_data: u32, ++ pointer_to_raw_data: u32, ++ number_of_relocations: u16, ++} ++ ++impl Section { ++ fn new() -> Self { ++ Section { ++ name: [0; 8], ++ size_of_raw_data: 0, ++ pointer_to_raw_data: 0, ++ number_of_relocations: 0, ++ } ++ } ++ ++ fn pointer_to_relocations(&self) -> u32 { ++ if self.number_of_relocations == 0 { ++ 0 ++ } else { ++ // assume there is some data if there are some relocations ++ self.pointer_to_raw_data + self.size_of_raw_data ++ } ++ } ++} ++ ++/// Details of a non-section symbol to write at the end of the file. ++/// ++/// Note that `section` is a 1-based index here. ++struct Symbol { ++ name: [u8; 8], ++ value: u32, ++ section: u16, ++} ++ ++/// Returns the bytes for a resource directory table. ++/// ++/// Most of the fields are set to zero, including the timestamp, to aid ++/// with making builds reproducible. ++/// ++/// ```c ++/// typedef struct { ++/// DWORD Characteristics, ++/// DWORD TimeDateStamp, ++/// WORD MajorVersion, ++/// WORD MinorVersion, ++/// WORD NumberOfNamedEntries, ++/// WORD NumberOfIdEntries ++/// } IMAGE_RESOURCE_DIRECTORY; ++/// ``` ++pub fn resource_directory_table(number_of_id_entries: u16) -> [u8; 16] { ++ let mut table = [0; 16]; ++ table[14..16].copy_from_slice(&number_of_id_entries.to_le_bytes()); ++ table ++} ++ ++/// Returns the bytes for a resource directory entry for an ID. ++/// ++/// ```c ++/// typedef struct { ++/// DWORD Name, ++/// DWORD OffsetToData ++/// } IMAGE_RESOURCE_DIRECTORY_ENTRY; ++/// ``` ++pub fn resource_directory_id_entry(id: u32, offset: u32, subdirectory: bool) -> [u8; 8] { ++ let mut entry = [0; 8]; ++ entry[0..4].copy_from_slice(&id.to_le_bytes()); ++ let flag: u32 = if subdirectory { 0x80000000 } else { 0 }; ++ entry[4..8].copy_from_slice(&((offset & 0x7fffffff) | flag).to_le_bytes()); ++ entry ++} ++ ++/// Returns the bytes for a resource data entry. ++/// ++/// ```c ++/// typedef struct { ++/// DWORD OffsetToData, ++/// DWORD Size, ++/// DWORD CodePage, ++/// DWORD Reserved ++/// } IMAGE_RESOURCE_DATA_ENTRY; ++/// ``` ++pub fn resource_data_entry(rva: u32, size: u32) -> [u8; 16] { ++ let mut entry = [0; 16]; ++ entry[0..4].copy_from_slice(&rva.to_le_bytes()); ++ entry[4..8].copy_from_slice(&size.to_le_bytes()); ++ entry ++} +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/error.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/error.rs +--- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/error.rs 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/error.rs 2024-03-25 11:10:27.790696600 -0700 +@@ -0,0 +1,57 @@ ++//! Error handling for application manifest embedding. ++ ++use std::fmt::{self, Display, Formatter}; ++use std::io::{self, ErrorKind}; ++ ++/// The error type which is returned when application manifest embedding fails. ++#[derive(Debug)] ++pub struct Error { ++ repr: Repr, ++} ++ ++#[derive(Debug)] ++enum Repr { ++ IoError(io::Error), ++ UnknownTarget, ++} ++ ++impl Error { ++ pub(crate) fn unknown_target() -> Error { ++ Error { ++ repr: Repr::UnknownTarget, ++ } ++ } ++} ++ ++impl Display for Error { ++ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { ++ match self.repr { ++ Repr::IoError(ref e) => write!(f, "I/O error: {}", e), ++ Repr::UnknownTarget => f.write_str("unknown target"), ++ } ++ } ++} ++ ++impl std::error::Error for Error { ++ fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { ++ match self.repr { ++ Repr::IoError(ref e) => Some(e), ++ _ => None, ++ } ++ } ++} ++ ++impl From for Error { ++ fn from(e: io::Error) -> Self { ++ Error { repr: Repr::IoError(e) } ++ } ++} ++ ++impl From for io::Error { ++ fn from(e: Error) -> Self { ++ match e.repr { ++ Repr::IoError(ioe) => ioe, ++ _ => io::Error::new(ErrorKind::Other, e), ++ } ++ } ++} +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/mod.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/mod.rs +--- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/mod.rs 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/mod.rs 2024-03-25 11:10:27.790696600 -0700 +@@ -0,0 +1,142 @@ ++use std::env; ++use std::fs::{self, File}; ++use std::io::{self, stdout, BufWriter, Cursor, Write}; ++use std::path::{Path, PathBuf}; ++ ++use crate::manifest::ManifestBuilder; ++ ++use self::coff::{resource_data_entry, resource_directory_id_entry, resource_directory_table, CoffWriter, MachineType}; ++use self::error::Error; ++ ++mod coff; ++pub mod error; ++ ++#[cfg(test)] ++mod test; ++ ++/// Embeds the manifest described by `manifest` by converting it to XML, ++/// then saving it to a file and passing the correct options to the linker ++/// on MSVC targets, or by building a static library and instructing Cargo ++/// to link the executable against it on GNU targets. ++pub fn embed_manifest(manifest: ManifestBuilder) -> Result<(), Error> { ++ let out_dir = get_out_dir()?; ++ let target = get_target()?; ++ if matches!(target.os, TargetOs::WindowsMsvc) { ++ let manifest_file = out_dir.join("manifest.xml"); ++ write!(BufWriter::new(File::create(&manifest_file)?), "{}", manifest)?; ++ link_manifest_msvc(&manifest_file, &mut stdout().lock()) ++ } else { ++ let manifest_data = manifest.to_string(); ++ link_manifest_gnu(manifest_data.as_bytes(), &out_dir, target.arch, &mut stdout().lock()) ++ } ++} ++ ++/// Directly embeds the manifest in the provided `file` by passing the correct ++/// options to the linker on MSVC targets, or by building a static library ++/// and instructing Cargo to link the executable against it on GNU targets. ++pub fn embed_manifest_file>(file: P) -> Result<(), io::Error> { ++ let out_dir = get_out_dir()?; ++ let target = get_target()?; ++ if matches!(target.os, TargetOs::WindowsMsvc) { ++ Ok(link_manifest_msvc(file.as_ref(), &mut stdout().lock())?) ++ } else { ++ let manifest = fs::read(file.as_ref())?; ++ Ok(link_manifest_gnu(&manifest, &out_dir, target.arch, &mut stdout().lock())?) ++ } ++} ++ ++fn get_out_dir() -> Result { ++ match env::var_os("OUT_DIR") { ++ Some(dir) => Ok(PathBuf::from(dir)), ++ None => env::current_dir(), ++ } ++} ++ ++enum TargetOs { ++ WindowsGnu, ++ WindowsMsvc, ++} ++ ++struct Target { ++ arch: MachineType, ++ os: TargetOs, ++} ++ ++fn get_target() -> Result { ++ match env::var("TARGET") { ++ Ok(target) => parse_target(&target), ++ _ => Err(Error::unknown_target()), ++ } ++} ++ ++fn parse_target(target: &str) -> Result { ++ let mut iter = target.splitn(3, '-'); ++ let arch = match iter.next() { ++ Some("i686") => MachineType::I386, ++ Some("aarch64") => MachineType::Aarch64, ++ Some("x86_64") => MachineType::X86_64, ++ _ => return Err(Error::unknown_target()), ++ }; ++ if iter.next() != Some("pc") { ++ return Err(Error::unknown_target()); ++ } ++ let os = match iter.next() { ++ Some("windows-gnu") => TargetOs::WindowsGnu, ++ Some("windows-gnullvm") => TargetOs::WindowsGnu, ++ Some("windows-msvc") => TargetOs::WindowsMsvc, ++ _ => return Err(Error::unknown_target()), ++ }; ++ Ok(Target { arch, os }) ++} ++ ++fn link_manifest_msvc(manifest_path: &Path, out: &mut W) -> Result<(), Error> { ++ writeln!(out, "cargo:rustc-link-arg-bins=/MANIFEST:EMBED")?; ++ writeln!( ++ out, ++ "cargo:rustc-link-arg-bins=/MANIFESTINPUT:{}", ++ manifest_path.canonicalize()?.display() ++ )?; ++ writeln!(out, "cargo:rustc-link-arg-bins=/MANIFESTUAC:NO")?; ++ Ok(()) ++} ++ ++fn link_manifest_gnu(manifest: &[u8], out_dir: &Path, arch: MachineType, out: &mut W) -> Result<(), Error> { ++ // Generate a COFF object file containing the manifest in a .rsrc section. ++ let object_data = create_object_file(manifest, arch)?; ++ let path = out_dir.join("embed-manifest.o"); ++ fs::create_dir_all(out_dir)?; ++ fs::write(&path, &object_data)?; ++ ++ // Link the manifest with the executable. ++ writeln!(out, "cargo:rustc-link-arg-bins={}", path.display())?; ++ Ok(()) ++} ++ ++fn create_object_file(manifest: &[u8], arch: MachineType) -> Result, io::Error> { ++ // Start object file with two sections to be combined by the linker. ++ let mut obj = CoffWriter::new(Cursor::new(Vec::with_capacity(4096)), arch, 2); ++ ++ // Define a symbol for the manifest data. ++ let symbol_index = obj.add_symbol(b"$R000000"); ++ ++ // Create resource directories for type ID 24, name ID 1, language ID 1033. ++ obj.start_section(b".rsrc$01")?; ++ obj.add_data(&resource_directory_table(1))?; ++ obj.add_data(&resource_directory_id_entry(24, 24, true))?; ++ obj.add_data(&resource_directory_table(1))?; ++ obj.add_data(&resource_directory_id_entry(1, 48, true))?; ++ obj.add_data(&resource_directory_table(1))?; ++ obj.add_data(&resource_directory_id_entry(1033, 72, false))?; ++ ++ // Add resource data entry with relocation of its address to the defined symbol. ++ let address = obj.add_data(&resource_data_entry(0, manifest.len() as u32))?; ++ obj.relocation(address, symbol_index)?; ++ ++ // Add the manifest data to the resource data section. ++ obj.start_section(b".rsrc$02")?; ++ obj.set_symbol(symbol_index); ++ obj.add_data(manifest)?; ++ ++ // Finish writing and return the populated object data. ++ Ok(obj.finish()?.into_inner()) ++} +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/test.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/test.rs +--- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/test.rs 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/test.rs 2024-03-25 11:10:27.791701600 -0700 +@@ -0,0 +1,177 @@ ++use std::fs; ++use std::path::{Path, PathBuf}; ++ ++use object::coff::CoffFile; ++use object::pe::{ImageResourceDataEntry, ImageResourceDirectory, ImageResourceDirectoryEntry, IMAGE_RESOURCE_DATA_IS_DIRECTORY}; ++use object::{ ++ pod, Architecture, LittleEndian, Object, ObjectSection, ObjectSymbol, RelocationEncoding, RelocationKind, SectionKind, ++}; ++use tempfile::{tempdir, TempDir}; ++ ++use crate::embed::coff::MachineType; ++use crate::embed::{create_object_file, link_manifest_gnu, link_manifest_msvc, TargetOs}; ++use crate::new_manifest; ++ ++#[test] ++fn create_obj() { ++ let res = do_embed_file(MachineType::X86_64, TargetOs::WindowsGnu); ++ let data = fs::read(&res.object_file()).unwrap(); ++ let obj = CoffFile::parse(&data[..]).unwrap(); ++ assert_eq!(obj.architecture(), Architecture::X86_64); ++ let expected_manifest = fs::read(&sample_manifest_path()).unwrap(); ++ check_object_file(obj, &expected_manifest); ++} ++ ++#[test] ++fn link_lib_gnu() { ++ let res = do_embed_file(MachineType::X86_64, TargetOs::WindowsGnu); ++ assert!(res.object_file().exists()); ++ let object_option = format!("cargo:rustc-link-arg-bins={}", res.object_file().display()); ++ assert_eq!(res.lines(), &[object_option.as_str()]); ++} ++ ++#[test] ++fn link_file_msvc() { ++ let res = do_embed_file(MachineType::X86_64, TargetOs::WindowsMsvc); ++ assert!(!res.object_file().exists()); ++ let mut input_option = String::from("cargo:rustc-link-arg-bins=/MANIFESTINPUT:"); ++ input_option.push_str(res.manifest_path.canonicalize().unwrap().to_str().unwrap()); ++ assert_eq!( ++ res.lines(), ++ &[ ++ "cargo:rustc-link-arg-bins=/MANIFEST:EMBED", ++ input_option.as_str(), ++ "cargo:rustc-link-arg-bins=/MANIFESTUAC:NO" ++ ] ++ ); ++} ++ ++struct EmbedResult { ++ manifest_path: PathBuf, ++ out_dir: TempDir, ++ output: String, ++} ++ ++impl EmbedResult { ++ fn object_file(&self) -> PathBuf { ++ self.out_dir.path().join("embed-manifest.o") ++ } ++ ++ fn lines(&self) -> Vec<&str> { ++ self.output.lines().collect() ++ } ++} ++ ++fn sample_manifest_path() -> PathBuf { ++ Path::new(env!("CARGO_MANIFEST_DIR")).join("sample.exe.manifest") ++} ++ ++fn do_embed_file(arch: MachineType, os: TargetOs) -> EmbedResult { ++ let manifest_path = sample_manifest_path(); ++ let out_dir = tempdir().unwrap(); ++ let mut buf: Vec = Vec::new(); ++ if matches!(os, TargetOs::WindowsMsvc) { ++ link_manifest_msvc(&manifest_path, &mut buf).unwrap(); ++ } else { ++ link_manifest_gnu(&fs::read(&manifest_path).unwrap(), out_dir.path(), arch, &mut buf).unwrap(); ++ } ++ EmbedResult { ++ manifest_path, ++ out_dir, ++ output: String::from_utf8(buf).unwrap(), ++ } ++} ++ ++#[test] ++fn object_file_x86() { ++ let manifest = new_manifest("Test.X86").to_string().into_bytes(); ++ let file = create_object_file(&manifest, MachineType::I386).unwrap(); ++ let obj = CoffFile::parse(&file[..]).unwrap(); ++ assert_eq!(obj.architecture(), Architecture::I386); ++ check_object_file(obj, &manifest); ++} ++ ++#[test] ++fn object_file_x86_64() { ++ let manifest = new_manifest("Test.X86_64").to_string().into_bytes(); ++ let file = create_object_file(&manifest, MachineType::X86_64).unwrap(); ++ let obj = CoffFile::parse(&file[..]).unwrap(); ++ assert_eq!(obj.architecture(), Architecture::X86_64); ++ check_object_file(obj, &manifest); ++} ++ ++#[test] ++fn object_file_aarch64() { ++ let manifest = new_manifest("Test.AARCH64").to_string().into_bytes(); ++ let file = create_object_file(&manifest, MachineType::Aarch64).unwrap(); ++ let obj = CoffFile::parse(&file[..]).unwrap(); ++ assert_eq!(obj.architecture(), Architecture::Aarch64); ++ check_object_file(obj, &manifest); ++} ++ ++fn check_object_file(obj: CoffFile, expected_manifest: &[u8]) { ++ // There should be two sections `.rsrc$01` and `.rsrc$02. ++ assert_eq!( ++ obj.sections().map(|s| s.name().unwrap().to_string()).collect::>(), ++ &[".rsrc$01", ".rsrc$02"] ++ ); ++ ++ // There should be two section symbols and one for relocation. ++ assert_eq!( ++ obj.symbols().map(|s| s.name().unwrap().to_string()).collect::>(), ++ &["$R000000", ".rsrc$01", ".rsrc$02"] ++ ); ++ ++ // The resource sections must be data sections. ++ let rsrc01 = obj.section_by_name(".rsrc$01").unwrap(); ++ let rsrc02 = obj.section_by_name(".rsrc$02").unwrap(); ++ assert_eq!(rsrc01.address(), 0); ++ assert_eq!(rsrc01.kind(), SectionKind::Data); ++ assert_eq!(rsrc02.address(), 0); ++ assert_eq!(rsrc02.kind(), SectionKind::Data); ++ ++ // The data RVA in the resource data entry must be relocatable. ++ let (addr, reloc) = rsrc01.relocations().next().unwrap(); ++ assert_eq!(reloc.kind(), RelocationKind::ImageOffset); ++ assert_eq!(reloc.encoding(), RelocationEncoding::Generic); ++ assert_eq!(addr, 0x48); // size of the directory table, three directories, and no strings ++ assert_eq!(reloc.addend(), 0); ++ ++ // The resource directory contains one manifest resource type subdirectory. ++ let data = rsrc01.data().unwrap(); ++ let (dir, rest) = pod::from_bytes::(data).unwrap(); ++ assert_eq!(0, dir.number_of_named_entries.get(LittleEndian)); ++ assert_eq!(1, dir.number_of_id_entries.get(LittleEndian)); ++ let (entries, _) = pod::slice_from_bytes::(rest, 1).unwrap(); ++ assert_eq!(24, entries[0].name_or_id.get(LittleEndian)); ++ let offset = entries[0].offset_to_data_or_directory.get(LittleEndian); ++ assert_eq!(IMAGE_RESOURCE_DATA_IS_DIRECTORY, offset & IMAGE_RESOURCE_DATA_IS_DIRECTORY); ++ let offset = (offset & !IMAGE_RESOURCE_DATA_IS_DIRECTORY) as usize; ++ ++ // The manifest subdirectory contains one image (not DLL) manifest subdirectory. ++ let (dir, rest) = pod::from_bytes::(&data[offset..]).unwrap(); ++ assert_eq!(0, dir.number_of_named_entries.get(LittleEndian)); ++ assert_eq!(1, dir.number_of_id_entries.get(LittleEndian)); ++ let (entries, _) = pod::slice_from_bytes::(rest, 1).unwrap(); ++ assert_eq!(1, entries[0].name_or_id.get(LittleEndian)); ++ let offset = entries[0].offset_to_data_or_directory.get(LittleEndian); ++ assert_eq!(IMAGE_RESOURCE_DATA_IS_DIRECTORY, offset & IMAGE_RESOURCE_DATA_IS_DIRECTORY); ++ let offset = (offset & !IMAGE_RESOURCE_DATA_IS_DIRECTORY) as usize; ++ ++ // The image manifest subdirectory contains one US English manifest data entry. ++ let (dir, rest) = pod::from_bytes::(&data[offset..]).unwrap(); ++ assert_eq!(0, dir.number_of_named_entries.get(LittleEndian)); ++ assert_eq!(1, dir.number_of_id_entries.get(LittleEndian)); ++ let (entries, _) = pod::slice_from_bytes::(rest, 1).unwrap(); ++ assert_eq!(0x0409, entries[0].name_or_id.get(LittleEndian)); ++ let offset = entries[0].offset_to_data_or_directory.get(LittleEndian); ++ assert_eq!(0, offset & IMAGE_RESOURCE_DATA_IS_DIRECTORY); ++ let offset = offset as usize; ++ ++ // The manifest data matches what was added. ++ let (entry, _) = pod::from_bytes::(&data[offset..]).unwrap(); ++ let end = entry.size.get(LittleEndian) as usize; ++ let resource_data = rsrc02.data().unwrap(); ++ let manifest = &resource_data[..end]; ++ assert_eq!(manifest, expected_manifest); ++} +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/lib.rs rustc-1.77.0-src/vendor/embed-manifest/src/lib.rs +--- rustc-1.77.0-src/vendor.orig/embed-manifest/src/lib.rs 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/src/lib.rs 2024-03-25 11:10:27.791701600 -0700 +@@ -0,0 +1,128 @@ ++//! The `embed-manifest` crate provides a straightforward way to embed ++//! a Windows manifest in an executable, whatever the build environment ++//! and even when cross-compiling, without dependencies on external ++//! tools from LLVM or MinGW. ++//! ++//! This should be called from a [build script][1], as shown below. ++//! ++//! [1]: https://doc.rust-lang.org/cargo/reference/build-scripts.html ++//! ++//! On MSVC targets, the manifest file is embedded in the executable by ++//! instructing Cargo to pass `/MANIFEST` options to `LINK.EXE`. This ++//! requires Cargo from Rust 1.56. ++//! ++//! On GNU targets, the manifest file is added as a resource in a COFF ++//! object file, and Cargo is instructed to link this file into the ++//! executable, also using functionality from Rust 1.56. ++//! ++//! # Usage ++//! ++//! This crate should be added to the `[build-dependencies]` section in ++//! your executable’s `Cargo.toml`: ++//! ++//! ```toml ++//! [build-dependencies] ++//! embed-manifest = "1.3.1" ++//! ``` ++//! ++//! In the same directory, create a `build.rs` file to call this crate’s ++//! code when building for Windows, and to only run once: ++//! ++//! ``` ++//! use embed_manifest::{embed_manifest, new_manifest}; ++//! ++//! fn main() { ++//! # let tempdir = tempfile::tempdir().unwrap(); ++//! # std::env::set_var("OUT_DIR", tempdir.path()); ++//! # std::env::set_var("TARGET", "x86_64-pc-windows-gnu"); ++//! # std::env::set_var("CARGO_CFG_WINDOWS", ""); ++//! if std::env::var_os("CARGO_CFG_WINDOWS").is_some() { ++//! embed_manifest(new_manifest("Contoso.Sample")).expect("unable to embed manifest file"); ++//! } ++//! println!("cargo:rerun-if-changed=build.rs"); ++//! } ++//! ``` ++//! ++//! To customise the application manifest, use the methods on it to change things like ++//! enabling the segment heap: ++//! ++//! ``` ++//! use embed_manifest::{embed_manifest, new_manifest, manifest::HeapType}; ++//! ++//! fn main() { ++//! # let tempdir = tempfile::tempdir().unwrap(); ++//! # std::env::set_var("OUT_DIR", tempdir.path()); ++//! # std::env::set_var("TARGET", "x86_64-pc-windows-gnu"); ++//! # std::env::set_var("CARGO_CFG_WINDOWS", ""); ++//! if std::env::var_os("CARGO_CFG_WINDOWS").is_some() { ++//! embed_manifest(new_manifest("Contoso.Sample").heap_type(HeapType::SegmentHeap)) ++//! .expect("unable to embed manifest file"); ++//! } ++//! println!("cargo:rerun-if-changed=build.rs"); ++//! } ++//! ``` ++//! ++//! or making it always use legacy single-byte API encoding and only declaring compatibility ++//! up to Windows 8.1, without checking whether this is a Windows build: ++//! ++//! ``` ++//! use embed_manifest::{embed_manifest, new_manifest}; ++//! use embed_manifest::manifest::{ActiveCodePage::Legacy, SupportedOS::*}; ++//! ++//! fn main() { ++//! # let tempdir = tempfile::tempdir().unwrap(); ++//! # std::env::set_var("OUT_DIR", tempdir.path()); ++//! # std::env::set_var("TARGET", "x86_64-pc-windows-gnu"); ++//! let manifest = new_manifest("Contoso.Sample") ++//! .active_code_page(Legacy) ++//! .supported_os(Windows7..=Windows81); ++//! embed_manifest(manifest).expect("unable to embed manifest file"); ++//! println!("cargo:rerun-if-changed=build.rs"); ++//! } ++//! ``` ++ ++#![allow(clippy::needless_doctest_main)] ++ ++pub use embed::error::Error; ++pub use embed::{embed_manifest, embed_manifest_file}; ++ ++use crate::manifest::ManifestBuilder; ++ ++mod embed; ++pub mod manifest; ++ ++/// Creates a new [`ManifestBuilder`] with sensible defaults, allowing customisation ++/// before the Windows application manifest XML is generated. ++/// ++/// The initial values used by the manifest are: ++/// - Version number from the `CARGO_PKG_VERSION_MAJOR`, `CARGO_PKG_VERSION_MINOR` and ++/// `CARGO_PKG_VERSION_PATCH` environment variables. This can then be changed with ++/// [`version()`][ManifestBuilder::version]. ++/// - A dependency on version 6 of the Common Controls so that message boxes and dialogs ++/// will use the latest design, and have the best available support for high DPI displays. ++/// This can be removed with ++/// [`remove_dependency`][ManifestBuilder::remove_dependency]. ++/// - [Compatible with Windows from 7 to 11][ManifestBuilder::supported_os], ++/// matching the Rust compiler [tier 1 targets][tier1]. ++/// - A “[maximum version tested][ManifestBuilder::max_version_tested]” of Windows 10 ++/// version 1903. ++/// - An [active code page][ManifestBuilder::active_code_page] of UTF-8, so that ++/// single-byte Windows APIs will generally interpret Rust strings correctly, starting ++/// from Windows 10 version 1903. ++/// - [Version 2 of per-monitor high DPI awareness][manifest::DpiAwareness::PerMonitorV2Only], ++/// so that user interface elements can be scaled correctly by the application and ++/// Common Controls from Windows 10 version 1703. ++/// - [Long path awareness][ManifestBuilder::long_path_aware] from Windows 10 version ++/// 1607 [when separately enabled][longpaths]. ++/// - [Printer driver isolation][ManifestBuilder::printer_driver_isolation] enabled ++/// to improve reliability and security. ++/// - An [execution level][ManifestBuilder::requested_execution_level] of “as invoker” ++/// so that the UAC elevation dialog will never be displayed, regardless of the name ++/// of the program, and [UAC Virtualisation][uac] is disabled in 32-bit programs. ++/// ++/// [tier1]: https://doc.rust-lang.org/nightly/rustc/platform-support.html ++/// [longpaths]: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later ++/// [uac]: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works#virtualization ++pub fn new_manifest(name: &str) -> ManifestBuilder { ++ ManifestBuilder::new(name) ++} +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/mod.rs rustc-1.77.0-src/vendor/embed-manifest/src/manifest/mod.rs +--- rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/mod.rs 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/src/manifest/mod.rs 2024-03-25 11:10:27.791701600 -0700 +@@ -0,0 +1,789 @@ ++//! A builder for Windows application manifest XML files. ++//! ++//! This module allows the construction of application manifests from code with the ++//! [`ManifestBuilder`], for use from a Cargo build script. Once configured, the builder ++//! should be passed to [`embed_manifest()`][crate::embed_manifest] to generate the ++//! correct instructions for Cargo. For any other use, the builder will output the XML ++//! when formatted for [`Display`], or with [`to_string()`][ToString]. For more ++//! information about the different elements of an application manifest, see ++//! [Application Manifests][1] in the Microsoft Windows App Development documentation. ++//! ++//! [1]: https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests ++//! ++//! To generate the manifest XML separately, the XML can be output with `write!` or ++//! copied to a string with [`to_string()`][ToString]. To produce the manifest XML with ++//! extra whitespace for formatting, format it with the ‘alternate’ flag: ++//! ++//! ``` ++//! # use embed_manifest::new_manifest; ++//! let mut builder = new_manifest("Company.OrgUnit.Program"); ++//! assert!(format!("{:#}", builder).lines().eq(r#" ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! UTF-8 ++//! permonitorv2 ++//! true ++//! true ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! ++//! "#.lines())) ++//! ``` ++ ++use std::fmt::{Display, Formatter}; ++use std::ops::RangeBounds; ++use std::{env, fmt}; ++ ++use crate::manifest::xml::XmlFormatter; ++ ++mod xml; ++ ++/// An opaque container to describe the Windows application manifest for the ++/// executable. A new instance with reasonable defaults is created with ++/// [`new_manifest()`][crate::new_manifest]. ++#[derive(Debug)] ++pub struct ManifestBuilder { ++ identity: AssemblyIdentity, ++ dependent_assemblies: Vec, ++ compatibility: ApplicationCompatibility, ++ windows_settings: WindowsSettings, ++ requested_execution_level: RequestedExecutionLevel, ++} ++ ++impl ManifestBuilder { ++ pub(crate) fn new(name: &str) -> Self { ++ ManifestBuilder { ++ identity: AssemblyIdentity::application(name), ++ dependent_assemblies: vec![AssemblyIdentity::new( ++ "Microsoft.Windows.Common-Controls", ++ [6, 0, 0, 0], ++ 0x6595b64144ccf1df, ++ )], ++ compatibility: ApplicationCompatibility { ++ max_version_tested: Some(MaxVersionTested::Windows10Version1903), ++ supported_os: vec![ ++ SupportedOS::Windows7, ++ SupportedOS::Windows8, ++ SupportedOS::Windows81, ++ SupportedOS::Windows10, ++ ], ++ }, ++ windows_settings: WindowsSettings::new(), ++ requested_execution_level: RequestedExecutionLevel { ++ level: ExecutionLevel::AsInvoker, ++ ui_access: false, ++ }, ++ } ++ } ++ ++ /// Set the four-part application version number in the manifest. ++ pub fn version(mut self, major: u16, minor: u16, build: u16, revision: u16) -> Self { ++ self.identity.version = Version(major, minor, build, revision); ++ self ++ } ++ ++ /// Add a dependency on a specific version of a side-by-side assembly ++ /// to the application manifest. For more information on side-by-side ++ /// assemblies, see [Using Side-by-side Assemblies][sxs]. ++ /// ++ /// [sxs]: https://docs.microsoft.com/en-us/windows/win32/sbscs/using-side-by-side-assemblies ++ pub fn dependency(mut self, identity: AssemblyIdentity) -> Self { ++ self.dependent_assemblies.push(identity); ++ self ++ } ++ ++ /// Remove a dependency on a side-by-side assembly. This can be used to ++ /// remove the default dependency on Common Controls version 6: ++ /// ++ /// ``` ++ /// # use embed_manifest::new_manifest; ++ /// new_manifest("Company.OrgUnit.Program") ++ /// .remove_dependency("Microsoft.Windows.Common-Controls") ++ /// # ; ++ /// ``` ++ pub fn remove_dependency(mut self, name: &str) -> Self { ++ self.dependent_assemblies.retain(|d| d.name != name); ++ self ++ } ++ ++ /// Set the “maximum version tested” based on a Windows SDK version. ++ /// This compatibility setting enables the use of XAML Islands, as described in ++ /// [Host a standard WinRT XAML control in a C++ desktop (Win32) app][xaml]. ++ /// ++ /// [xaml]: https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/host-standard-control-with-xaml-islands-cpp ++ pub fn max_version_tested(mut self, version: MaxVersionTested) -> Self { ++ self.compatibility.max_version_tested = Some(version); ++ self ++ } ++ ++ /// Remove the “maximum version tested” from the application compatibility. ++ pub fn remove_max_version_tested(mut self) -> Self { ++ self.compatibility.max_version_tested = None; ++ self ++ } ++ ++ /// Set the range of supported versions of Windows for application compatibility. ++ /// The default value declares compatibility with every version from ++ /// [Windows 7][SupportedOS::Windows7] to [Windows 10 and 11][SupportedOS::Windows10]. ++ pub fn supported_os>(mut self, os_range: R) -> Self { ++ use SupportedOS::*; ++ ++ self.compatibility.supported_os.clear(); ++ for os in [WindowsVista, Windows7, Windows8, Windows81, Windows10] { ++ if os_range.contains(&os) { ++ self.compatibility.supported_os.push(os); ++ } ++ } ++ self ++ } ++ ++ /// Set the code page used for single-byte Windows API, starting from Windows 10 ++ /// version 1903. The default setting of [UTF-8][`ActiveCodePage::Utf8`] makes Rust ++ /// strings work directly with APIs like `MessageBoxA`. ++ pub fn active_code_page(mut self, code_page: ActiveCodePage) -> Self { ++ self.windows_settings.active_code_page = code_page; ++ self ++ } ++ ++ /// Configures how Windows should display this program on monitors where the ++ /// graphics need scaling, whether by the application drawing its user ++ /// interface at different sizes or by the Windows system rendering the graphics ++ /// to a bitmap then resizing that for display. ++ pub fn dpi_awareness(mut self, setting: DpiAwareness) -> Self { ++ self.windows_settings.dpi_awareness = setting; ++ self ++ } ++ ++ /// Attempts to scale GDI primitives by the per-monitor scaling values, ++ /// from Windows 10 version 1703. It seems to be best to leave this disabled. ++ pub fn gdi_scaling(mut self, setting: Setting) -> Self { ++ self.windows_settings.gdi_scaling = setting.enabled(); ++ self ++ } ++ ++ /// Select the memory allocator use by the standard heap allocation APIs, ++ /// including the default Rust allocator. Selecting a different algorithm ++ /// may make performance and memory use better or worse, so any changes ++ /// should be carefully tested. ++ pub fn heap_type(mut self, setting: HeapType) -> Self { ++ self.windows_settings.heap_type = setting; ++ self ++ } ++ ++ /// Enable paths longer than 260 characters with some wide-character Win32 APIs, ++ /// when also enabled in the Windows registry. For more details, see ++ /// [Maximum Path Length Limitation][1] in the Windows App Development ++ /// documentation. ++ /// ++ /// As of Rust 1.58, the [Rust standard library bypasses this limitation][2] itself ++ /// by using Unicode paths beginning with `\\?\`. ++ /// ++ /// [1]: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation ++ /// [2]: https://github.com/rust-lang/rust/pull/89174 ++ pub fn long_path_aware(mut self, setting: Setting) -> Self { ++ self.windows_settings.long_path_aware = setting.enabled(); ++ self ++ } ++ ++ /// Enable printer driver isolation for the application, improving security and ++ /// stability when printing by loading the printer driver in a separate ++ /// application. This is poorly documented, but is described in a blog post, ++ /// “[Application-level Printer Driver Isolation][post]”. ++ /// ++ /// [post]: https://peteronprogramming.wordpress.com/2018/01/22/application-level-printer-driver-isolation/ ++ pub fn printer_driver_isolation(mut self, setting: Setting) -> Self { ++ self.windows_settings.printer_driver_isolation = setting.enabled(); ++ self ++ } ++ ++ /// Configure whether the application should receive mouse wheel scroll events ++ /// with a minimum delta of 1, 40 or 120, as described in ++ /// [Windows precision touchpad devices][touchpad]. ++ /// ++ /// [touchpad]: https://docs.microsoft.com/en-us/windows/win32/w8cookbook/windows-precision-touchpad-devices ++ pub fn scrolling_awareness(mut self, setting: ScrollingAwareness) -> Self { ++ self.windows_settings.scrolling_awareness = setting; ++ self ++ } ++ ++ /// Allows the application to disable the filtering that normally ++ /// removes UWP windows from the results of the `EnumWindows` API. ++ pub fn window_filtering(mut self, setting: Setting) -> Self { ++ self.windows_settings.disable_window_filtering = setting.disabled(); ++ self ++ } ++ ++ /// Selects the authorities to execute the program with, rather than ++ /// [guessing based on a filename][installer] like `setup.exe`, ++ /// `update.exe` or `patch.exe`. ++ /// ++ /// [installer]: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works#installer-detection-technology ++ pub fn requested_execution_level(mut self, level: ExecutionLevel) -> Self { ++ self.requested_execution_level.level = level; ++ self ++ } ++ ++ /// Allows the application to access the user interface of applications ++ /// running with elevated permissions when this program does not, typically ++ /// for accessibility. The program must additionally be correctly signed ++ /// and installed in a trusted location like the Program Files directory. ++ pub fn ui_access(mut self, access: bool) -> Self { ++ self.requested_execution_level.ui_access = access; ++ self ++ } ++} ++ ++impl Display for ManifestBuilder { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ let mut w = XmlFormatter::new(f); ++ w.start_document()?; ++ w.start_element( ++ "assembly", ++ &[ ++ ("xmlns", "urn:schemas-microsoft-com:asm.v1"), ++ ("xmlns:asmv3", "urn:schemas-microsoft-com:asm.v3"), ++ ("manifestVersion", "1.0"), ++ ], ++ )?; ++ self.identity.xml_to(&mut w)?; ++ if !self.dependent_assemblies.is_empty() { ++ w.element("dependency", &[], |w| { ++ for d in self.dependent_assemblies.as_slice() { ++ w.element("dependentAssembly", &[], |w| d.xml_to(w))?; ++ } ++ Ok(()) ++ })?; ++ } ++ self.compatibility.xml_to(&mut w)?; ++ self.windows_settings.xml_to(&mut w)?; ++ self.requested_execution_level.xml_to(&mut w)?; ++ w.end_element("assembly") ++ } ++} ++ ++/// Identity of a side-by-side assembly dependency for the application. ++#[derive(Debug)] ++pub struct AssemblyIdentity { ++ r#type: AssemblyType, ++ name: String, ++ language: Option, ++ processor_architecture: Option, ++ version: Version, ++ public_key_token: Option, ++} ++ ++impl AssemblyIdentity { ++ fn application(name: &str) -> AssemblyIdentity { ++ let major = env::var("CARGO_PKG_VERSION_MAJOR").map_or(0, |s| s.parse().unwrap_or(0)); ++ let minor = env::var("CARGO_PKG_VERSION_MINOR").map_or(0, |s| s.parse().unwrap_or(0)); ++ let patch = env::var("CARGO_PKG_VERSION_PATCH").map_or(0, |s| s.parse().unwrap_or(0)); ++ AssemblyIdentity { ++ r#type: AssemblyType::Win32, ++ name: name.to_string(), ++ language: None, ++ processor_architecture: None, ++ version: Version(major, minor, patch, 0), ++ public_key_token: None, ++ } ++ } ++ ++ /// Creates a new value for a [manifest dependency][ManifestBuilder::dependency], ++ /// with the `version` as an array of numbers like `[1, 0, 0, 0]` for 1.0.0.0, ++ /// and the public key token as a 64-bit number like `0x6595b64144ccf1df`. ++ pub fn new(name: &str, version: [u16; 4], public_key_token: u64) -> AssemblyIdentity { ++ AssemblyIdentity { ++ r#type: AssemblyType::Win32, ++ name: name.to_string(), ++ language: Some("*".to_string()), ++ processor_architecture: Some(AssemblyProcessorArchitecture::All), ++ version: Version(version[0], version[1], version[2], version[3]), ++ public_key_token: Some(PublicKeyToken(public_key_token)), ++ } ++ } ++ ++ /// Change the language from `"*"` to the language code in `language`. ++ pub fn language(mut self, language: &str) -> Self { ++ self.language = Some(language.to_string()); ++ self ++ } ++ ++ /// Change the processor architecture from `"*"` to the architecture in `arch`. ++ pub fn processor_architecture(mut self, arch: AssemblyProcessorArchitecture) -> Self { ++ self.processor_architecture = Some(arch); ++ self ++ } ++ ++ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { ++ let version = self.version.to_string(); ++ let public_key_token = self.public_key_token.as_ref().map(|token| token.to_string()); ++ ++ let mut attrs: Vec<(&str, &str)> = Vec::with_capacity(6); ++ if let Some(ref language) = self.language { ++ attrs.push(("language", language)); ++ } ++ attrs.push(("name", &self.name)); ++ if let Some(ref arch) = self.processor_architecture { ++ attrs.push(("processorArchitecture", arch.as_str())) ++ } ++ if let Some(ref token) = public_key_token { ++ attrs.push(("publicKeyToken", token)); ++ } ++ attrs.push(("type", self.r#type.as_str())); ++ attrs.push(("version", &version)); ++ w.empty_element("assemblyIdentity", &attrs) ++ } ++} ++ ++#[derive(Debug)] ++struct Version(u16, u16, u16, u16); ++ ++impl fmt::Display for Version { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ write!(f, "{}.{}.{}.{}", self.0, self.1, self.2, self.3) ++ } ++} ++ ++#[derive(Debug)] ++struct PublicKeyToken(u64); ++ ++impl fmt::Display for PublicKeyToken { ++ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { ++ write!(f, "{:016x}", self.0) ++ } ++} ++ ++/// Processor architecture for an assembly identity. ++#[derive(Debug)] ++#[non_exhaustive] ++pub enum AssemblyProcessorArchitecture { ++ /// Any processor architecture, as `"*"`. ++ All, ++ /// 32-bit x86 processors, as `"x86"`. ++ X86, ++ /// 64-bit x64 processors, as `"x64"`. ++ Amd64, ++ /// 32-bit ARM processors, as `"arm"`. ++ Arm, ++ /// 64-bit ARM processors, as `"arm64"`. ++ Arm64, ++} ++ ++impl AssemblyProcessorArchitecture { ++ pub fn as_str(&self) -> &'static str { ++ match self { ++ Self::All => "*", ++ Self::X86 => "x86", ++ Self::Amd64 => "amd64", ++ Self::Arm => "arm", ++ Self::Arm64 => "arm64", ++ } ++ } ++} ++ ++impl fmt::Display for AssemblyProcessorArchitecture { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ f.pad(self.as_str()) ++ } ++} ++ ++#[derive(Debug)] ++#[non_exhaustive] ++enum AssemblyType { ++ Win32, ++} ++ ++impl AssemblyType { ++ fn as_str(&self) -> &'static str { ++ "win32" ++ } ++} ++ ++#[derive(Debug)] ++struct ApplicationCompatibility { ++ max_version_tested: Option, ++ supported_os: Vec, ++} ++ ++impl ApplicationCompatibility { ++ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { ++ w.element( ++ "compatibility", ++ &[("xmlns", "urn:schemas-microsoft-com:compatibility.v1")], ++ |w| { ++ w.element("application", &[], |w| { ++ if self.supported_os.contains(&SupportedOS::Windows10) { ++ if let Some(ref version) = self.max_version_tested { ++ w.empty_element("maxversiontested", &[("Id", version.as_str())])?; ++ } ++ } ++ for os in self.supported_os.iter() { ++ w.empty_element("supportedOS", &[("Id", os.as_str())])? ++ } ++ Ok(()) ++ }) ++ }, ++ ) ++ } ++} ++ ++/// Windows build versions for [`max_version_tested()`][ManifestBuilder::max_version_tested] ++/// from the [Windows SDK archive](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/). ++#[derive(Debug)] ++#[non_exhaustive] ++pub enum MaxVersionTested { ++ /// Windows 10 version 1903, with build version 10.0.18362.0. ++ Windows10Version1903, ++ /// Windows 10 version 2004, with build version 10.0.19041.0. ++ Windows10Version2004, ++ /// Windows 10 version 2104, with build version 10.0.20348.0. ++ Windows10Version2104, ++ /// Windows 11, with build version 10.0.22000.194. ++ Windows11, ++ /// Windows 11 version 22H2, with build version 10.0.22621.1. ++ Windows11Version22H2, ++} ++ ++impl MaxVersionTested { ++ /// Return the Windows version as a string. ++ pub fn as_str(&self) -> &'static str { ++ match self { ++ Self::Windows10Version1903 => "10.0.18362.1", ++ Self::Windows10Version2004 => "10.0.19041.0", ++ Self::Windows10Version2104 => "10.0.20348.0", ++ Self::Windows11 => "10.0.22000.194", ++ Self::Windows11Version22H2 => "10.0.22621.1", ++ } ++ } ++} ++ ++impl Display for MaxVersionTested { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ f.pad(self.as_str()) ++ } ++} ++ ++/// Operating system versions for Windows compatibility. ++#[derive(Debug, Ord, PartialOrd, Eq, PartialEq)] ++#[non_exhaustive] ++pub enum SupportedOS { ++ /// Windows Vista and Windows Server 2008. ++ WindowsVista, ++ /// Windows 7 and Windows Server 2008 R2. ++ Windows7, ++ /// Windows 8 and Windows Server 2012. ++ Windows8, ++ /// Windows 8.1 and Windows Server 2012 R2. ++ Windows81, ++ /// Windows 10 and 11, and Windows Server 2016, 2019 and 2022. ++ Windows10, ++} ++ ++impl SupportedOS { ++ /// Returns the GUID string for the Windows version. ++ pub fn as_str(&self) -> &'static str { ++ match self { ++ Self::WindowsVista => "{e2011457-1546-43c5-a5fe-008deee3d3f0}", ++ Self::Windows7 => "{35138b9a-5d96-4fbd-8e2d-a2440225f93a}", ++ Self::Windows8 => "{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}", ++ Self::Windows81 => "{1f676c76-80e1-4239-95bb-83d0f6d0da78}", ++ Self::Windows10 => "{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}", ++ } ++ } ++} ++ ++impl Display for SupportedOS { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ f.pad(self.as_str()) ++ } ++} ++ ++static WS2005: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2005/WindowsSettings"); ++static WS2011: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2011/WindowsSettings"); ++static WS2013: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2013/WindowsSettings"); ++static WS2016: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2016/WindowsSettings"); ++static WS2017: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2017/WindowsSettings"); ++static WS2019: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2019/WindowsSettings"); ++static WS2020: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2020/WindowsSettings"); ++ ++#[derive(Debug)] ++struct WindowsSettings { ++ active_code_page: ActiveCodePage, ++ disable_window_filtering: bool, ++ dpi_awareness: DpiAwareness, ++ gdi_scaling: bool, ++ heap_type: HeapType, ++ long_path_aware: bool, ++ printer_driver_isolation: bool, ++ scrolling_awareness: ScrollingAwareness, ++} ++ ++impl WindowsSettings { ++ fn new() -> Self { ++ Self { ++ active_code_page: ActiveCodePage::Utf8, ++ disable_window_filtering: false, ++ dpi_awareness: DpiAwareness::PerMonitorV2Only, ++ gdi_scaling: false, ++ heap_type: HeapType::LowFragmentationHeap, ++ long_path_aware: true, ++ printer_driver_isolation: true, ++ scrolling_awareness: ScrollingAwareness::UltraHighResolution, ++ } ++ } ++ ++ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { ++ w.element("asmv3:application", &[], |w| { ++ w.element("asmv3:windowsSettings", &[], |w| { ++ self.active_code_page.xml_to(w)?; ++ if self.disable_window_filtering { ++ w.element("disableWindowFiltering", &[WS2011], |w| w.text("true"))?; ++ } ++ self.dpi_awareness.xml_to(w)?; ++ if self.gdi_scaling { ++ w.element("gdiScaling", &[WS2017], |w| w.text("true"))?; ++ } ++ if matches!(self.heap_type, HeapType::SegmentHeap) { ++ w.element("heapType", &[WS2020], |w| w.text("SegmentHeap"))?; ++ } ++ if self.long_path_aware { ++ w.element("longPathAware", &[WS2016], |w| w.text("true"))?; ++ } ++ if self.printer_driver_isolation { ++ w.element("printerDriverIsolation", &[WS2011], |w| w.text("true"))?; ++ } ++ self.scrolling_awareness.xml_to(w) ++ }) ++ }) ++ } ++} ++ ++/// Configure whether a Windows setting is enabled or disabled, avoiding confusion ++/// over which of these options `true` and `false` represent. ++#[derive(Debug)] ++pub enum Setting { ++ Disabled = 0, ++ Enabled = 1, ++} ++ ++impl Setting { ++ /// Returns `true` if the setting should be disabled. ++ fn disabled(&self) -> bool { ++ matches!(self, Setting::Disabled) ++ } ++ ++ /// Returns `true` if the setting should be enabled. ++ fn enabled(&self) -> bool { ++ matches!(self, Setting::Enabled) ++ } ++} ++ ++/// The code page used by single-byte APIs in the program. ++#[derive(Debug)] ++#[non_exhaustive] ++pub enum ActiveCodePage { ++ /// Use the code page from the configured system locale, or UTF-8 if “Use Unicode UTF-8 ++ /// for worldwide language support” is configured. ++ System, ++ /// Use UTF-8 from Windows 10 version 1903 and on Windows 11. ++ Utf8, ++ /// Use the code page from the configured system locale, even when “Use Unicode UTF-8 ++ /// for worldwide language support” is configured. ++ Legacy, ++ /// Use the code page from the configured system locale on Windows 10, or from this ++ /// locale on Windows 11. ++ Locale(String), ++} ++ ++impl ActiveCodePage { ++ pub fn as_str(&self) -> &str { ++ match self { ++ Self::System => "", ++ Self::Utf8 => "UTF-8", ++ Self::Legacy => "Legacy", ++ Self::Locale(s) => s, ++ } ++ } ++ ++ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { ++ match self { ++ Self::System => Ok(()), ++ _ => w.element("activeCodePage", &[WS2019], |w| w.text(self.as_str())), ++ } ++ } ++} ++ ++impl Display for ActiveCodePage { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ f.pad(self.as_str()) ++ } ++} ++ ++/// Options for how Windows will handle drawing on monitors when the graphics ++/// need scaling to display at the correct size. ++/// ++/// See [High DPI Desktop Application Development on Windows][dpi] for more details ++/// about the impact of these options. ++/// ++/// [dpi]: https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows ++#[derive(Debug)] ++#[non_exhaustive] ++pub enum DpiAwareness { ++ /// DPI awareness is not configured, so Windows will scale the application unless ++ /// changed via the `SetProcessDpiAware` or `SetProcessDpiAwareness` API. ++ UnawareByDefault, ++ /// DPI awareness is not configured, with Windows 8.1, 10 and 11 not able ++ /// to change the setting via API. ++ Unaware, ++ /// The program uses the system DPI, or the DPI of the monitor they start on if ++ /// “Fix scaling for apps” is enabled. If the DPI does not match the current ++ /// monitor then Windows will scale the application. ++ System, ++ /// The program uses the system DPI on Windows Vista, 7 and 8, and version 1 of ++ /// per-monitor DPI awareness on Windows 8.1, 10 and 11. Using version 1 of the ++ /// API is not recommended. ++ PerMonitor, ++ /// The program uses the system DPI on Windows Vista, 7 and 8, version 1 of ++ /// per-monitor DPI awareness on Windows 8.1 and Windows 10 version 1507 and 1511, ++ /// and version 2 of per-monitor DPI awareness from Windows 10 version 1607. ++ PerMonitorV2, ++ /// The program uses the system DPI on Windows Vista, 7, 8, 8.1 and Windows 10 ++ /// version 1507 and 1511, and version 2 of per-monitor DPI awareness from ++ /// Windows 10 version 1607. ++ PerMonitorV2Only, ++} ++ ++impl DpiAwareness { ++ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { ++ let settings = match self { ++ Self::UnawareByDefault => (None, None), ++ Self::Unaware => (Some("false"), None), ++ Self::System => (Some("true"), None), ++ Self::PerMonitor => (Some("true/pm"), None), ++ Self::PerMonitorV2 => (Some("true/pm"), Some("permonitorv2,permonitor")), ++ Self::PerMonitorV2Only => (None, Some("permonitorv2")), ++ }; ++ if let Some(dpi_aware) = settings.0 { ++ w.element("dpiAware", &[WS2005], |w| w.text(dpi_aware))?; ++ } ++ if let Some(dpi_awareness) = settings.1 { ++ w.element("dpiAwareness", &[WS2016], |w| w.text(dpi_awareness))?; ++ } ++ Ok(()) ++ } ++} ++ ++/// The heap type for the default memory allocator. ++#[derive(Debug)] ++#[non_exhaustive] ++pub enum HeapType { ++ /// The default heap type since Windows Vista. ++ LowFragmentationHeap, ++ /// The modern segment heap, which may reduce total memory allocation in some programs. ++ /// This is supported since Windows 10 version 2004. See ++ /// [Improving Memory Usage in Microsoft Edge][edge]. ++ /// ++ /// [edge]: https://blogs.windows.com/msedgedev/2020/06/17/improving-memory-usage/ ++ SegmentHeap, ++} ++ ++/// Whether the application supports scroll wheel events with a minimum delta ++/// of 1, 40 or 120. ++#[derive(Debug)] ++#[non_exhaustive] ++pub enum ScrollingAwareness { ++ /// The application can only handle scroll wheel events with the original delta of 120. ++ LowResolution, ++ /// The application can handle high precision scroll wheel events with a delta of 40. ++ HighResolution, ++ /// The application can handle ultra high precision scroll wheel events with a delta as low as 1. ++ UltraHighResolution, ++} ++ ++impl ScrollingAwareness { ++ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { ++ match self { ++ Self::LowResolution => w.element("ultraHighResolutionScrollingAware", &[WS2013], |w| w.text("false")), ++ Self::HighResolution => w.element("highResolutionScrollingAware", &[WS2013], |w| w.text("true")), ++ Self::UltraHighResolution => Ok(()), ++ } ++ } ++} ++ ++#[derive(Debug)] ++struct RequestedExecutionLevel { ++ level: ExecutionLevel, ++ ui_access: bool, ++} ++ ++impl RequestedExecutionLevel { ++ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { ++ w.element("asmv3:trustInfo", &[], |w| { ++ w.element("asmv3:security", &[], |w| { ++ w.element("asmv3:requestedPrivileges", &[], |w| { ++ w.empty_element( ++ "asmv3:requestedExecutionLevel", ++ &[ ++ ("level", self.level.as_str()), ++ ("uiAccess", if self.ui_access { "true" } else { "false" }), ++ ], ++ ) ++ }) ++ }) ++ }) ++ } ++} ++ ++/// The requested execution level for the application when started. ++/// ++/// The behaviour of each option is described in ++/// [Designing UAC Applications for Windows Vista Step 6: Create and Embed an Application Manifest][step6]. ++/// ++/// [step6]: https://msdn.microsoft.com/en-us/library/bb756929.aspx ++#[derive(Debug)] ++pub enum ExecutionLevel { ++ /// The application will always run with the same authorities as the program invoking it. ++ AsInvoker, ++ /// The program will run without special authorities for a standard user, but will try to ++ /// run with administrator authority if the user is an administrator. This is rarely used. ++ HighestAvailable, ++ /// The application will run as an administrator, prompting for elevation if necessary. ++ RequireAdministrator, ++} ++ ++impl ExecutionLevel { ++ pub fn as_str(&self) -> &'static str { ++ match self { ++ Self::AsInvoker => "asInvoker", ++ Self::HighestAvailable => "highestAvailable", ++ Self::RequireAdministrator => "requireAdministrator", ++ } ++ } ++} ++ ++impl Display for ExecutionLevel { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ f.pad(self.as_str()) ++ } ++} +diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/xml.rs rustc-1.77.0-src/vendor/embed-manifest/src/manifest/xml.rs +--- rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/xml.rs 1969-12-31 16:00:00.000000000 -0800 ++++ rustc-1.77.0-src/vendor/embed-manifest/src/manifest/xml.rs 2024-03-25 11:10:27.791701600 -0700 +@@ -0,0 +1,140 @@ ++use std::fmt::{self, Display, Formatter, Write}; ++ ++/// Simple but still over-engineered XML generator for a [`Formatter`], for generating ++/// Windows Manifest XML. This can easily generate invalid XML. ++/// ++/// When used correctly, this should generate the same output as MT’s `-canonicalize` ++/// option. ++pub struct XmlFormatter<'a, 'f> { ++ f: &'f mut Formatter<'a>, ++ state: State, ++ depth: usize, ++} ++ ++#[derive(Eq, PartialEq)] ++enum State { ++ Init, ++ StartTag, ++ Text, ++} ++ ++impl<'a, 'f> XmlFormatter<'a, 'f> { ++ pub fn new(f: &'f mut Formatter<'a>) -> Self { ++ Self { ++ f, ++ state: State::Init, ++ depth: 0, ++ } ++ } ++ ++ fn pretty(&mut self) -> fmt::Result { ++ if self.f.alternate() { ++ self.f.write_str("\r\n")?; ++ for _ in 0..self.depth { ++ self.f.write_str(" ")?; ++ } ++ } ++ Ok(()) ++ } ++ ++ pub fn start_document(&mut self) -> fmt::Result { ++ if !self.f.alternate() { ++ self.f.write_char('\u{FEFF}')?; ++ } ++ self.f ++ .write_str("\r\n") ++ } ++ ++ pub fn element fmt::Result>(&mut self, name: &str, attrs: &[(&str, &str)], f: F) -> fmt::Result { ++ self.start_element(name, attrs)?; ++ f(self)?; ++ self.end_element(name) ++ } ++ ++ pub fn empty_element(&mut self, name: &str, attrs: &[(&str, &str)]) -> fmt::Result { ++ self.start_element(name, attrs)?; ++ self.end_element(name) ++ } ++ ++ pub fn start_element(&mut self, name: &str, attrs: &[(&str, &str)]) -> fmt::Result { ++ if self.state == State::StartTag { ++ self.f.write_char('>')?; ++ } ++ if self.depth != 0 { ++ self.pretty()?; ++ } ++ write!(self.f, "<{}", name)?; ++ for (name, value) in attrs { ++ write!(self.f, " {}=\"{}\"", name, Xml(value))?; ++ } ++ self.depth += 1; ++ self.state = State::StartTag; ++ Ok(()) ++ } ++ ++ pub fn end_element(&mut self, name: &str) -> fmt::Result { ++ self.depth -= 1; ++ match self.state { ++ State::Init => { ++ self.pretty()?; ++ write!(self.f, "", name) ++ } ++ State::Text => { ++ self.state = State::Init; ++ write!(self.f, "", name) ++ } ++ State::StartTag => { ++ self.state = State::Init; ++ if self.f.alternate() { ++ self.f.write_str("/>") ++ } else { ++ write!(self.f, ">", name) ++ } ++ } ++ } ++ } ++ ++ pub fn text(&mut self, s: &str) -> fmt::Result { ++ if self.state == State::StartTag { ++ self.state = State::Text; ++ self.f.write_char('>')?; ++ } ++ Xml(s).fmt(self.f) ++ } ++} ++ ++/// Temporary wrapper for outputting a string with XML attribute encoding. ++/// This does not do anything with the control characters which are not ++/// valid in XML, encoded or not. ++struct Xml<'a>(&'a str); ++ ++impl<'a> Display for Xml<'a> { ++ fn fmt(&self, f: &mut Formatter) -> fmt::Result { ++ // Process the string in blocks separated by special characters, so that the parts that ++ // don't need encoding can be written all at once, not character by character, and with ++ // no checks for whether string slices are aligned on character boundaries. ++ for s in self.0.split_inclusive(&['<', '&', '>', '"', '\r'][..]) { ++ // Check whether the last character in the substring needs encoding. This will be ++ // `None` at the end of the input string. ++ let mut iter = s.chars(); ++ let ch = match iter.next_back() { ++ Some('<') => Some("<"), ++ Some('&') => Some("&"), ++ Some('>') => Some(">"), ++ Some('"') => Some("""), ++ Some('\r') => Some(" "), ++ _ => None, ++ }; ++ // Write the substring except the last character, then the encoded character; ++ // or the entire substring if it is not terminated by a special character. ++ match ch { ++ Some(enc) => { ++ f.write_str(iter.as_str())?; ++ f.write_str(enc)?; ++ } ++ None => f.write_str(s)?, ++ } ++ } ++ Ok(()) ++ } ++} diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index 7a8d1dae2f2b8..c12cbe6df7227 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -45,7 +45,9 @@ source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} "0005-win32-config.patch" "0007-clang-subsystem.patch" "0008-disable-self-contained.patch" - "0011-disable-uac-for-installer.patch") + "0011-disable-uac-for-installer.patch" + "0012-backport-compiler-builtins.patch" + "0013-vendor-embed-manifest.patch") noextract=(${_realname}c-${pkgver}-src.tar.gz) sha256sums=('0d6ccd1fa845fe3456b9ed4d483fc06acf9bbae9417e396b5144488c1a522d87' 'SKIP' @@ -53,7 +55,9 @@ sha256sums=('0d6ccd1fa845fe3456b9ed4d483fc06acf9bbae9417e396b5144488c1a522d87' '7d1c4e49524b835a8eadc961b39f5594b12a522a1e24368999be2c7e85399e4e' '1f668f4aed56060ec74fd53a39da1fbaef69b84de510d955baf349db672a8d15' '7a3b5722ff576b0661f36796f088dee4ce318b5dbc3fdcd65b48972de68a0edf' - 'e7c13f738c670f3d5ce1742eff71e15bb6675ebe86a58dee44d6a58541bdd5a8') + '761d73328d9695a7a2bd2a10be8225f4a56801fee54cbb51c0841b7f16e2bde6' + '914fbc9902f72cd0d1bde9c4bc045f1cb3975ebc3bfe26a8db03f237914cf04b' + 'faab966d818c0bb2e163b5b210c9602d7b1407b3a626fa771f1439c598b5721a') validpgpkeys=('108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE' # Rust Language (Tag and Release Signing Key) '474E22316ABF4785A88C6E8EA2C794A986419D8A' # Tom Stellard 'B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg @@ -99,6 +103,9 @@ prepare() { apply_patch_with_msg \ 0011-disable-uac-for-installer.patch fi + apply_patch_with_msg \ + 0012-backport-compiler-builtins.patch \ + 0013-vendor-embed-manifest.patch } build() { @@ -142,9 +149,7 @@ build() { if [ "${_bootstrapping}" = "no" ]; then _rust_conf+=("--local-rust-root=$(cygpath -m ${MINGW_PREFIX})") fi - if [[ $MINGW_PACKAGE_PREFIX != *-clang-i686 ]]; then - _rust_conf+=("--enable-vendor") - fi + _rust_conf+=("--enable-vendor") if [[ ${CARCH} == i686 ]]; then _rust_conf+=("--disable-docs" "--disable-compiler-docs") @@ -181,11 +186,9 @@ build() { --python=${MINGW_PREFIX}/bin/python \ "${_rust_conf[@]}" - if [[ $MINGW_PACKAGE_PREFIX != *-clang-i686 ]]; then - # Building out of tree is not officially supported so we have to workaround some things like vendored deps - cp -r ../${_realname}c-${pkgver}-src/.cargo . - sed -i "s|directory = \"vendor\"|directory = \"../${_realname}c-${pkgver}-src/vendor\"|" .cargo/config.toml - fi + # Building out of tree is not officially supported so we have to workaround some things like vendored deps + cp -r ../${_realname}c-${pkgver}-src/.cargo . + sed -i "s|directory = \"vendor\"|directory = \"../${_realname}c-${pkgver}-src/vendor\"|" .cargo/config.toml # create the install at a temporary directory DEP_NGHTTP_ROOT=${MINGW_PREFIX} \ From da745d51b8c72bbbec9537c318abb2921452a805 Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Wed, 27 Mar 2024 15:53:05 -0700 Subject: [PATCH 4/8] rust: enable uac patch for all clang prefixes. It turns out to be required on i686 *and* aarch64, but shouldn't hurt on x86_64 either. --- mingw-w64-rust/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index c12cbe6df7227..bce033fe69cbb 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -99,7 +99,7 @@ prepare() { apply_patch_with_msg \ 0007-clang-subsystem.patch fi - if [[ $MINGW_PACKAGE_PREFIX == *-clang-i686 ]]; then + if [[ $MINGW_PACKAGE_PREFIX == *-clang-* ]]; then apply_patch_with_msg \ 0011-disable-uac-for-installer.patch fi From 2eebce460212696199c24b850e27fd329bfd3e7b Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Thu, 28 Mar 2024 18:12:21 +0100 Subject: [PATCH 5/8] rust: update to 1.77.1 --- mingw-w64-rust/PKGBUILD | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index bce033fe69cbb..ef5a79140505c 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -15,7 +15,7 @@ _realname=rust pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" $([[ ${CARCH} == i686 ]] || echo "${MINGW_PACKAGE_PREFIX}-rust-docs")) -pkgver=1.77.0 +pkgver=1.77.1 pkgrel=1 pkgdesc="Systems programming language focused on safety, speed and concurrency (mingw-w64)" arch=('any') @@ -49,7 +49,7 @@ source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} "0012-backport-compiler-builtins.patch" "0013-vendor-embed-manifest.patch") noextract=(${_realname}c-${pkgver}-src.tar.gz) -sha256sums=('0d6ccd1fa845fe3456b9ed4d483fc06acf9bbae9417e396b5144488c1a522d87' +sha256sums=('ee106e4c569f52dba3b5b282b105820f86bd8f6b3d09c06b8dce82fb1bb3a4a1' 'SKIP' '7cb1773c288ffb1c1e751edc49b1890c84bf9c362742bc5225d19d474edb73a0' '7d1c4e49524b835a8eadc961b39f5594b12a522a1e24368999be2c7e85399e4e' @@ -136,7 +136,6 @@ build() { # Otherwise it uses gcc during bootstrap, even when we build for clang export CARGO_TARGET_${CARCH^^}_PC_WINDOWS_GNULLVM_LINKER="${CC}" - else # We have to do the following because rust doesn't count x86_64-w64-mingw32 as a target triple OSTYPE="$CARCH-pc-windows-gnu" @@ -190,11 +189,15 @@ build() { cp -r ../${_realname}c-${pkgver}-src/.cargo . sed -i "s|directory = \"vendor\"|directory = \"../${_realname}c-${pkgver}-src/vendor\"|" .cargo/config.toml + local -a _rust_build=() + _rust_build+=("--stage" "2") + #_rust_build+=("--verbose") + # create the install at a temporary directory DEP_NGHTTP_ROOT=${MINGW_PREFIX} \ DEP_OPENSSL_ROOT=${MINGW_PREFIX} \ DEP_Z_ROOT=${MINGW_PREFIX} \ - DESTDIR="$PWD"/dest-rust ${MINGW_PREFIX}/bin/python ../${_realname}c-${pkgver}-src/x.py install --stage 2 + DESTDIR="$PWD"/dest-rust ${MINGW_PREFIX}/bin/python ../${_realname}c-${pkgver}-src/x.py install "${_rust_build[@]}" if [[ ${CARCH} != i686 ]]; then # move docs out of the way for splitting From 4b9458c02fff42f40386f4e2035ff02acf2f6e8e Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Sat, 30 Mar 2024 14:22:20 +0100 Subject: [PATCH 6/8] rust: get embed-manifest from source still need to patch in the .cargo-checksum.json file though --- .../0013-vendor-embed-manifest.patch | 1963 +---------------- mingw-w64-rust/PKGBUILD | 15 +- 2 files changed, 14 insertions(+), 1964 deletions(-) diff --git a/mingw-w64-rust/0013-vendor-embed-manifest.patch b/mingw-w64-rust/0013-vendor-embed-manifest.patch index 57d967d170ab3..85d148e91266e 100644 --- a/mingw-w64-rust/0013-vendor-embed-manifest.patch +++ b/mingw-w64-rust/0013-vendor-embed-manifest.patch @@ -2,1965 +2,4 @@ diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/.cargo-checksum.json rustc --- rustc-1.77.0-src/vendor.orig/embed-manifest/.cargo-checksum.json 1969-12-31 16:00:00.000000000 -0800 +++ rustc-1.77.0-src/vendor/embed-manifest/.cargo-checksum.json 2024-03-25 11:10:27.791701600 -0700 @@ -0,0 +1 @@ -+{"files":{"CHANGELOG.md":"3b9d90277c0bb06de10a31110f3c7eea58802f2d090266631e32161f2d9c8562","Cargo.toml":"0d754491e05500fd1f461808c2d6c8239234c9f3a0404713b34f78021fbe9739","LICENSE":"d041a5a86caaf9cc7720f3637d689252083a664d9ccd946a36d1c7c708d204cb","README.md":"8cf8a7b20cfb7fa43c4ee9585bf92ea6c5a5c4ca3ef700974edb02025d5146c8","rustfmt.toml":"d364003c8da50e2707b7c01140c170098bac682b3f94ff98057f4ce74a18e62a","sample.exe.manifest":"a0e53ad5d65af69fe608999bcdab2e7c705a27c4a722c444d2d12cb89de68b6b","src/embed/coff.rs":"0ea7bfb9f5135843221912078bfd83a4f424a13cf5a610b25c4275a400484fcc","src/embed/error.rs":"aecb4928e70b02b784557352608f6d4fb9b88b44ae3297a33969a0f2219c416c","src/embed/mod.rs":"0c2df4c80a4b9818f4de8e54074098d195eea19bcdd0858097416e67c733c4d9","src/embed/test.rs":"d527b7ce78bd9672057f2f9e2e268b48ffa40ad909fd6ffd119650d5244cf4a9","src/lib.rs":"ff1e87d48bb9549764e5322c54184934da08127f5187ede0db7f138544b00711","src/manifest/mod.rs":"432f4bbf330fe7c5d57876ba38cd789b6a1cd55f5c1cf408674ed153db8293a5","src/manifest/xml.rs":"1bce12120e17a49da43eabbd1b04f712b3f6ece7fcbca9186319e301890e20c5"},"package":"40ff574b0b0a794f8995383bb83f21f8f99214422cae791cb48d66da524b00f7"} -\ No newline at end of file -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/Cargo.toml rustc-1.77.0-src/vendor/embed-manifest/Cargo.toml ---- rustc-1.77.0-src/vendor.orig/embed-manifest/Cargo.toml 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/Cargo.toml 2024-03-25 11:10:27.789193500 -0700 -@@ -0,0 +1,39 @@ -+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -+# -+# When uploading crates to the registry Cargo will automatically -+# "normalize" Cargo.toml files for maximal compatibility -+# with all versions of Cargo and also rewrite `path` dependencies -+# to registry (e.g., crates.io) dependencies. -+# -+# If you are reading this file be aware that the original Cargo.toml -+# will likely look very different (and much more reasonable). -+# See Cargo.toml.orig for the original contents. -+ -+[package] -+edition = "2021" -+rust-version = "1.56" -+name = "embed-manifest" -+version = "1.3.1" -+authors = ["Carey Evans "] -+description = "Build script library to easily embed a Windows manifest." -+readme = "README.md" -+keywords = [ -+ "build", -+ "manifest", -+ "windows", -+] -+categories = ["development-tools::build-utils"] -+license = "MIT" -+repository = "https://gitlab.com/careyevans/embed-manifest" -+resolver = "2" -+ -+[dev-dependencies.object] -+version = "0.29.0" -+features = [ -+ "read_core", -+ "coff", -+] -+default-features = false -+ -+[dev-dependencies.tempfile] -+version = "3.3.0" -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/CHANGELOG.md rustc-1.77.0-src/vendor/embed-manifest/CHANGELOG.md ---- rustc-1.77.0-src/vendor.orig/embed-manifest/CHANGELOG.md 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/CHANGELOG.md 2024-03-25 11:10:27.789193500 -0700 -@@ -0,0 +1,49 @@ -+# Changelog -+All notable changes to this project will be documented in this file. -+ -+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -+ -+## [1.3.1] - 2022-08-07 -+### Added -+- Format the code with Rustfmt. -+- Assume `gnullvm` target environment should work like `gnu`. -+- Add Windows 11 22H2 SDK version for maxversiontested. -+### Changed -+- Update `object` dependency and simplify unit tests. -+ -+## [1.3.0] - 2022-05-01 -+### Changed -+- Use our own code again to generate COFF object files for GNU targets, but with -+ better knowledge of how such files are structured, reducing dependencies and -+ compile time. -+- Link directly to the COFF object file instead of an archive file with one member. -+### Fixed -+- Make the custom `Error` type public. -+ -+## [1.2.1] - 2022-04-18 -+### Added -+- Add checks for Windows builds to the documentation, for programs that -+ should still build for non-Windows targets. -+ -+## [1.2.0] - 2022-04-17 -+### Added -+- Generate the manifest XML from Rust code rather than requiring the developer -+ to supply a correct manifest file. -+ -+## [1.1.0] - 2022-03-24 -+### Changed -+- Use [Gimli Object](https://crates.io/crates/object) crate to build COFF -+ objects containing resources for GNU targets, removing a lot of magic numbers -+ and generating output more like LLVM `windres`. -+ -+## [1.0.0] - 2021-12-18 -+### Added -+- Initial version. -+ -+[1.0.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.0.0 -+[1.1.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.1.0 -+[1.2.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.2.0 -+[1.2.1]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.2.1 -+[1.3.0]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.3.0 -+[1.3.1]: https://gitlab.com/careyevans/embed-manifest/-/releases/v1.3.1 -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/LICENSE rustc-1.77.0-src/vendor/embed-manifest/LICENSE ---- rustc-1.77.0-src/vendor.orig/embed-manifest/LICENSE 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/LICENSE 2024-03-25 11:10:27.789193500 -0700 -@@ -0,0 +1,23 @@ -+MIT License -+ -+Copyright (c) 2021, 2022 Carey Evans -+ -+All rights reserved. -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in all -+copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -+SOFTWARE. -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/README.md rustc-1.77.0-src/vendor/embed-manifest/README.md ---- rustc-1.77.0-src/vendor.orig/embed-manifest/README.md 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/README.md 2024-03-25 11:10:27.789193500 -0700 -@@ -0,0 +1,62 @@ -+Windows Manifest Embedding for Rust -+=================================== -+ -+The `embed-manifest` crate provides a straightforward way to embed -+a Windows manifest in an executable, whatever the build environment, -+without dependencies on external tools from LLVM or MinGW. -+ -+If you need to embed more resources than just a manifest, you may -+find the [winres](https://crates.io/crates/winres) or -+[embed-resource](https://crates.io/crates/embed-resource) -+crates more suitable. They have additional dependencies and setup -+requirements that may make them a little more difficult to use, though. -+ -+ -+Why use it? -+----------- -+ -+The Rust compiler doesn’t add a manifest to a Windows executable, which -+means that it runs with a few compatibility options and settings that -+make it look like the program is running on an older version of Windows. -+By adding an application manifest using this crate, even when cross-compiling: -+ -+- 32-bit programs with names that look like installers don’t try to run -+ as an administrator. -+- 32-bit programs aren’t shown a virtualised view of the filesystem and -+ registry. -+- Many non-Unicode APIs accept UTF-8 strings, the same as Rust uses. -+- The program sees the real Windows version, not Windows Vista. -+- Built-in message boxes and other UI elements can display without blurring -+ on high-DPI monitors. -+- Other features like long path names in APIs can be enabled. -+ -+ -+Usage -+----- -+ -+To embed a default manifest, include this code in a `build.rs` build -+script: -+ -+```rust -+use embed_manifest::{embed_manifest, new_manifest}; -+ -+fn main() { -+ if std::env::var_os("CARGO_CFG_WINDOWS").is_some() { -+ embed_manifest(new_manifest("Contoso.Sample")) -+ .expect("unable to embed manifest file"); -+ } -+ println!("cargo:rerun-if-changed=build.rs"); -+} -+``` -+ -+See the [crate documentation](https://docs.rs/embed-manifest) for -+information about how to customise the embedded manifest. -+ -+ -+License -+------- -+ -+For the avoidance of doubt, while this crate itself is licensed to -+you under the MIT License, this does not affect the copyright status -+and licensing of your own code when this is used from a Cargo build -+script. -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/rustfmt.toml rustc-1.77.0-src/vendor/embed-manifest/rustfmt.toml ---- rustc-1.77.0-src/vendor.orig/embed-manifest/rustfmt.toml 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/rustfmt.toml 2024-03-25 11:10:27.790696600 -0700 -@@ -0,0 +1,2 @@ -+max_width = 132 -+newline_style = "Unix" -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/sample.exe.manifest rustc-1.77.0-src/vendor/embed-manifest/sample.exe.manifest ---- rustc-1.77.0-src/vendor.orig/embed-manifest/sample.exe.manifest 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/sample.exe.manifest 2024-03-25 11:10:27.790696600 -0700 -@@ -0,0 +1,11 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -\ No newline at end of file -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/coff.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/coff.rs ---- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/coff.rs 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/coff.rs 2024-03-25 11:10:27.790696600 -0700 -@@ -0,0 +1,288 @@ -+//! Just as much COFF object file support as is needed to write a resource data segment -+//! for GNU Windows targets. Inspired by the `write::Object` code from the `object` crate. -+//! -+//! Integers are converted from u64 to u32 and added without checking because the manifest -+//! data cannot get anywhere close to overflowing unless the supplied application name or -+//! number of dependencies was extremely long. If this code was used more generally or if -+//! the input was less trustworthy then more checked conversions and checked arithmetic -+//! would be needed. -+ -+use std::io::{self, Seek, SeekFrom, Write}; -+use std::time::SystemTime; -+ -+#[derive(Debug, Clone, Copy)] -+pub enum MachineType { -+ I386, -+ X86_64, -+ Aarch64, -+} -+ -+impl MachineType { -+ pub fn machine(&self) -> u16 { -+ match self { -+ Self::I386 => 0x014c, -+ Self::X86_64 => 0x8664, -+ Self::Aarch64 => 0xaa64, -+ } -+ } -+ -+ pub fn relocation_type(&self) -> u16 { -+ match self { -+ Self::I386 => 7, -+ Self::X86_64 => 3, -+ Self::Aarch64 => 2, -+ } -+ } -+} -+ -+pub struct CoffWriter { -+ /// wrapped writer or buffer -+ writer: W, -+ /// machine type for file header -+ machine_type: MachineType, -+ /// details for section table -+ sections: Vec
, -+ /// details for non-section symbols in symbol table -+ symbols: Vec, -+ /// 0-based section currently being written -+ current_section: u16, -+} -+ -+impl CoffWriter { -+ /// Create a new instance wrapping a writer. -+ pub fn new(writer: W, machine_type: MachineType, section_count: u16) -> Self { -+ let mut sections = Vec::new(); -+ sections.resize_with(section_count as usize, Section::new); -+ Self { -+ writer, -+ machine_type, -+ sections, -+ symbols: Vec::new(), -+ current_section: 0, -+ } -+ } -+ -+ fn section(&mut self) -> &mut Section { -+ &mut self.sections[self.current_section as usize] -+ } -+ -+ /// Add a symbol to be updated when its section and address are known. -+ pub fn add_symbol(&mut self, name: &[u8; 8]) -> u32 { -+ let index = self.symbols.len() as u32; -+ self.symbols.push(Symbol { -+ name: *name, -+ value: 0, -+ section: 0, -+ }); -+ index -+ } -+ -+ /// Set a symbol to the current offset in a section. -+ pub fn set_symbol(&mut self, symbol_index: u32) { -+ let mut symbol = &mut self.symbols[symbol_index as usize]; -+ symbol.value = self.sections[self.current_section as usize].size_of_raw_data; -+ symbol.section = self.current_section + 1; -+ } -+} -+ -+impl CoffWriter { -+ pub fn start_section(&mut self, name: &[u8; 8]) -> io::Result<()> { -+ // Add space for file header and section table if this is the first section. -+ if self.current_section == 0 && self.sections[0].name == [0; 8] { -+ self.writer.write_all(&[0; 20])?; -+ for _ in 0..self.sections.len() { -+ self.writer.write_all(&[0; 40])?; -+ } -+ } else { -+ self.current_section += 1; -+ } -+ -+ // Save the section name for later. -+ self.section().name = *name; -+ Ok(()) -+ } -+ -+ /// Pad the current file position to a multiple of four bytes -+ /// and save it as the section's start position. -+ fn align_section(&mut self) -> io::Result<()> { -+ let position = self.writer.stream_position()? as u32; -+ let offset = (position & 3) as u32; -+ if offset != 0 { -+ let padding = 4 - offset; -+ self.writer.write_all(&[0; 4][0..(padding as usize)])?; -+ self.section().pointer_to_raw_data = position + padding; -+ } else { -+ self.section().pointer_to_raw_data = position; -+ } -+ Ok(()) -+ } -+ -+ /// Add data to a section and return its offset within the section. -+ pub fn add_data(&mut self, data: &[u8]) -> io::Result { -+ let start = self.section().size_of_raw_data; -+ if start == 0 { -+ self.align_section()?; -+ } -+ self.writer.write_all(data)?; -+ self.section().size_of_raw_data = start + data.len() as u32; -+ Ok(start) -+ } -+ -+ /// Write a relocation for a symbol at the end of the section. -+ pub fn relocation(&mut self, address: u32, symbol_index: u32) -> io::Result<()> { -+ self.section().number_of_relocations += 1; -+ self.writer.write_all(&address.to_le_bytes())?; -+ self.writer.write_all(&symbol_index.to_le_bytes())?; -+ self.writer.write_all(&self.machine_type.relocation_type().to_le_bytes()) -+ } -+ -+ /// Write the object and section headers and write the symbol table. -+ pub fn finish(mut self) -> io::Result { -+ // Copy values for the header. -+ let number_of_sections = self.sections.len() as u16; -+ let timestamp = SystemTime::now() -+ .duration_since(SystemTime::UNIX_EPOCH) -+ .map_or(0, |d| d.as_secs() as u32); -+ let pointer_to_symbol_table = self.writer.stream_position()? as u32; -+ let number_of_symbols = (2 * self.sections.len() + self.symbols.len()) as u32; -+ -+ // Write the normal symbols. -+ for symbol in self.symbols { -+ self.writer.write_all(&symbol.name)?; -+ self.writer.write_all(&symbol.value.to_le_bytes())?; -+ self.writer.write_all(&symbol.section.to_le_bytes())?; -+ self.writer.write_all(&[0, 0, 6, 0])?; -+ } -+ -+ // Write the symbols and auxiliary data for sections. -+ for (i, section) in self.sections.iter().enumerate() { -+ self.writer.write_all(§ion.name)?; -+ self.writer.write_all(&[0, 0, 0, 0])?; -+ self.writer.write_all(&((i + 1) as u16).to_le_bytes())?; -+ self.writer.write_all(&[0, 0, 3, 1])?; -+ self.writer.write_all(§ion.pointer_to_raw_data.to_le_bytes())?; -+ self.writer.write_all(§ion.number_of_relocations.to_le_bytes())?; -+ self.writer.write_all(&[0; 12])?; -+ } -+ -+ // Write the empty string table. -+ self.writer.write_all(&[0; 4])?; -+ -+ // Write the object header. -+ let end_of_file = self.writer.seek(SeekFrom::Start(0))?; -+ self.writer.write_all(&self.machine_type.machine().to_le_bytes())?; -+ self.writer.write_all(&number_of_sections.to_le_bytes())?; -+ self.writer.write_all(×tamp.to_le_bytes())?; -+ self.writer.write_all(&pointer_to_symbol_table.to_le_bytes())?; -+ self.writer.write_all(&number_of_symbols.to_le_bytes())?; -+ self.writer.write_all(&[0; 4])?; // optional header size = 0, characteristics = 0 -+ -+ // Update the section headers. -+ for section in self.sections.iter() { -+ self.writer.write_all(§ion.name)?; -+ self.writer.write_all(&[0; 8])?; // virtual size = 0 and virtual address = 0 -+ self.writer.write_all(§ion.size_of_raw_data.to_le_bytes())?; -+ self.writer.write_all(§ion.pointer_to_raw_data.to_le_bytes())?; -+ self.writer.write_all(§ion.pointer_to_relocations().to_le_bytes())?; -+ self.writer.write_all(&[0; 4])?; // pointer to line numbers -+ self.writer.write_all(§ion.number_of_relocations.to_le_bytes())?; -+ self.writer.write_all(&[0; 2])?; // number of line numbers -+ self.writer.write_all(&[0x40, 0, 0x30, 0xc0])?; // characteristics -+ } -+ -+ // Return the inner writer and dispose of this object. -+ self.writer.seek(SeekFrom::Start(end_of_file))?; -+ Ok(self.writer) -+ } -+} -+ -+/// Details for writing the section table at the start of the file. -+struct Section { -+ name: [u8; 8], -+ size_of_raw_data: u32, -+ pointer_to_raw_data: u32, -+ number_of_relocations: u16, -+} -+ -+impl Section { -+ fn new() -> Self { -+ Section { -+ name: [0; 8], -+ size_of_raw_data: 0, -+ pointer_to_raw_data: 0, -+ number_of_relocations: 0, -+ } -+ } -+ -+ fn pointer_to_relocations(&self) -> u32 { -+ if self.number_of_relocations == 0 { -+ 0 -+ } else { -+ // assume there is some data if there are some relocations -+ self.pointer_to_raw_data + self.size_of_raw_data -+ } -+ } -+} -+ -+/// Details of a non-section symbol to write at the end of the file. -+/// -+/// Note that `section` is a 1-based index here. -+struct Symbol { -+ name: [u8; 8], -+ value: u32, -+ section: u16, -+} -+ -+/// Returns the bytes for a resource directory table. -+/// -+/// Most of the fields are set to zero, including the timestamp, to aid -+/// with making builds reproducible. -+/// -+/// ```c -+/// typedef struct { -+/// DWORD Characteristics, -+/// DWORD TimeDateStamp, -+/// WORD MajorVersion, -+/// WORD MinorVersion, -+/// WORD NumberOfNamedEntries, -+/// WORD NumberOfIdEntries -+/// } IMAGE_RESOURCE_DIRECTORY; -+/// ``` -+pub fn resource_directory_table(number_of_id_entries: u16) -> [u8; 16] { -+ let mut table = [0; 16]; -+ table[14..16].copy_from_slice(&number_of_id_entries.to_le_bytes()); -+ table -+} -+ -+/// Returns the bytes for a resource directory entry for an ID. -+/// -+/// ```c -+/// typedef struct { -+/// DWORD Name, -+/// DWORD OffsetToData -+/// } IMAGE_RESOURCE_DIRECTORY_ENTRY; -+/// ``` -+pub fn resource_directory_id_entry(id: u32, offset: u32, subdirectory: bool) -> [u8; 8] { -+ let mut entry = [0; 8]; -+ entry[0..4].copy_from_slice(&id.to_le_bytes()); -+ let flag: u32 = if subdirectory { 0x80000000 } else { 0 }; -+ entry[4..8].copy_from_slice(&((offset & 0x7fffffff) | flag).to_le_bytes()); -+ entry -+} -+ -+/// Returns the bytes for a resource data entry. -+/// -+/// ```c -+/// typedef struct { -+/// DWORD OffsetToData, -+/// DWORD Size, -+/// DWORD CodePage, -+/// DWORD Reserved -+/// } IMAGE_RESOURCE_DATA_ENTRY; -+/// ``` -+pub fn resource_data_entry(rva: u32, size: u32) -> [u8; 16] { -+ let mut entry = [0; 16]; -+ entry[0..4].copy_from_slice(&rva.to_le_bytes()); -+ entry[4..8].copy_from_slice(&size.to_le_bytes()); -+ entry -+} -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/error.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/error.rs ---- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/error.rs 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/error.rs 2024-03-25 11:10:27.790696600 -0700 -@@ -0,0 +1,57 @@ -+//! Error handling for application manifest embedding. -+ -+use std::fmt::{self, Display, Formatter}; -+use std::io::{self, ErrorKind}; -+ -+/// The error type which is returned when application manifest embedding fails. -+#[derive(Debug)] -+pub struct Error { -+ repr: Repr, -+} -+ -+#[derive(Debug)] -+enum Repr { -+ IoError(io::Error), -+ UnknownTarget, -+} -+ -+impl Error { -+ pub(crate) fn unknown_target() -> Error { -+ Error { -+ repr: Repr::UnknownTarget, -+ } -+ } -+} -+ -+impl Display for Error { -+ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { -+ match self.repr { -+ Repr::IoError(ref e) => write!(f, "I/O error: {}", e), -+ Repr::UnknownTarget => f.write_str("unknown target"), -+ } -+ } -+} -+ -+impl std::error::Error for Error { -+ fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { -+ match self.repr { -+ Repr::IoError(ref e) => Some(e), -+ _ => None, -+ } -+ } -+} -+ -+impl From for Error { -+ fn from(e: io::Error) -> Self { -+ Error { repr: Repr::IoError(e) } -+ } -+} -+ -+impl From for io::Error { -+ fn from(e: Error) -> Self { -+ match e.repr { -+ Repr::IoError(ioe) => ioe, -+ _ => io::Error::new(ErrorKind::Other, e), -+ } -+ } -+} -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/mod.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/mod.rs ---- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/mod.rs 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/mod.rs 2024-03-25 11:10:27.790696600 -0700 -@@ -0,0 +1,142 @@ -+use std::env; -+use std::fs::{self, File}; -+use std::io::{self, stdout, BufWriter, Cursor, Write}; -+use std::path::{Path, PathBuf}; -+ -+use crate::manifest::ManifestBuilder; -+ -+use self::coff::{resource_data_entry, resource_directory_id_entry, resource_directory_table, CoffWriter, MachineType}; -+use self::error::Error; -+ -+mod coff; -+pub mod error; -+ -+#[cfg(test)] -+mod test; -+ -+/// Embeds the manifest described by `manifest` by converting it to XML, -+/// then saving it to a file and passing the correct options to the linker -+/// on MSVC targets, or by building a static library and instructing Cargo -+/// to link the executable against it on GNU targets. -+pub fn embed_manifest(manifest: ManifestBuilder) -> Result<(), Error> { -+ let out_dir = get_out_dir()?; -+ let target = get_target()?; -+ if matches!(target.os, TargetOs::WindowsMsvc) { -+ let manifest_file = out_dir.join("manifest.xml"); -+ write!(BufWriter::new(File::create(&manifest_file)?), "{}", manifest)?; -+ link_manifest_msvc(&manifest_file, &mut stdout().lock()) -+ } else { -+ let manifest_data = manifest.to_string(); -+ link_manifest_gnu(manifest_data.as_bytes(), &out_dir, target.arch, &mut stdout().lock()) -+ } -+} -+ -+/// Directly embeds the manifest in the provided `file` by passing the correct -+/// options to the linker on MSVC targets, or by building a static library -+/// and instructing Cargo to link the executable against it on GNU targets. -+pub fn embed_manifest_file>(file: P) -> Result<(), io::Error> { -+ let out_dir = get_out_dir()?; -+ let target = get_target()?; -+ if matches!(target.os, TargetOs::WindowsMsvc) { -+ Ok(link_manifest_msvc(file.as_ref(), &mut stdout().lock())?) -+ } else { -+ let manifest = fs::read(file.as_ref())?; -+ Ok(link_manifest_gnu(&manifest, &out_dir, target.arch, &mut stdout().lock())?) -+ } -+} -+ -+fn get_out_dir() -> Result { -+ match env::var_os("OUT_DIR") { -+ Some(dir) => Ok(PathBuf::from(dir)), -+ None => env::current_dir(), -+ } -+} -+ -+enum TargetOs { -+ WindowsGnu, -+ WindowsMsvc, -+} -+ -+struct Target { -+ arch: MachineType, -+ os: TargetOs, -+} -+ -+fn get_target() -> Result { -+ match env::var("TARGET") { -+ Ok(target) => parse_target(&target), -+ _ => Err(Error::unknown_target()), -+ } -+} -+ -+fn parse_target(target: &str) -> Result { -+ let mut iter = target.splitn(3, '-'); -+ let arch = match iter.next() { -+ Some("i686") => MachineType::I386, -+ Some("aarch64") => MachineType::Aarch64, -+ Some("x86_64") => MachineType::X86_64, -+ _ => return Err(Error::unknown_target()), -+ }; -+ if iter.next() != Some("pc") { -+ return Err(Error::unknown_target()); -+ } -+ let os = match iter.next() { -+ Some("windows-gnu") => TargetOs::WindowsGnu, -+ Some("windows-gnullvm") => TargetOs::WindowsGnu, -+ Some("windows-msvc") => TargetOs::WindowsMsvc, -+ _ => return Err(Error::unknown_target()), -+ }; -+ Ok(Target { arch, os }) -+} -+ -+fn link_manifest_msvc(manifest_path: &Path, out: &mut W) -> Result<(), Error> { -+ writeln!(out, "cargo:rustc-link-arg-bins=/MANIFEST:EMBED")?; -+ writeln!( -+ out, -+ "cargo:rustc-link-arg-bins=/MANIFESTINPUT:{}", -+ manifest_path.canonicalize()?.display() -+ )?; -+ writeln!(out, "cargo:rustc-link-arg-bins=/MANIFESTUAC:NO")?; -+ Ok(()) -+} -+ -+fn link_manifest_gnu(manifest: &[u8], out_dir: &Path, arch: MachineType, out: &mut W) -> Result<(), Error> { -+ // Generate a COFF object file containing the manifest in a .rsrc section. -+ let object_data = create_object_file(manifest, arch)?; -+ let path = out_dir.join("embed-manifest.o"); -+ fs::create_dir_all(out_dir)?; -+ fs::write(&path, &object_data)?; -+ -+ // Link the manifest with the executable. -+ writeln!(out, "cargo:rustc-link-arg-bins={}", path.display())?; -+ Ok(()) -+} -+ -+fn create_object_file(manifest: &[u8], arch: MachineType) -> Result, io::Error> { -+ // Start object file with two sections to be combined by the linker. -+ let mut obj = CoffWriter::new(Cursor::new(Vec::with_capacity(4096)), arch, 2); -+ -+ // Define a symbol for the manifest data. -+ let symbol_index = obj.add_symbol(b"$R000000"); -+ -+ // Create resource directories for type ID 24, name ID 1, language ID 1033. -+ obj.start_section(b".rsrc$01")?; -+ obj.add_data(&resource_directory_table(1))?; -+ obj.add_data(&resource_directory_id_entry(24, 24, true))?; -+ obj.add_data(&resource_directory_table(1))?; -+ obj.add_data(&resource_directory_id_entry(1, 48, true))?; -+ obj.add_data(&resource_directory_table(1))?; -+ obj.add_data(&resource_directory_id_entry(1033, 72, false))?; -+ -+ // Add resource data entry with relocation of its address to the defined symbol. -+ let address = obj.add_data(&resource_data_entry(0, manifest.len() as u32))?; -+ obj.relocation(address, symbol_index)?; -+ -+ // Add the manifest data to the resource data section. -+ obj.start_section(b".rsrc$02")?; -+ obj.set_symbol(symbol_index); -+ obj.add_data(manifest)?; -+ -+ // Finish writing and return the populated object data. -+ Ok(obj.finish()?.into_inner()) -+} -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/test.rs rustc-1.77.0-src/vendor/embed-manifest/src/embed/test.rs ---- rustc-1.77.0-src/vendor.orig/embed-manifest/src/embed/test.rs 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/src/embed/test.rs 2024-03-25 11:10:27.791701600 -0700 -@@ -0,0 +1,177 @@ -+use std::fs; -+use std::path::{Path, PathBuf}; -+ -+use object::coff::CoffFile; -+use object::pe::{ImageResourceDataEntry, ImageResourceDirectory, ImageResourceDirectoryEntry, IMAGE_RESOURCE_DATA_IS_DIRECTORY}; -+use object::{ -+ pod, Architecture, LittleEndian, Object, ObjectSection, ObjectSymbol, RelocationEncoding, RelocationKind, SectionKind, -+}; -+use tempfile::{tempdir, TempDir}; -+ -+use crate::embed::coff::MachineType; -+use crate::embed::{create_object_file, link_manifest_gnu, link_manifest_msvc, TargetOs}; -+use crate::new_manifest; -+ -+#[test] -+fn create_obj() { -+ let res = do_embed_file(MachineType::X86_64, TargetOs::WindowsGnu); -+ let data = fs::read(&res.object_file()).unwrap(); -+ let obj = CoffFile::parse(&data[..]).unwrap(); -+ assert_eq!(obj.architecture(), Architecture::X86_64); -+ let expected_manifest = fs::read(&sample_manifest_path()).unwrap(); -+ check_object_file(obj, &expected_manifest); -+} -+ -+#[test] -+fn link_lib_gnu() { -+ let res = do_embed_file(MachineType::X86_64, TargetOs::WindowsGnu); -+ assert!(res.object_file().exists()); -+ let object_option = format!("cargo:rustc-link-arg-bins={}", res.object_file().display()); -+ assert_eq!(res.lines(), &[object_option.as_str()]); -+} -+ -+#[test] -+fn link_file_msvc() { -+ let res = do_embed_file(MachineType::X86_64, TargetOs::WindowsMsvc); -+ assert!(!res.object_file().exists()); -+ let mut input_option = String::from("cargo:rustc-link-arg-bins=/MANIFESTINPUT:"); -+ input_option.push_str(res.manifest_path.canonicalize().unwrap().to_str().unwrap()); -+ assert_eq!( -+ res.lines(), -+ &[ -+ "cargo:rustc-link-arg-bins=/MANIFEST:EMBED", -+ input_option.as_str(), -+ "cargo:rustc-link-arg-bins=/MANIFESTUAC:NO" -+ ] -+ ); -+} -+ -+struct EmbedResult { -+ manifest_path: PathBuf, -+ out_dir: TempDir, -+ output: String, -+} -+ -+impl EmbedResult { -+ fn object_file(&self) -> PathBuf { -+ self.out_dir.path().join("embed-manifest.o") -+ } -+ -+ fn lines(&self) -> Vec<&str> { -+ self.output.lines().collect() -+ } -+} -+ -+fn sample_manifest_path() -> PathBuf { -+ Path::new(env!("CARGO_MANIFEST_DIR")).join("sample.exe.manifest") -+} -+ -+fn do_embed_file(arch: MachineType, os: TargetOs) -> EmbedResult { -+ let manifest_path = sample_manifest_path(); -+ let out_dir = tempdir().unwrap(); -+ let mut buf: Vec = Vec::new(); -+ if matches!(os, TargetOs::WindowsMsvc) { -+ link_manifest_msvc(&manifest_path, &mut buf).unwrap(); -+ } else { -+ link_manifest_gnu(&fs::read(&manifest_path).unwrap(), out_dir.path(), arch, &mut buf).unwrap(); -+ } -+ EmbedResult { -+ manifest_path, -+ out_dir, -+ output: String::from_utf8(buf).unwrap(), -+ } -+} -+ -+#[test] -+fn object_file_x86() { -+ let manifest = new_manifest("Test.X86").to_string().into_bytes(); -+ let file = create_object_file(&manifest, MachineType::I386).unwrap(); -+ let obj = CoffFile::parse(&file[..]).unwrap(); -+ assert_eq!(obj.architecture(), Architecture::I386); -+ check_object_file(obj, &manifest); -+} -+ -+#[test] -+fn object_file_x86_64() { -+ let manifest = new_manifest("Test.X86_64").to_string().into_bytes(); -+ let file = create_object_file(&manifest, MachineType::X86_64).unwrap(); -+ let obj = CoffFile::parse(&file[..]).unwrap(); -+ assert_eq!(obj.architecture(), Architecture::X86_64); -+ check_object_file(obj, &manifest); -+} -+ -+#[test] -+fn object_file_aarch64() { -+ let manifest = new_manifest("Test.AARCH64").to_string().into_bytes(); -+ let file = create_object_file(&manifest, MachineType::Aarch64).unwrap(); -+ let obj = CoffFile::parse(&file[..]).unwrap(); -+ assert_eq!(obj.architecture(), Architecture::Aarch64); -+ check_object_file(obj, &manifest); -+} -+ -+fn check_object_file(obj: CoffFile, expected_manifest: &[u8]) { -+ // There should be two sections `.rsrc$01` and `.rsrc$02. -+ assert_eq!( -+ obj.sections().map(|s| s.name().unwrap().to_string()).collect::>(), -+ &[".rsrc$01", ".rsrc$02"] -+ ); -+ -+ // There should be two section symbols and one for relocation. -+ assert_eq!( -+ obj.symbols().map(|s| s.name().unwrap().to_string()).collect::>(), -+ &["$R000000", ".rsrc$01", ".rsrc$02"] -+ ); -+ -+ // The resource sections must be data sections. -+ let rsrc01 = obj.section_by_name(".rsrc$01").unwrap(); -+ let rsrc02 = obj.section_by_name(".rsrc$02").unwrap(); -+ assert_eq!(rsrc01.address(), 0); -+ assert_eq!(rsrc01.kind(), SectionKind::Data); -+ assert_eq!(rsrc02.address(), 0); -+ assert_eq!(rsrc02.kind(), SectionKind::Data); -+ -+ // The data RVA in the resource data entry must be relocatable. -+ let (addr, reloc) = rsrc01.relocations().next().unwrap(); -+ assert_eq!(reloc.kind(), RelocationKind::ImageOffset); -+ assert_eq!(reloc.encoding(), RelocationEncoding::Generic); -+ assert_eq!(addr, 0x48); // size of the directory table, three directories, and no strings -+ assert_eq!(reloc.addend(), 0); -+ -+ // The resource directory contains one manifest resource type subdirectory. -+ let data = rsrc01.data().unwrap(); -+ let (dir, rest) = pod::from_bytes::(data).unwrap(); -+ assert_eq!(0, dir.number_of_named_entries.get(LittleEndian)); -+ assert_eq!(1, dir.number_of_id_entries.get(LittleEndian)); -+ let (entries, _) = pod::slice_from_bytes::(rest, 1).unwrap(); -+ assert_eq!(24, entries[0].name_or_id.get(LittleEndian)); -+ let offset = entries[0].offset_to_data_or_directory.get(LittleEndian); -+ assert_eq!(IMAGE_RESOURCE_DATA_IS_DIRECTORY, offset & IMAGE_RESOURCE_DATA_IS_DIRECTORY); -+ let offset = (offset & !IMAGE_RESOURCE_DATA_IS_DIRECTORY) as usize; -+ -+ // The manifest subdirectory contains one image (not DLL) manifest subdirectory. -+ let (dir, rest) = pod::from_bytes::(&data[offset..]).unwrap(); -+ assert_eq!(0, dir.number_of_named_entries.get(LittleEndian)); -+ assert_eq!(1, dir.number_of_id_entries.get(LittleEndian)); -+ let (entries, _) = pod::slice_from_bytes::(rest, 1).unwrap(); -+ assert_eq!(1, entries[0].name_or_id.get(LittleEndian)); -+ let offset = entries[0].offset_to_data_or_directory.get(LittleEndian); -+ assert_eq!(IMAGE_RESOURCE_DATA_IS_DIRECTORY, offset & IMAGE_RESOURCE_DATA_IS_DIRECTORY); -+ let offset = (offset & !IMAGE_RESOURCE_DATA_IS_DIRECTORY) as usize; -+ -+ // The image manifest subdirectory contains one US English manifest data entry. -+ let (dir, rest) = pod::from_bytes::(&data[offset..]).unwrap(); -+ assert_eq!(0, dir.number_of_named_entries.get(LittleEndian)); -+ assert_eq!(1, dir.number_of_id_entries.get(LittleEndian)); -+ let (entries, _) = pod::slice_from_bytes::(rest, 1).unwrap(); -+ assert_eq!(0x0409, entries[0].name_or_id.get(LittleEndian)); -+ let offset = entries[0].offset_to_data_or_directory.get(LittleEndian); -+ assert_eq!(0, offset & IMAGE_RESOURCE_DATA_IS_DIRECTORY); -+ let offset = offset as usize; -+ -+ // The manifest data matches what was added. -+ let (entry, _) = pod::from_bytes::(&data[offset..]).unwrap(); -+ let end = entry.size.get(LittleEndian) as usize; -+ let resource_data = rsrc02.data().unwrap(); -+ let manifest = &resource_data[..end]; -+ assert_eq!(manifest, expected_manifest); -+} -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/lib.rs rustc-1.77.0-src/vendor/embed-manifest/src/lib.rs ---- rustc-1.77.0-src/vendor.orig/embed-manifest/src/lib.rs 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/src/lib.rs 2024-03-25 11:10:27.791701600 -0700 -@@ -0,0 +1,128 @@ -+//! The `embed-manifest` crate provides a straightforward way to embed -+//! a Windows manifest in an executable, whatever the build environment -+//! and even when cross-compiling, without dependencies on external -+//! tools from LLVM or MinGW. -+//! -+//! This should be called from a [build script][1], as shown below. -+//! -+//! [1]: https://doc.rust-lang.org/cargo/reference/build-scripts.html -+//! -+//! On MSVC targets, the manifest file is embedded in the executable by -+//! instructing Cargo to pass `/MANIFEST` options to `LINK.EXE`. This -+//! requires Cargo from Rust 1.56. -+//! -+//! On GNU targets, the manifest file is added as a resource in a COFF -+//! object file, and Cargo is instructed to link this file into the -+//! executable, also using functionality from Rust 1.56. -+//! -+//! # Usage -+//! -+//! This crate should be added to the `[build-dependencies]` section in -+//! your executable’s `Cargo.toml`: -+//! -+//! ```toml -+//! [build-dependencies] -+//! embed-manifest = "1.3.1" -+//! ``` -+//! -+//! In the same directory, create a `build.rs` file to call this crate’s -+//! code when building for Windows, and to only run once: -+//! -+//! ``` -+//! use embed_manifest::{embed_manifest, new_manifest}; -+//! -+//! fn main() { -+//! # let tempdir = tempfile::tempdir().unwrap(); -+//! # std::env::set_var("OUT_DIR", tempdir.path()); -+//! # std::env::set_var("TARGET", "x86_64-pc-windows-gnu"); -+//! # std::env::set_var("CARGO_CFG_WINDOWS", ""); -+//! if std::env::var_os("CARGO_CFG_WINDOWS").is_some() { -+//! embed_manifest(new_manifest("Contoso.Sample")).expect("unable to embed manifest file"); -+//! } -+//! println!("cargo:rerun-if-changed=build.rs"); -+//! } -+//! ``` -+//! -+//! To customise the application manifest, use the methods on it to change things like -+//! enabling the segment heap: -+//! -+//! ``` -+//! use embed_manifest::{embed_manifest, new_manifest, manifest::HeapType}; -+//! -+//! fn main() { -+//! # let tempdir = tempfile::tempdir().unwrap(); -+//! # std::env::set_var("OUT_DIR", tempdir.path()); -+//! # std::env::set_var("TARGET", "x86_64-pc-windows-gnu"); -+//! # std::env::set_var("CARGO_CFG_WINDOWS", ""); -+//! if std::env::var_os("CARGO_CFG_WINDOWS").is_some() { -+//! embed_manifest(new_manifest("Contoso.Sample").heap_type(HeapType::SegmentHeap)) -+//! .expect("unable to embed manifest file"); -+//! } -+//! println!("cargo:rerun-if-changed=build.rs"); -+//! } -+//! ``` -+//! -+//! or making it always use legacy single-byte API encoding and only declaring compatibility -+//! up to Windows 8.1, without checking whether this is a Windows build: -+//! -+//! ``` -+//! use embed_manifest::{embed_manifest, new_manifest}; -+//! use embed_manifest::manifest::{ActiveCodePage::Legacy, SupportedOS::*}; -+//! -+//! fn main() { -+//! # let tempdir = tempfile::tempdir().unwrap(); -+//! # std::env::set_var("OUT_DIR", tempdir.path()); -+//! # std::env::set_var("TARGET", "x86_64-pc-windows-gnu"); -+//! let manifest = new_manifest("Contoso.Sample") -+//! .active_code_page(Legacy) -+//! .supported_os(Windows7..=Windows81); -+//! embed_manifest(manifest).expect("unable to embed manifest file"); -+//! println!("cargo:rerun-if-changed=build.rs"); -+//! } -+//! ``` -+ -+#![allow(clippy::needless_doctest_main)] -+ -+pub use embed::error::Error; -+pub use embed::{embed_manifest, embed_manifest_file}; -+ -+use crate::manifest::ManifestBuilder; -+ -+mod embed; -+pub mod manifest; -+ -+/// Creates a new [`ManifestBuilder`] with sensible defaults, allowing customisation -+/// before the Windows application manifest XML is generated. -+/// -+/// The initial values used by the manifest are: -+/// - Version number from the `CARGO_PKG_VERSION_MAJOR`, `CARGO_PKG_VERSION_MINOR` and -+/// `CARGO_PKG_VERSION_PATCH` environment variables. This can then be changed with -+/// [`version()`][ManifestBuilder::version]. -+/// - A dependency on version 6 of the Common Controls so that message boxes and dialogs -+/// will use the latest design, and have the best available support for high DPI displays. -+/// This can be removed with -+/// [`remove_dependency`][ManifestBuilder::remove_dependency]. -+/// - [Compatible with Windows from 7 to 11][ManifestBuilder::supported_os], -+/// matching the Rust compiler [tier 1 targets][tier1]. -+/// - A “[maximum version tested][ManifestBuilder::max_version_tested]” of Windows 10 -+/// version 1903. -+/// - An [active code page][ManifestBuilder::active_code_page] of UTF-8, so that -+/// single-byte Windows APIs will generally interpret Rust strings correctly, starting -+/// from Windows 10 version 1903. -+/// - [Version 2 of per-monitor high DPI awareness][manifest::DpiAwareness::PerMonitorV2Only], -+/// so that user interface elements can be scaled correctly by the application and -+/// Common Controls from Windows 10 version 1703. -+/// - [Long path awareness][ManifestBuilder::long_path_aware] from Windows 10 version -+/// 1607 [when separately enabled][longpaths]. -+/// - [Printer driver isolation][ManifestBuilder::printer_driver_isolation] enabled -+/// to improve reliability and security. -+/// - An [execution level][ManifestBuilder::requested_execution_level] of “as invoker” -+/// so that the UAC elevation dialog will never be displayed, regardless of the name -+/// of the program, and [UAC Virtualisation][uac] is disabled in 32-bit programs. -+/// -+/// [tier1]: https://doc.rust-lang.org/nightly/rustc/platform-support.html -+/// [longpaths]: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later -+/// [uac]: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works#virtualization -+pub fn new_manifest(name: &str) -> ManifestBuilder { -+ ManifestBuilder::new(name) -+} -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/mod.rs rustc-1.77.0-src/vendor/embed-manifest/src/manifest/mod.rs ---- rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/mod.rs 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/src/manifest/mod.rs 2024-03-25 11:10:27.791701600 -0700 -@@ -0,0 +1,789 @@ -+//! A builder for Windows application manifest XML files. -+//! -+//! This module allows the construction of application manifests from code with the -+//! [`ManifestBuilder`], for use from a Cargo build script. Once configured, the builder -+//! should be passed to [`embed_manifest()`][crate::embed_manifest] to generate the -+//! correct instructions for Cargo. For any other use, the builder will output the XML -+//! when formatted for [`Display`], or with [`to_string()`][ToString]. For more -+//! information about the different elements of an application manifest, see -+//! [Application Manifests][1] in the Microsoft Windows App Development documentation. -+//! -+//! [1]: https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests -+//! -+//! To generate the manifest XML separately, the XML can be output with `write!` or -+//! copied to a string with [`to_string()`][ToString]. To produce the manifest XML with -+//! extra whitespace for formatting, format it with the ‘alternate’ flag: -+//! -+//! ``` -+//! # use embed_manifest::new_manifest; -+//! let mut builder = new_manifest("Company.OrgUnit.Program"); -+//! assert!(format!("{:#}", builder).lines().eq(r#" -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! UTF-8 -+//! permonitorv2 -+//! true -+//! true -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! -+//! "#.lines())) -+//! ``` -+ -+use std::fmt::{Display, Formatter}; -+use std::ops::RangeBounds; -+use std::{env, fmt}; -+ -+use crate::manifest::xml::XmlFormatter; -+ -+mod xml; -+ -+/// An opaque container to describe the Windows application manifest for the -+/// executable. A new instance with reasonable defaults is created with -+/// [`new_manifest()`][crate::new_manifest]. -+#[derive(Debug)] -+pub struct ManifestBuilder { -+ identity: AssemblyIdentity, -+ dependent_assemblies: Vec, -+ compatibility: ApplicationCompatibility, -+ windows_settings: WindowsSettings, -+ requested_execution_level: RequestedExecutionLevel, -+} -+ -+impl ManifestBuilder { -+ pub(crate) fn new(name: &str) -> Self { -+ ManifestBuilder { -+ identity: AssemblyIdentity::application(name), -+ dependent_assemblies: vec![AssemblyIdentity::new( -+ "Microsoft.Windows.Common-Controls", -+ [6, 0, 0, 0], -+ 0x6595b64144ccf1df, -+ )], -+ compatibility: ApplicationCompatibility { -+ max_version_tested: Some(MaxVersionTested::Windows10Version1903), -+ supported_os: vec![ -+ SupportedOS::Windows7, -+ SupportedOS::Windows8, -+ SupportedOS::Windows81, -+ SupportedOS::Windows10, -+ ], -+ }, -+ windows_settings: WindowsSettings::new(), -+ requested_execution_level: RequestedExecutionLevel { -+ level: ExecutionLevel::AsInvoker, -+ ui_access: false, -+ }, -+ } -+ } -+ -+ /// Set the four-part application version number in the manifest. -+ pub fn version(mut self, major: u16, minor: u16, build: u16, revision: u16) -> Self { -+ self.identity.version = Version(major, minor, build, revision); -+ self -+ } -+ -+ /// Add a dependency on a specific version of a side-by-side assembly -+ /// to the application manifest. For more information on side-by-side -+ /// assemblies, see [Using Side-by-side Assemblies][sxs]. -+ /// -+ /// [sxs]: https://docs.microsoft.com/en-us/windows/win32/sbscs/using-side-by-side-assemblies -+ pub fn dependency(mut self, identity: AssemblyIdentity) -> Self { -+ self.dependent_assemblies.push(identity); -+ self -+ } -+ -+ /// Remove a dependency on a side-by-side assembly. This can be used to -+ /// remove the default dependency on Common Controls version 6: -+ /// -+ /// ``` -+ /// # use embed_manifest::new_manifest; -+ /// new_manifest("Company.OrgUnit.Program") -+ /// .remove_dependency("Microsoft.Windows.Common-Controls") -+ /// # ; -+ /// ``` -+ pub fn remove_dependency(mut self, name: &str) -> Self { -+ self.dependent_assemblies.retain(|d| d.name != name); -+ self -+ } -+ -+ /// Set the “maximum version tested” based on a Windows SDK version. -+ /// This compatibility setting enables the use of XAML Islands, as described in -+ /// [Host a standard WinRT XAML control in a C++ desktop (Win32) app][xaml]. -+ /// -+ /// [xaml]: https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/host-standard-control-with-xaml-islands-cpp -+ pub fn max_version_tested(mut self, version: MaxVersionTested) -> Self { -+ self.compatibility.max_version_tested = Some(version); -+ self -+ } -+ -+ /// Remove the “maximum version tested” from the application compatibility. -+ pub fn remove_max_version_tested(mut self) -> Self { -+ self.compatibility.max_version_tested = None; -+ self -+ } -+ -+ /// Set the range of supported versions of Windows for application compatibility. -+ /// The default value declares compatibility with every version from -+ /// [Windows 7][SupportedOS::Windows7] to [Windows 10 and 11][SupportedOS::Windows10]. -+ pub fn supported_os>(mut self, os_range: R) -> Self { -+ use SupportedOS::*; -+ -+ self.compatibility.supported_os.clear(); -+ for os in [WindowsVista, Windows7, Windows8, Windows81, Windows10] { -+ if os_range.contains(&os) { -+ self.compatibility.supported_os.push(os); -+ } -+ } -+ self -+ } -+ -+ /// Set the code page used for single-byte Windows API, starting from Windows 10 -+ /// version 1903. The default setting of [UTF-8][`ActiveCodePage::Utf8`] makes Rust -+ /// strings work directly with APIs like `MessageBoxA`. -+ pub fn active_code_page(mut self, code_page: ActiveCodePage) -> Self { -+ self.windows_settings.active_code_page = code_page; -+ self -+ } -+ -+ /// Configures how Windows should display this program on monitors where the -+ /// graphics need scaling, whether by the application drawing its user -+ /// interface at different sizes or by the Windows system rendering the graphics -+ /// to a bitmap then resizing that for display. -+ pub fn dpi_awareness(mut self, setting: DpiAwareness) -> Self { -+ self.windows_settings.dpi_awareness = setting; -+ self -+ } -+ -+ /// Attempts to scale GDI primitives by the per-monitor scaling values, -+ /// from Windows 10 version 1703. It seems to be best to leave this disabled. -+ pub fn gdi_scaling(mut self, setting: Setting) -> Self { -+ self.windows_settings.gdi_scaling = setting.enabled(); -+ self -+ } -+ -+ /// Select the memory allocator use by the standard heap allocation APIs, -+ /// including the default Rust allocator. Selecting a different algorithm -+ /// may make performance and memory use better or worse, so any changes -+ /// should be carefully tested. -+ pub fn heap_type(mut self, setting: HeapType) -> Self { -+ self.windows_settings.heap_type = setting; -+ self -+ } -+ -+ /// Enable paths longer than 260 characters with some wide-character Win32 APIs, -+ /// when also enabled in the Windows registry. For more details, see -+ /// [Maximum Path Length Limitation][1] in the Windows App Development -+ /// documentation. -+ /// -+ /// As of Rust 1.58, the [Rust standard library bypasses this limitation][2] itself -+ /// by using Unicode paths beginning with `\\?\`. -+ /// -+ /// [1]: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation -+ /// [2]: https://github.com/rust-lang/rust/pull/89174 -+ pub fn long_path_aware(mut self, setting: Setting) -> Self { -+ self.windows_settings.long_path_aware = setting.enabled(); -+ self -+ } -+ -+ /// Enable printer driver isolation for the application, improving security and -+ /// stability when printing by loading the printer driver in a separate -+ /// application. This is poorly documented, but is described in a blog post, -+ /// “[Application-level Printer Driver Isolation][post]”. -+ /// -+ /// [post]: https://peteronprogramming.wordpress.com/2018/01/22/application-level-printer-driver-isolation/ -+ pub fn printer_driver_isolation(mut self, setting: Setting) -> Self { -+ self.windows_settings.printer_driver_isolation = setting.enabled(); -+ self -+ } -+ -+ /// Configure whether the application should receive mouse wheel scroll events -+ /// with a minimum delta of 1, 40 or 120, as described in -+ /// [Windows precision touchpad devices][touchpad]. -+ /// -+ /// [touchpad]: https://docs.microsoft.com/en-us/windows/win32/w8cookbook/windows-precision-touchpad-devices -+ pub fn scrolling_awareness(mut self, setting: ScrollingAwareness) -> Self { -+ self.windows_settings.scrolling_awareness = setting; -+ self -+ } -+ -+ /// Allows the application to disable the filtering that normally -+ /// removes UWP windows from the results of the `EnumWindows` API. -+ pub fn window_filtering(mut self, setting: Setting) -> Self { -+ self.windows_settings.disable_window_filtering = setting.disabled(); -+ self -+ } -+ -+ /// Selects the authorities to execute the program with, rather than -+ /// [guessing based on a filename][installer] like `setup.exe`, -+ /// `update.exe` or `patch.exe`. -+ /// -+ /// [installer]: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works#installer-detection-technology -+ pub fn requested_execution_level(mut self, level: ExecutionLevel) -> Self { -+ self.requested_execution_level.level = level; -+ self -+ } -+ -+ /// Allows the application to access the user interface of applications -+ /// running with elevated permissions when this program does not, typically -+ /// for accessibility. The program must additionally be correctly signed -+ /// and installed in a trusted location like the Program Files directory. -+ pub fn ui_access(mut self, access: bool) -> Self { -+ self.requested_execution_level.ui_access = access; -+ self -+ } -+} -+ -+impl Display for ManifestBuilder { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ let mut w = XmlFormatter::new(f); -+ w.start_document()?; -+ w.start_element( -+ "assembly", -+ &[ -+ ("xmlns", "urn:schemas-microsoft-com:asm.v1"), -+ ("xmlns:asmv3", "urn:schemas-microsoft-com:asm.v3"), -+ ("manifestVersion", "1.0"), -+ ], -+ )?; -+ self.identity.xml_to(&mut w)?; -+ if !self.dependent_assemblies.is_empty() { -+ w.element("dependency", &[], |w| { -+ for d in self.dependent_assemblies.as_slice() { -+ w.element("dependentAssembly", &[], |w| d.xml_to(w))?; -+ } -+ Ok(()) -+ })?; -+ } -+ self.compatibility.xml_to(&mut w)?; -+ self.windows_settings.xml_to(&mut w)?; -+ self.requested_execution_level.xml_to(&mut w)?; -+ w.end_element("assembly") -+ } -+} -+ -+/// Identity of a side-by-side assembly dependency for the application. -+#[derive(Debug)] -+pub struct AssemblyIdentity { -+ r#type: AssemblyType, -+ name: String, -+ language: Option, -+ processor_architecture: Option, -+ version: Version, -+ public_key_token: Option, -+} -+ -+impl AssemblyIdentity { -+ fn application(name: &str) -> AssemblyIdentity { -+ let major = env::var("CARGO_PKG_VERSION_MAJOR").map_or(0, |s| s.parse().unwrap_or(0)); -+ let minor = env::var("CARGO_PKG_VERSION_MINOR").map_or(0, |s| s.parse().unwrap_or(0)); -+ let patch = env::var("CARGO_PKG_VERSION_PATCH").map_or(0, |s| s.parse().unwrap_or(0)); -+ AssemblyIdentity { -+ r#type: AssemblyType::Win32, -+ name: name.to_string(), -+ language: None, -+ processor_architecture: None, -+ version: Version(major, minor, patch, 0), -+ public_key_token: None, -+ } -+ } -+ -+ /// Creates a new value for a [manifest dependency][ManifestBuilder::dependency], -+ /// with the `version` as an array of numbers like `[1, 0, 0, 0]` for 1.0.0.0, -+ /// and the public key token as a 64-bit number like `0x6595b64144ccf1df`. -+ pub fn new(name: &str, version: [u16; 4], public_key_token: u64) -> AssemblyIdentity { -+ AssemblyIdentity { -+ r#type: AssemblyType::Win32, -+ name: name.to_string(), -+ language: Some("*".to_string()), -+ processor_architecture: Some(AssemblyProcessorArchitecture::All), -+ version: Version(version[0], version[1], version[2], version[3]), -+ public_key_token: Some(PublicKeyToken(public_key_token)), -+ } -+ } -+ -+ /// Change the language from `"*"` to the language code in `language`. -+ pub fn language(mut self, language: &str) -> Self { -+ self.language = Some(language.to_string()); -+ self -+ } -+ -+ /// Change the processor architecture from `"*"` to the architecture in `arch`. -+ pub fn processor_architecture(mut self, arch: AssemblyProcessorArchitecture) -> Self { -+ self.processor_architecture = Some(arch); -+ self -+ } -+ -+ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { -+ let version = self.version.to_string(); -+ let public_key_token = self.public_key_token.as_ref().map(|token| token.to_string()); -+ -+ let mut attrs: Vec<(&str, &str)> = Vec::with_capacity(6); -+ if let Some(ref language) = self.language { -+ attrs.push(("language", language)); -+ } -+ attrs.push(("name", &self.name)); -+ if let Some(ref arch) = self.processor_architecture { -+ attrs.push(("processorArchitecture", arch.as_str())) -+ } -+ if let Some(ref token) = public_key_token { -+ attrs.push(("publicKeyToken", token)); -+ } -+ attrs.push(("type", self.r#type.as_str())); -+ attrs.push(("version", &version)); -+ w.empty_element("assemblyIdentity", &attrs) -+ } -+} -+ -+#[derive(Debug)] -+struct Version(u16, u16, u16, u16); -+ -+impl fmt::Display for Version { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ write!(f, "{}.{}.{}.{}", self.0, self.1, self.2, self.3) -+ } -+} -+ -+#[derive(Debug)] -+struct PublicKeyToken(u64); -+ -+impl fmt::Display for PublicKeyToken { -+ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { -+ write!(f, "{:016x}", self.0) -+ } -+} -+ -+/// Processor architecture for an assembly identity. -+#[derive(Debug)] -+#[non_exhaustive] -+pub enum AssemblyProcessorArchitecture { -+ /// Any processor architecture, as `"*"`. -+ All, -+ /// 32-bit x86 processors, as `"x86"`. -+ X86, -+ /// 64-bit x64 processors, as `"x64"`. -+ Amd64, -+ /// 32-bit ARM processors, as `"arm"`. -+ Arm, -+ /// 64-bit ARM processors, as `"arm64"`. -+ Arm64, -+} -+ -+impl AssemblyProcessorArchitecture { -+ pub fn as_str(&self) -> &'static str { -+ match self { -+ Self::All => "*", -+ Self::X86 => "x86", -+ Self::Amd64 => "amd64", -+ Self::Arm => "arm", -+ Self::Arm64 => "arm64", -+ } -+ } -+} -+ -+impl fmt::Display for AssemblyProcessorArchitecture { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ f.pad(self.as_str()) -+ } -+} -+ -+#[derive(Debug)] -+#[non_exhaustive] -+enum AssemblyType { -+ Win32, -+} -+ -+impl AssemblyType { -+ fn as_str(&self) -> &'static str { -+ "win32" -+ } -+} -+ -+#[derive(Debug)] -+struct ApplicationCompatibility { -+ max_version_tested: Option, -+ supported_os: Vec, -+} -+ -+impl ApplicationCompatibility { -+ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { -+ w.element( -+ "compatibility", -+ &[("xmlns", "urn:schemas-microsoft-com:compatibility.v1")], -+ |w| { -+ w.element("application", &[], |w| { -+ if self.supported_os.contains(&SupportedOS::Windows10) { -+ if let Some(ref version) = self.max_version_tested { -+ w.empty_element("maxversiontested", &[("Id", version.as_str())])?; -+ } -+ } -+ for os in self.supported_os.iter() { -+ w.empty_element("supportedOS", &[("Id", os.as_str())])? -+ } -+ Ok(()) -+ }) -+ }, -+ ) -+ } -+} -+ -+/// Windows build versions for [`max_version_tested()`][ManifestBuilder::max_version_tested] -+/// from the [Windows SDK archive](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/). -+#[derive(Debug)] -+#[non_exhaustive] -+pub enum MaxVersionTested { -+ /// Windows 10 version 1903, with build version 10.0.18362.0. -+ Windows10Version1903, -+ /// Windows 10 version 2004, with build version 10.0.19041.0. -+ Windows10Version2004, -+ /// Windows 10 version 2104, with build version 10.0.20348.0. -+ Windows10Version2104, -+ /// Windows 11, with build version 10.0.22000.194. -+ Windows11, -+ /// Windows 11 version 22H2, with build version 10.0.22621.1. -+ Windows11Version22H2, -+} -+ -+impl MaxVersionTested { -+ /// Return the Windows version as a string. -+ pub fn as_str(&self) -> &'static str { -+ match self { -+ Self::Windows10Version1903 => "10.0.18362.1", -+ Self::Windows10Version2004 => "10.0.19041.0", -+ Self::Windows10Version2104 => "10.0.20348.0", -+ Self::Windows11 => "10.0.22000.194", -+ Self::Windows11Version22H2 => "10.0.22621.1", -+ } -+ } -+} -+ -+impl Display for MaxVersionTested { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ f.pad(self.as_str()) -+ } -+} -+ -+/// Operating system versions for Windows compatibility. -+#[derive(Debug, Ord, PartialOrd, Eq, PartialEq)] -+#[non_exhaustive] -+pub enum SupportedOS { -+ /// Windows Vista and Windows Server 2008. -+ WindowsVista, -+ /// Windows 7 and Windows Server 2008 R2. -+ Windows7, -+ /// Windows 8 and Windows Server 2012. -+ Windows8, -+ /// Windows 8.1 and Windows Server 2012 R2. -+ Windows81, -+ /// Windows 10 and 11, and Windows Server 2016, 2019 and 2022. -+ Windows10, -+} -+ -+impl SupportedOS { -+ /// Returns the GUID string for the Windows version. -+ pub fn as_str(&self) -> &'static str { -+ match self { -+ Self::WindowsVista => "{e2011457-1546-43c5-a5fe-008deee3d3f0}", -+ Self::Windows7 => "{35138b9a-5d96-4fbd-8e2d-a2440225f93a}", -+ Self::Windows8 => "{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}", -+ Self::Windows81 => "{1f676c76-80e1-4239-95bb-83d0f6d0da78}", -+ Self::Windows10 => "{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}", -+ } -+ } -+} -+ -+impl Display for SupportedOS { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ f.pad(self.as_str()) -+ } -+} -+ -+static WS2005: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2005/WindowsSettings"); -+static WS2011: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2011/WindowsSettings"); -+static WS2013: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2013/WindowsSettings"); -+static WS2016: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2016/WindowsSettings"); -+static WS2017: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2017/WindowsSettings"); -+static WS2019: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2019/WindowsSettings"); -+static WS2020: (&str, &str) = ("xmlns", "http://schemas.microsoft.com/SMI/2020/WindowsSettings"); -+ -+#[derive(Debug)] -+struct WindowsSettings { -+ active_code_page: ActiveCodePage, -+ disable_window_filtering: bool, -+ dpi_awareness: DpiAwareness, -+ gdi_scaling: bool, -+ heap_type: HeapType, -+ long_path_aware: bool, -+ printer_driver_isolation: bool, -+ scrolling_awareness: ScrollingAwareness, -+} -+ -+impl WindowsSettings { -+ fn new() -> Self { -+ Self { -+ active_code_page: ActiveCodePage::Utf8, -+ disable_window_filtering: false, -+ dpi_awareness: DpiAwareness::PerMonitorV2Only, -+ gdi_scaling: false, -+ heap_type: HeapType::LowFragmentationHeap, -+ long_path_aware: true, -+ printer_driver_isolation: true, -+ scrolling_awareness: ScrollingAwareness::UltraHighResolution, -+ } -+ } -+ -+ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { -+ w.element("asmv3:application", &[], |w| { -+ w.element("asmv3:windowsSettings", &[], |w| { -+ self.active_code_page.xml_to(w)?; -+ if self.disable_window_filtering { -+ w.element("disableWindowFiltering", &[WS2011], |w| w.text("true"))?; -+ } -+ self.dpi_awareness.xml_to(w)?; -+ if self.gdi_scaling { -+ w.element("gdiScaling", &[WS2017], |w| w.text("true"))?; -+ } -+ if matches!(self.heap_type, HeapType::SegmentHeap) { -+ w.element("heapType", &[WS2020], |w| w.text("SegmentHeap"))?; -+ } -+ if self.long_path_aware { -+ w.element("longPathAware", &[WS2016], |w| w.text("true"))?; -+ } -+ if self.printer_driver_isolation { -+ w.element("printerDriverIsolation", &[WS2011], |w| w.text("true"))?; -+ } -+ self.scrolling_awareness.xml_to(w) -+ }) -+ }) -+ } -+} -+ -+/// Configure whether a Windows setting is enabled or disabled, avoiding confusion -+/// over which of these options `true` and `false` represent. -+#[derive(Debug)] -+pub enum Setting { -+ Disabled = 0, -+ Enabled = 1, -+} -+ -+impl Setting { -+ /// Returns `true` if the setting should be disabled. -+ fn disabled(&self) -> bool { -+ matches!(self, Setting::Disabled) -+ } -+ -+ /// Returns `true` if the setting should be enabled. -+ fn enabled(&self) -> bool { -+ matches!(self, Setting::Enabled) -+ } -+} -+ -+/// The code page used by single-byte APIs in the program. -+#[derive(Debug)] -+#[non_exhaustive] -+pub enum ActiveCodePage { -+ /// Use the code page from the configured system locale, or UTF-8 if “Use Unicode UTF-8 -+ /// for worldwide language support” is configured. -+ System, -+ /// Use UTF-8 from Windows 10 version 1903 and on Windows 11. -+ Utf8, -+ /// Use the code page from the configured system locale, even when “Use Unicode UTF-8 -+ /// for worldwide language support” is configured. -+ Legacy, -+ /// Use the code page from the configured system locale on Windows 10, or from this -+ /// locale on Windows 11. -+ Locale(String), -+} -+ -+impl ActiveCodePage { -+ pub fn as_str(&self) -> &str { -+ match self { -+ Self::System => "", -+ Self::Utf8 => "UTF-8", -+ Self::Legacy => "Legacy", -+ Self::Locale(s) => s, -+ } -+ } -+ -+ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { -+ match self { -+ Self::System => Ok(()), -+ _ => w.element("activeCodePage", &[WS2019], |w| w.text(self.as_str())), -+ } -+ } -+} -+ -+impl Display for ActiveCodePage { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ f.pad(self.as_str()) -+ } -+} -+ -+/// Options for how Windows will handle drawing on monitors when the graphics -+/// need scaling to display at the correct size. -+/// -+/// See [High DPI Desktop Application Development on Windows][dpi] for more details -+/// about the impact of these options. -+/// -+/// [dpi]: https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows -+#[derive(Debug)] -+#[non_exhaustive] -+pub enum DpiAwareness { -+ /// DPI awareness is not configured, so Windows will scale the application unless -+ /// changed via the `SetProcessDpiAware` or `SetProcessDpiAwareness` API. -+ UnawareByDefault, -+ /// DPI awareness is not configured, with Windows 8.1, 10 and 11 not able -+ /// to change the setting via API. -+ Unaware, -+ /// The program uses the system DPI, or the DPI of the monitor they start on if -+ /// “Fix scaling for apps” is enabled. If the DPI does not match the current -+ /// monitor then Windows will scale the application. -+ System, -+ /// The program uses the system DPI on Windows Vista, 7 and 8, and version 1 of -+ /// per-monitor DPI awareness on Windows 8.1, 10 and 11. Using version 1 of the -+ /// API is not recommended. -+ PerMonitor, -+ /// The program uses the system DPI on Windows Vista, 7 and 8, version 1 of -+ /// per-monitor DPI awareness on Windows 8.1 and Windows 10 version 1507 and 1511, -+ /// and version 2 of per-monitor DPI awareness from Windows 10 version 1607. -+ PerMonitorV2, -+ /// The program uses the system DPI on Windows Vista, 7, 8, 8.1 and Windows 10 -+ /// version 1507 and 1511, and version 2 of per-monitor DPI awareness from -+ /// Windows 10 version 1607. -+ PerMonitorV2Only, -+} -+ -+impl DpiAwareness { -+ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { -+ let settings = match self { -+ Self::UnawareByDefault => (None, None), -+ Self::Unaware => (Some("false"), None), -+ Self::System => (Some("true"), None), -+ Self::PerMonitor => (Some("true/pm"), None), -+ Self::PerMonitorV2 => (Some("true/pm"), Some("permonitorv2,permonitor")), -+ Self::PerMonitorV2Only => (None, Some("permonitorv2")), -+ }; -+ if let Some(dpi_aware) = settings.0 { -+ w.element("dpiAware", &[WS2005], |w| w.text(dpi_aware))?; -+ } -+ if let Some(dpi_awareness) = settings.1 { -+ w.element("dpiAwareness", &[WS2016], |w| w.text(dpi_awareness))?; -+ } -+ Ok(()) -+ } -+} -+ -+/// The heap type for the default memory allocator. -+#[derive(Debug)] -+#[non_exhaustive] -+pub enum HeapType { -+ /// The default heap type since Windows Vista. -+ LowFragmentationHeap, -+ /// The modern segment heap, which may reduce total memory allocation in some programs. -+ /// This is supported since Windows 10 version 2004. See -+ /// [Improving Memory Usage in Microsoft Edge][edge]. -+ /// -+ /// [edge]: https://blogs.windows.com/msedgedev/2020/06/17/improving-memory-usage/ -+ SegmentHeap, -+} -+ -+/// Whether the application supports scroll wheel events with a minimum delta -+/// of 1, 40 or 120. -+#[derive(Debug)] -+#[non_exhaustive] -+pub enum ScrollingAwareness { -+ /// The application can only handle scroll wheel events with the original delta of 120. -+ LowResolution, -+ /// The application can handle high precision scroll wheel events with a delta of 40. -+ HighResolution, -+ /// The application can handle ultra high precision scroll wheel events with a delta as low as 1. -+ UltraHighResolution, -+} -+ -+impl ScrollingAwareness { -+ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { -+ match self { -+ Self::LowResolution => w.element("ultraHighResolutionScrollingAware", &[WS2013], |w| w.text("false")), -+ Self::HighResolution => w.element("highResolutionScrollingAware", &[WS2013], |w| w.text("true")), -+ Self::UltraHighResolution => Ok(()), -+ } -+ } -+} -+ -+#[derive(Debug)] -+struct RequestedExecutionLevel { -+ level: ExecutionLevel, -+ ui_access: bool, -+} -+ -+impl RequestedExecutionLevel { -+ fn xml_to(&self, w: &mut XmlFormatter) -> fmt::Result { -+ w.element("asmv3:trustInfo", &[], |w| { -+ w.element("asmv3:security", &[], |w| { -+ w.element("asmv3:requestedPrivileges", &[], |w| { -+ w.empty_element( -+ "asmv3:requestedExecutionLevel", -+ &[ -+ ("level", self.level.as_str()), -+ ("uiAccess", if self.ui_access { "true" } else { "false" }), -+ ], -+ ) -+ }) -+ }) -+ }) -+ } -+} -+ -+/// The requested execution level for the application when started. -+/// -+/// The behaviour of each option is described in -+/// [Designing UAC Applications for Windows Vista Step 6: Create and Embed an Application Manifest][step6]. -+/// -+/// [step6]: https://msdn.microsoft.com/en-us/library/bb756929.aspx -+#[derive(Debug)] -+pub enum ExecutionLevel { -+ /// The application will always run with the same authorities as the program invoking it. -+ AsInvoker, -+ /// The program will run without special authorities for a standard user, but will try to -+ /// run with administrator authority if the user is an administrator. This is rarely used. -+ HighestAvailable, -+ /// The application will run as an administrator, prompting for elevation if necessary. -+ RequireAdministrator, -+} -+ -+impl ExecutionLevel { -+ pub fn as_str(&self) -> &'static str { -+ match self { -+ Self::AsInvoker => "asInvoker", -+ Self::HighestAvailable => "highestAvailable", -+ Self::RequireAdministrator => "requireAdministrator", -+ } -+ } -+} -+ -+impl Display for ExecutionLevel { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ f.pad(self.as_str()) -+ } -+} -diff -Nur rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/xml.rs rustc-1.77.0-src/vendor/embed-manifest/src/manifest/xml.rs ---- rustc-1.77.0-src/vendor.orig/embed-manifest/src/manifest/xml.rs 1969-12-31 16:00:00.000000000 -0800 -+++ rustc-1.77.0-src/vendor/embed-manifest/src/manifest/xml.rs 2024-03-25 11:10:27.791701600 -0700 -@@ -0,0 +1,140 @@ -+use std::fmt::{self, Display, Formatter, Write}; -+ -+/// Simple but still over-engineered XML generator for a [`Formatter`], for generating -+/// Windows Manifest XML. This can easily generate invalid XML. -+/// -+/// When used correctly, this should generate the same output as MT’s `-canonicalize` -+/// option. -+pub struct XmlFormatter<'a, 'f> { -+ f: &'f mut Formatter<'a>, -+ state: State, -+ depth: usize, -+} -+ -+#[derive(Eq, PartialEq)] -+enum State { -+ Init, -+ StartTag, -+ Text, -+} -+ -+impl<'a, 'f> XmlFormatter<'a, 'f> { -+ pub fn new(f: &'f mut Formatter<'a>) -> Self { -+ Self { -+ f, -+ state: State::Init, -+ depth: 0, -+ } -+ } -+ -+ fn pretty(&mut self) -> fmt::Result { -+ if self.f.alternate() { -+ self.f.write_str("\r\n")?; -+ for _ in 0..self.depth { -+ self.f.write_str(" ")?; -+ } -+ } -+ Ok(()) -+ } -+ -+ pub fn start_document(&mut self) -> fmt::Result { -+ if !self.f.alternate() { -+ self.f.write_char('\u{FEFF}')?; -+ } -+ self.f -+ .write_str("\r\n") -+ } -+ -+ pub fn element fmt::Result>(&mut self, name: &str, attrs: &[(&str, &str)], f: F) -> fmt::Result { -+ self.start_element(name, attrs)?; -+ f(self)?; -+ self.end_element(name) -+ } -+ -+ pub fn empty_element(&mut self, name: &str, attrs: &[(&str, &str)]) -> fmt::Result { -+ self.start_element(name, attrs)?; -+ self.end_element(name) -+ } -+ -+ pub fn start_element(&mut self, name: &str, attrs: &[(&str, &str)]) -> fmt::Result { -+ if self.state == State::StartTag { -+ self.f.write_char('>')?; -+ } -+ if self.depth != 0 { -+ self.pretty()?; -+ } -+ write!(self.f, "<{}", name)?; -+ for (name, value) in attrs { -+ write!(self.f, " {}=\"{}\"", name, Xml(value))?; -+ } -+ self.depth += 1; -+ self.state = State::StartTag; -+ Ok(()) -+ } -+ -+ pub fn end_element(&mut self, name: &str) -> fmt::Result { -+ self.depth -= 1; -+ match self.state { -+ State::Init => { -+ self.pretty()?; -+ write!(self.f, "", name) -+ } -+ State::Text => { -+ self.state = State::Init; -+ write!(self.f, "", name) -+ } -+ State::StartTag => { -+ self.state = State::Init; -+ if self.f.alternate() { -+ self.f.write_str("/>") -+ } else { -+ write!(self.f, ">", name) -+ } -+ } -+ } -+ } -+ -+ pub fn text(&mut self, s: &str) -> fmt::Result { -+ if self.state == State::StartTag { -+ self.state = State::Text; -+ self.f.write_char('>')?; -+ } -+ Xml(s).fmt(self.f) -+ } -+} -+ -+/// Temporary wrapper for outputting a string with XML attribute encoding. -+/// This does not do anything with the control characters which are not -+/// valid in XML, encoded or not. -+struct Xml<'a>(&'a str); -+ -+impl<'a> Display for Xml<'a> { -+ fn fmt(&self, f: &mut Formatter) -> fmt::Result { -+ // Process the string in blocks separated by special characters, so that the parts that -+ // don't need encoding can be written all at once, not character by character, and with -+ // no checks for whether string slices are aligned on character boundaries. -+ for s in self.0.split_inclusive(&['<', '&', '>', '"', '\r'][..]) { -+ // Check whether the last character in the substring needs encoding. This will be -+ // `None` at the end of the input string. -+ let mut iter = s.chars(); -+ let ch = match iter.next_back() { -+ Some('<') => Some("<"), -+ Some('&') => Some("&"), -+ Some('>') => Some(">"), -+ Some('"') => Some("""), -+ Some('\r') => Some(" "), -+ _ => None, -+ }; -+ // Write the substring except the last character, then the encoded character; -+ // or the entire substring if it is not terminated by a special character. -+ match ch { -+ Some(enc) => { -+ f.write_str(iter.as_str())?; -+ f.write_str(enc)?; -+ } -+ None => f.write_str(s)?, -+ } -+ } -+ Ok(()) -+ } -+} ++{"files":{"CHANGELOG.md":"3b9d90277c0bb06de10a31110f3c7eea58802f2d090266631e32161f2d9c8562","Cargo.toml":"56b4fc99ece4667fd2eb8fe971070e2dc9774efa4221a9d63ffe98a7ee74642e","LICENSE":"d041a5a86caaf9cc7720f3637d689252083a664d9ccd946a36d1c7c708d204cb","README.md":"8cf8a7b20cfb7fa43c4ee9585bf92ea6c5a5c4ca3ef700974edb02025d5146c8","rustfmt.toml":"d364003c8da50e2707b7c01140c170098bac682b3f94ff98057f4ce74a18e62a","sample.exe.manifest":"01e80ef76de2b628d452c7e80022654b9e0c8aee72ec64ee522c7083d835f4df","src/embed/coff.rs":"0ea7bfb9f5135843221912078bfd83a4f424a13cf5a610b25c4275a400484fcc","src/embed/error.rs":"aecb4928e70b02b784557352608f6d4fb9b88b44ae3297a33969a0f2219c416c","src/embed/mod.rs":"0c2df4c80a4b9818f4de8e54074098d195eea19bcdd0858097416e67c733c4d9","src/embed/test.rs":"d527b7ce78bd9672057f2f9e2e268b48ffa40ad909fd6ffd119650d5244cf4a9","src/lib.rs":"ff1e87d48bb9549764e5322c54184934da08127f5187ede0db7f138544b00711","src/manifest/mod.rs":"432f4bbf330fe7c5d57876ba38cd789b6a1cd55f5c1cf408674ed153db8293a5","src/manifest/xml.rs":"1bce12120e17a49da43eabbd1b04f712b3f6ece7fcbca9186319e301890e20c5"},"package":"40ff574b0b0a794f8995383bb83f21f8f99214422cae791cb48d66da524b00f7"} diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index ef5a79140505c..afb6e844855f7 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -11,6 +11,9 @@ fi rust_dist_server=https://static.rust-lang.org/dist #rust_dist_server=https://dev-static.rust-lang.org/dist/2024-03-17 +embed_manifest_version=1.3.1 +embed_manifest_url=https://gitlab.com/careyevans/embed-manifest/-/archive/v${embed_manifest_version}/embed-manifest-v${embed_manifest_version}.tar.gz + _realname=rust pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" @@ -41,6 +44,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" $([[ "$_bootstrapping" == "no" ]] && echo "${MINGW_PACKAGE_PREFIX}-rust") "${MINGW_PACKAGE_PREFIX}-zlib") source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} + "${embed_manifest_url}" "0001-rustc-llvm-fix-libs.patch" "0005-win32-config.patch" "0007-clang-subsystem.patch" @@ -48,16 +52,17 @@ source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} "0011-disable-uac-for-installer.patch" "0012-backport-compiler-builtins.patch" "0013-vendor-embed-manifest.patch") -noextract=(${_realname}c-${pkgver}-src.tar.gz) +noextract=(${_realname}c-${pkgver}-src.tar.gz embed-manifest-v${embed_manifest_version}.tar.gz) sha256sums=('ee106e4c569f52dba3b5b282b105820f86bd8f6b3d09c06b8dce82fb1bb3a4a1' 'SKIP' + 'f1c65919a5f182376ecbfed69f72935abbebad5dc62bd32b2038905258c49453' '7cb1773c288ffb1c1e751edc49b1890c84bf9c362742bc5225d19d474edb73a0' '7d1c4e49524b835a8eadc961b39f5594b12a522a1e24368999be2c7e85399e4e' '1f668f4aed56060ec74fd53a39da1fbaef69b84de510d955baf349db672a8d15' '7a3b5722ff576b0661f36796f088dee4ce318b5dbc3fdcd65b48972de68a0edf' '761d73328d9695a7a2bd2a10be8225f4a56801fee54cbb51c0841b7f16e2bde6' '914fbc9902f72cd0d1bde9c4bc045f1cb3975ebc3bfe26a8db03f237914cf04b' - 'faab966d818c0bb2e163b5b210c9602d7b1407b3a626fa771f1439c598b5721a') + '358de2f3e54afbe4aefd401725227becf2468763b7686c5d4fed3b71d1e95ce9') validpgpkeys=('108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE' # Rust Language (Tag and Release Signing Key) '474E22316ABF4785A88C6E8EA2C794A986419D8A' # Tom Stellard 'B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg @@ -86,9 +91,15 @@ apply_patch_with_msg() { # =========================================== # prepare() { + plain "Extracting ${_realname}c-${pkgver}-src.tar.gz" [[ -d ${srcdir}/${_realname}c-${pkgver}-src ]] && rm -rf ${srcdir}/${_realname}c-${pkgver}-src tar -xzf ${srcdir}/${_realname}c-${pkgver}-src.tar.gz -C ${srcdir} || true + plain "Extracting embed-manifest-v${embed_manifest_version}.tar.gz" + tar -xzf ${srcdir}/embed-manifest-v${embed_manifest_version}.tar.gz -C ${srcdir} || true + # move embed-manifest crate into rust source vendor directory + mv ${srcdir}/embed-manifest-v${embed_manifest_version} ${srcdir}/${_realname}c-${pkgver}-src/vendor/embed-manifest + cd ${srcdir}/${_realname}c-${pkgver}-src apply_patch_with_msg \ 0001-rustc-llvm-fix-libs.patch \ From bfa9b0c83118dfaba089e7341862a3bfd967f38f Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Sat, 30 Mar 2024 11:45:14 -0700 Subject: [PATCH 7/8] rust: backport final compiler_builtins commit This is nicer than my manual backport of the changes, but we still need to patch the .cargo-checksums.json :( --- ...patch => 0012-vendor-embed-manifest.patch} | 0 ... => 0013-backport-compiler-builtins.patch} | 132 +----------------- mingw-w64-rust/PKGBUILD | 21 ++- 3 files changed, 19 insertions(+), 134 deletions(-) rename mingw-w64-rust/{0013-vendor-embed-manifest.patch => 0012-vendor-embed-manifest.patch} (100%) rename mingw-w64-rust/{0012-backport-compiler-builtins.patch => 0013-backport-compiler-builtins.patch} (87%) diff --git a/mingw-w64-rust/0013-vendor-embed-manifest.patch b/mingw-w64-rust/0012-vendor-embed-manifest.patch similarity index 100% rename from mingw-w64-rust/0013-vendor-embed-manifest.patch rename to mingw-w64-rust/0012-vendor-embed-manifest.patch diff --git a/mingw-w64-rust/0012-backport-compiler-builtins.patch b/mingw-w64-rust/0013-backport-compiler-builtins.patch similarity index 87% rename from mingw-w64-rust/0012-backport-compiler-builtins.patch rename to mingw-w64-rust/0013-backport-compiler-builtins.patch index d3af5a0654d2d..29cf6d6226a3d 100644 --- a/mingw-w64-rust/0012-backport-compiler-builtins.patch +++ b/mingw-w64-rust/0013-backport-compiler-builtins.patch @@ -1,131 +1,7 @@ -diff -ur rustc-1.77.0-src/vendor/compiler_builtins.orig/.cargo-checksum.json rustc-1.77.0-src/vendor/compiler_builtins/.cargo-checksum.json ---- rustc-1.77.0-src/vendor/compiler_builtins.orig/.cargo-checksum.json 2024-03-17 13:42:45.000000000 -0700 -+++ rustc-1.77.0-src/vendor/compiler_builtins/.cargo-checksum.json 2024-03-25 10:25:45.364385400 -0700 +--- rustc-1.77.1-src/vendor/compiler_builtins.orig/.cargo-checksum.json 2024-03-30 11:55:36.999852600 -0700 ++++ rustc-1.77.1-src/vendor/compiler_builtins/.cargo-checksum.json 2024-03-30 11:57:57.928815200 -0700 @@ -1 +1 @@ -{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"693b529db2e5dd13069c05ef2e76e26c1fe1b2a590b07cd8e26dfb2df087ba62","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"117b50d6725ee0af0a7b3d197ea580655561f66a870ebc450d96af22bf7f39f6","src/x86_64.rs":"aa26062784eff574fee4075d23b0ea2fdd1bdbc9a7458b099c8fd307ee61024f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} \ No newline at end of file -+{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"693b529db2e5dd13069c05ef2e76e26c1fe1b2a590b07cd8e26dfb2df087ba62","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"15e6e8180d52761492423aa3a1284b6640bc3dee9ba030465ec0e15fe6cfe754","src/x86_64.rs":"13b5e010a0d45164844fda4ada4d4e965f422f2a27768b3ce495c637714cf66f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} -diff -ur rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86.rs rustc-1.77.0-src/vendor/compiler_builtins/src/x86.rs ---- rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86.rs 2024-03-17 13:42:45.000000000 -0700 -+++ rustc-1.77.0-src/vendor/compiler_builtins/src/x86.rs 2024-03-25 10:25:45.697034000 -0700 -@@ -6,7 +6,6 @@ - // calling convention which can't be implemented using a normal Rust function - - // NOTE These functions are never mangled as they are not tested against compiler-rt --// and mangling ___chkstk would break the `jmp ___chkstk` instruction in __alloca - - intrinsics! { - #[naked] -@@ -15,50 +14,8 @@ - target_env = "gnu", - not(feature = "no-asm") - ))] -- pub unsafe extern "C" fn ___chkstk_ms() { -- core::arch::asm!( -- "push %ecx", -- "push %eax", -- "cmp $0x1000,%eax", -- "lea 12(%esp),%ecx", -- "jb 1f", -- "2:", -- "sub $0x1000,%ecx", -- "test %ecx,(%ecx)", -- "sub $0x1000,%eax", -- "cmp $0x1000,%eax", -- "ja 2b", -- "1:", -- "sub %eax,%ecx", -- "test %ecx,(%ecx)", -- "pop %eax", -- "pop %ecx", -- "ret", -- options(noreturn, att_syntax) -- ); -- } -- -- // FIXME: __alloca should be an alias to __chkstk -- #[naked] -- #[cfg(all( -- windows, -- target_env = "gnu", -- not(feature = "no-asm") -- ))] - pub unsafe extern "C" fn __alloca() { -- core::arch::asm!( -- "jmp ___chkstk", // Jump to ___chkstk since fallthrough may be unreliable" -- options(noreturn, att_syntax) -- ); -- } -- -- #[naked] -- #[cfg(all( -- windows, -- target_env = "gnu", -- not(feature = "no-asm") -- ))] -- pub unsafe extern "C" fn ___chkstk() { -+ // _chkstk and _alloca are the same function - core::arch::asm!( - "push %ecx", - "cmp $0x1000,%eax", -diff -ur rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86_64.rs rustc-1.77.0-src/vendor/compiler_builtins/src/x86_64.rs ---- rustc-1.77.0-src/vendor/compiler_builtins.orig/src/x86_64.rs 2024-03-17 13:42:45.000000000 -0700 -+++ rustc-1.77.0-src/vendor/compiler_builtins/src/x86_64.rs 2024-03-25 10:25:45.697034000 -0700 -@@ -6,7 +6,6 @@ - // calling convention which can't be implemented using a normal Rust function - - // NOTE These functions are never mangled as they are not tested against compiler-rt --// and mangling ___chkstk would break the `jmp ___chkstk` instruction in __alloca - - intrinsics! { - #[naked] -@@ -35,49 +34,6 @@ - "ret", - options(noreturn, att_syntax) - ); -- } -- -- #[naked] -- #[cfg(all( -- any(all(windows, target_env = "gnu"), target_os = "uefi"), -- not(feature = "no-asm") -- ))] -- pub unsafe extern "C" fn __alloca() { -- core::arch::asm!( -- "mov %rcx,%rax", // x64 _alloca is a normal function with parameter in rcx -- "jmp ___chkstk", // Jump to ___chkstk since fallthrough may be unreliable" -- options(noreturn, att_syntax) -- ); -- } -- -- #[naked] -- #[cfg(all( -- any(all(windows, target_env = "gnu"), target_os = "uefi"), -- not(feature = "no-asm") -- ))] -- pub unsafe extern "C" fn ___chkstk() { -- core::arch::asm!( -- "push %rcx", -- "cmp $0x1000,%rax", -- "lea 16(%rsp),%rcx", // rsp before calling this routine -> rcx -- "jb 1f", -- "2:", -- "sub $0x1000,%rcx", -- "test %rcx,(%rcx)", -- "sub $0x1000,%rax", -- "cmp $0x1000,%rax", -- "ja 2b", -- "1:", -- "sub %rax,%rcx", -- "test %rcx,(%rcx)", -- "lea 8(%rsp),%rax", // load pointer to the return address into rax -- "mov %rcx,%rsp", // install the new top of stack pointer into rsp -- "mov -8(%rax),%rcx", // restore rcx -- "push (%rax)", // push return address onto the stack -- "sub %rsp,%rax", // restore the original value in rax -- "ret", -- options(noreturn, att_syntax) -- ); - } - } - ++{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"795144b99a63dbc7408bdb462595f2315263083f75f87934a74ceeaaf5bbf902","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"1eebe6e65b11cae356e3c19a886d7585d3cfed41899b5387209516d957613032","src/x86_64.rs":"13b5e010a0d45164844fda4ada4d4e965f422f2a27768b3ce495c637714cf66f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} +\ No newline at end of file diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index afb6e844855f7..52c661eb4695e 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -45,24 +45,26 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-zlib") source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} "${embed_manifest_url}" + "https://github.com/rust-lang/compiler-builtins/commit/d8ab794ed61e2c7c0750f57332a680d5aa8db48c.patch" "0001-rustc-llvm-fix-libs.patch" "0005-win32-config.patch" "0007-clang-subsystem.patch" "0008-disable-self-contained.patch" "0011-disable-uac-for-installer.patch" - "0012-backport-compiler-builtins.patch" - "0013-vendor-embed-manifest.patch") + "0012-vendor-embed-manifest.patch" + "0013-backport-compiler-builtins.patch") noextract=(${_realname}c-${pkgver}-src.tar.gz embed-manifest-v${embed_manifest_version}.tar.gz) sha256sums=('ee106e4c569f52dba3b5b282b105820f86bd8f6b3d09c06b8dce82fb1bb3a4a1' 'SKIP' 'f1c65919a5f182376ecbfed69f72935abbebad5dc62bd32b2038905258c49453' + '0426bc2a82f56ddabc0646100891bc61b9a57f4b7aec9f45aff40d7ba081db4f' '7cb1773c288ffb1c1e751edc49b1890c84bf9c362742bc5225d19d474edb73a0' '7d1c4e49524b835a8eadc961b39f5594b12a522a1e24368999be2c7e85399e4e' '1f668f4aed56060ec74fd53a39da1fbaef69b84de510d955baf349db672a8d15' '7a3b5722ff576b0661f36796f088dee4ce318b5dbc3fdcd65b48972de68a0edf' '761d73328d9695a7a2bd2a10be8225f4a56801fee54cbb51c0841b7f16e2bde6' - '914fbc9902f72cd0d1bde9c4bc045f1cb3975ebc3bfe26a8db03f237914cf04b' - '358de2f3e54afbe4aefd401725227becf2468763b7686c5d4fed3b71d1e95ce9') + '358de2f3e54afbe4aefd401725227becf2468763b7686c5d4fed3b71d1e95ce9' + '8db09957c51213269b37040fb7ade0ea9e0a50cc42c9720d63dc5b662cd5a9ef') validpgpkeys=('108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE' # Rust Language (Tag and Release Signing Key) '474E22316ABF4785A88C6E8EA2C794A986419D8A' # Tom Stellard 'B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg @@ -115,8 +117,15 @@ prepare() { 0011-disable-uac-for-installer.patch fi apply_patch_with_msg \ - 0012-backport-compiler-builtins.patch \ - 0013-vendor-embed-manifest.patch + 0012-vendor-embed-manifest.patch + + # backport required for CLANG32 to build with compiler-rt 18.1.0 + (cd vendor/compiler_builtins && \ + apply_patch_with_msg \ + d8ab794ed61e2c7c0750f57332a680d5aa8db48c.patch) + # still needs to patch .cargo-checksums.json + apply_patch_with_msg \ + 0013-backport-compiler-builtins.patch } build() { From eb84f5bd83e4f2748e090b882693e8ae85dcd3cd Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Sun, 31 Mar 2024 16:12:39 -0700 Subject: [PATCH 8/8] rust: switch compiler builtins commit. The 67c1c0a71a204c089ddae4aec21ec75aa778c11b commit was *not* the version merged upstream, but *is* the version that does not fail on either MINGW32 or CLANG32. Also, take the embed-manifest tar out of noextract. It seems to extract fine. --- mingw-w64-rust/0013-backport-compiler-builtins.patch | 6 +++--- mingw-w64-rust/PKGBUILD | 12 +++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/mingw-w64-rust/0013-backport-compiler-builtins.patch b/mingw-w64-rust/0013-backport-compiler-builtins.patch index 29cf6d6226a3d..01968f0e6f64e 100644 --- a/mingw-w64-rust/0013-backport-compiler-builtins.patch +++ b/mingw-w64-rust/0013-backport-compiler-builtins.patch @@ -1,7 +1,7 @@ ---- rustc-1.77.1-src/vendor/compiler_builtins.orig/.cargo-checksum.json 2024-03-30 11:55:36.999852600 -0700 -+++ rustc-1.77.1-src/vendor/compiler_builtins/.cargo-checksum.json 2024-03-30 11:57:57.928815200 -0700 +--- rustc-1.77.1-src/vendor/compiler_builtins/.cargo-checksum.json.orig 2024-03-26 21:47:50.000000000 -0700 ++++ rustc-1.77.1-src/vendor/compiler_builtins/.cargo-checksum.json 2024-03-31 15:26:15.656091600 -0700 @@ -1 +1 @@ -{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"693b529db2e5dd13069c05ef2e76e26c1fe1b2a590b07cd8e26dfb2df087ba62","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"117b50d6725ee0af0a7b3d197ea580655561f66a870ebc450d96af22bf7f39f6","src/x86_64.rs":"aa26062784eff574fee4075d23b0ea2fdd1bdbc9a7458b099c8fd307ee61024f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} \ No newline at end of file -+{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"795144b99a63dbc7408bdb462595f2315263083f75f87934a74ceeaaf5bbf902","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"1eebe6e65b11cae356e3c19a886d7585d3cfed41899b5387209516d957613032","src/x86_64.rs":"13b5e010a0d45164844fda4ada4d4e965f422f2a27768b3ce495c637714cf66f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} ++{"files":{"Cargo.lock":"4b1c972003a6b5173d5d394900fe4597a80ebf3700463aeca9e6c35ea2f765c7","Cargo.toml":"b75da75896d218b6ca3460febb5606c8dc55c730d54dce2554fa97bfb7068b41","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"795144b99a63dbc7408bdb462595f2315263083f75f87934a74ceeaaf5bbf902","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"3b3cbdbe9c9390990bd90e45b5c839ab65cf820cdf936feabd64b23422359942","libm/src/math/rintf.rs":"43d979c3be5ac8f9f06853a0a5b707dc8e20a9aba2cbbc3a132db84c95c37a11","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"84168e25b0d54f88efc993fd26d2296bd67db6bb531e466805e1fd8b89d76670","src/float/extend.rs":"259d9dee49297a0e28efbc522fa2b411b613e04eccbbc8a7e2dc6657eb93ff39","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"482078b7098a407c395e07077299da6860a02a2b79125803481f66eb1bc18979","src/float/pow.rs":"dc05e1692e29c8e2f3bc7d4e525bd6249b07f6079e14f7cd12772f844ffb9365","src/float/sub.rs":"0bde7c682cf95f18731fcdfdb48b9185da592522946ae64dd0c29a8f9972d744","src/float/trunc.rs":"d5b9204e5d93331996e6e87c8f034ce69f8c273e8cfdd6760275789b9894226f","src/hexagon.rs":"bc42fc9f4749cff1350bb19326bff97ae2f9cceedb72bf1e90d9b59a93727f82","src/hexagon/dfaddsub.s":"4d100ac8e15559d635a7a59db7883a418ab678325448561e1771e60e8be572b6","src/hexagon/dfdiv.s":"80357702ad05cd3e9e5d2e9de622a4deee79c0cfa08876f66d5abc7fe23bb914","src/hexagon/dffma.s":"784b891716112ab1f2f4ecb462fbf39ca7700f4f06c4518d91d8ac157a8e2786","src/hexagon/dfminmax.s":"4aee42cfcafe2df910d2de7ab0b8c7ca36173496220ee79bc1c02d6adcbdedbb","src/hexagon/dfmul.s":"c05a8ac061e3a923704688dd7b15fd35e6dfceef88761f48ab126c290a624cf0","src/hexagon/dfsqrt.s":"7ecc42449aa3c45e6c8b0cbaa8dbf7eb3bdd125f8b20320cf13a9b5668f86c99","src/hexagon/divdi3.s":"21ff6787df365f9dc6fa92be9ca0d5fce4adc55ce7d43da227d60c590f42f879","src/hexagon/divsi3.s":"14da4a289e3b18a3240ba8f313904bca42e7b912fa288dbeda2ad57beabc8400","src/hexagon/fastmath2_dlib_asm.s":"2713a0d45d6f8496d85e81dc6b55e5ca669ab3610f7bd3d4d8aa63c866e8336d","src/hexagon/fastmath2_ldlib_asm.s":"1e5027fd6ab713efb39a29aac37be1b7e3b5d71cc6d65302b16ac60fad3d137a","src/hexagon/func_macro.s":"4d6248a31cea3d60e790a706725d9e587d758c047cfd6d3d6952d5da4b0d035d","src/hexagon/memcpy_forward_vp4cp4n2.s":"2ca2c807831258ccb58dd0f52f76230ea3b79cafd10a5dcca05e851c14e7ff41","src/hexagon/memcpy_likely_aligned.s":"5a2d2e938cb5dc4bdae743f9806978c4b24295c8ff168d5c62d0d3c126a3e6b5","src/hexagon/moddi3.s":"6feac04ab63f0ca9d1198cee321eecda844ca8c19340830c084129f71d8ec724","src/hexagon/modsi3.s":"457d070dbff8d10ed950a6dbc20c52f9e6d4518f73e1855ea596997c0924adf3","src/hexagon/sfdiv_opt.s":"ca13c3b24cfc7e3f6a73045584cfeb6fa670440958a38a5c80ad387586f52157","src/hexagon/sfsqrt_opt.s":"d9bf0ba9948eefc62c095f28b7c6b18f60c70ccfa95fd4db932fdb12c660721b","src/hexagon/udivdi3.s":"6cb96d73b59246431bba37e1f4c4003a8c1d4a059449e897c1282bcd90bcb7c5","src/hexagon/udivmoddi4.s":"f6e6e2eaedc32b6ac84a81c5dec2c4b054d123cbc749b9a1fdc4efdf598cdcb5","src/hexagon/udivmodsi4.s":"7b06ef270c1bd1b03d36863a3dc2f1fa67c44aa21a192e7e647c829658da4a11","src/hexagon/udivsi3.s":"66c0a1e5548b9c5e1ed850a76ad0baf505f1f594cdbd6e3ed27c2e64f90e629e","src/hexagon/umoddi3.s":"51cac49914d511ea9fd827b599d07d5f97eff885b88ef85ca767ffdf98c94798","src/hexagon/umodsi3.s":"24142f8cafd2aa903358176bbd67ef01c0cce0aa3ddb9a5ff1fd797d46e4a54b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"4c3958a6a32520212ec0bc9c6f1d17c433cfdda3accba80955d79384f427df69","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"15e6e8180d52761492423aa3a1284b6640bc3dee9ba030465ec0e15fe6cfe754","src/x86_64.rs":"13b5e010a0d45164844fda4ada4d4e965f422f2a27768b3ce495c637714cf66f"},"package":"3686cc48897ce1950aa70fd595bd2dc9f767a3c4cca4cd17b2cb52a2d37e6eb4"} \ No newline at end of file diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index 52c661eb4695e..3fbb7d99723ec 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -45,7 +45,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-zlib") source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} "${embed_manifest_url}" - "https://github.com/rust-lang/compiler-builtins/commit/d8ab794ed61e2c7c0750f57332a680d5aa8db48c.patch" + "https://github.com/rust-lang/compiler-builtins/commit/67c1c0a71a204c089ddae4aec21ec75aa778c11b.patch" "0001-rustc-llvm-fix-libs.patch" "0005-win32-config.patch" "0007-clang-subsystem.patch" @@ -53,18 +53,18 @@ source=("${rust_dist_server}/${_realname}c-${pkgver}-src.tar.gz"{,.asc} "0011-disable-uac-for-installer.patch" "0012-vendor-embed-manifest.patch" "0013-backport-compiler-builtins.patch") -noextract=(${_realname}c-${pkgver}-src.tar.gz embed-manifest-v${embed_manifest_version}.tar.gz) +noextract=(${_realname}c-${pkgver}-src.tar.gz) sha256sums=('ee106e4c569f52dba3b5b282b105820f86bd8f6b3d09c06b8dce82fb1bb3a4a1' 'SKIP' 'f1c65919a5f182376ecbfed69f72935abbebad5dc62bd32b2038905258c49453' - '0426bc2a82f56ddabc0646100891bc61b9a57f4b7aec9f45aff40d7ba081db4f' + '1c7be19d408a98fcb94ee77085d34901a30f1fcc1b79bc59d02bc48f655df6eb' '7cb1773c288ffb1c1e751edc49b1890c84bf9c362742bc5225d19d474edb73a0' '7d1c4e49524b835a8eadc961b39f5594b12a522a1e24368999be2c7e85399e4e' '1f668f4aed56060ec74fd53a39da1fbaef69b84de510d955baf349db672a8d15' '7a3b5722ff576b0661f36796f088dee4ce318b5dbc3fdcd65b48972de68a0edf' '761d73328d9695a7a2bd2a10be8225f4a56801fee54cbb51c0841b7f16e2bde6' '358de2f3e54afbe4aefd401725227becf2468763b7686c5d4fed3b71d1e95ce9' - '8db09957c51213269b37040fb7ade0ea9e0a50cc42c9720d63dc5b662cd5a9ef') + '56e3433e37ecebe4e5eba1be8debb3e34451be22a00e345ee738bbeb37803092') validpgpkeys=('108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE' # Rust Language (Tag and Release Signing Key) '474E22316ABF4785A88C6E8EA2C794A986419D8A' # Tom Stellard 'B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg @@ -97,8 +97,6 @@ prepare() { [[ -d ${srcdir}/${_realname}c-${pkgver}-src ]] && rm -rf ${srcdir}/${_realname}c-${pkgver}-src tar -xzf ${srcdir}/${_realname}c-${pkgver}-src.tar.gz -C ${srcdir} || true - plain "Extracting embed-manifest-v${embed_manifest_version}.tar.gz" - tar -xzf ${srcdir}/embed-manifest-v${embed_manifest_version}.tar.gz -C ${srcdir} || true # move embed-manifest crate into rust source vendor directory mv ${srcdir}/embed-manifest-v${embed_manifest_version} ${srcdir}/${_realname}c-${pkgver}-src/vendor/embed-manifest @@ -122,7 +120,7 @@ prepare() { # backport required for CLANG32 to build with compiler-rt 18.1.0 (cd vendor/compiler_builtins && \ apply_patch_with_msg \ - d8ab794ed61e2c7c0750f57332a680d5aa8db48c.patch) + 67c1c0a71a204c089ddae4aec21ec75aa778c11b.patch) # still needs to patch .cargo-checksums.json apply_patch_with_msg \ 0013-backport-compiler-builtins.patch