<pre style='margin:0'>
Marcus Calhoun-Lopez (MarcusCalhoun-Lopez) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/f193cea557f10ce4ff70121240620d9fc5f19eeb">https://github.com/macports/macports-ports/commit/f193cea557f10ce4ff70121240620d9fc5f19eeb</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit f193cea557f10ce4ff70121240620d9fc5f19eeb
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Wed Apr 13 12:27:05 2022 -0700

<span style='display:block; white-space:pre;color:#404040;'>    rust: rewrite of Portfile to use rust_bootstrap port
</span>---
 lang/rust/Portfile                                 | 469 +++++----------------
 lang/rust/files/llvm-13-builtins/int_endianness.h  | 123 ------
 lang/rust/files/llvm-13-builtins/int_lib.h         | 180 --------
 lang/rust/files/llvm-13-builtins/int_mulo_impl.inc |  58 ---
 lang/rust/files/llvm-13-builtins/int_types.h       | 207 ---------
 lang/rust/files/llvm-13-builtins/int_util.h        |  56 ---
 lang/rust/files/llvm-13-builtins/muloti4.c         |  37 --
 lang/rust/files/patch-emulate_tls.diff             |  11 +
 lang/rust/files/patch-fs.diff                      |  32 ++
 lang/rust/files/patch-llvm_libtool.diff            |  11 +
 .../patch-no_CFURLSetResourcePropertyForKey.diff   |  15 +
 ...ootstrap.patch => patch-offline_bootstrap.diff} |   2 +-
 lang/rust/files/patch-ssize_t.diff                 |  13 +
 13 files changed, 196 insertions(+), 1018 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/Portfile b/lang/rust/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 20d25fec0f5..a935ac854c9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2,31 +2,15 @@
</span> 
 PortSystem                  1.0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup                   compiler_blacklist_versions 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup                   legacysupport               1.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-legacysupport.use_static                        yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-legacysupport.newest_darwin_requires_legacy     15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup   rust            1.0
</span> 
 name                        rust
 
 # keep in mind that you also need to update cargo.crates at the end of this file
 version                     1.60.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# rustc_version is the prior version of Rust used to build the stages of
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# this current version.  The specific prior version is declared in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# src/stage0.json. Rust stable 1.x usually requires `set rustc_version 1.(x-1)`
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set rustc_version           1.59.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision                    1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${subport} eq ${name} } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    PortGroup       openssl         1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    openssl.branch  1.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                    2
</span> 
 categories                  lang devel
<span style='display:block; white-space:pre;background:#ffe0e0;'>-supported_archs             x86_64 arm64
</span> license                     {MIT Apache-2} BSD zlib NCSA Permissive
 maintainers                 {gmail.com:herby.gillot @herbygillot} \
                             openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -46,354 +30,154 @@ homepage                    https://www.rust-lang.org
</span> 
 set py_ver                  3.10
 set py_ver_nodot            [string map {. {}} ${py_ver}]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.python            ${prefix}/bin/python${py_ver}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Make sure the chosen python is found via PATH
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -d ${workpath}/bin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ln -s ${prefix}/bin/python${py_ver} ${workpath}/bin/python
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ln -s ${prefix}/bin/python${py_ver} ${workpath}/bin/python3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Collect paths to add to PATH env var
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set NewPath         "${workpath}/bin:$env(PATH)"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set arch ${configure.build_arch}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${configure.build_arch} eq "arm64"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set arch "aarch64"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set binTag ${rustc_version}-${arch}-apple-${os.platform}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Rust 1.49.0 and newer has issues on macOS 10.9 and older.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# See  https://trac.macports.org/ticket/62656
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#      https://github.com/rust-lang/rust/issues/80804
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# If upstream eventually address the issue these workarounds can be removed.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# For now patch the bootstrap binaries and compiler commands to use legacysupport library
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set ccwrap ${name}-compiler-wrap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${os.major} <= [option legacysupport.newest_darwin_requires_legacy] && ${subport} ne ${ccwrap} } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Force use of MP clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.blacklist-append clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Relink downloaded binaries
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_debug "Relinking rust/cargo bootstrap binaries"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # Re-link binaries to force loading of MacPorts LegacySupport lib instead of libSystem
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        proc relink_binary { exe } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            global prefix
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[string match "application/*" [lindex [exec /usr/bin/file --mime-type ${exe}] end]]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set sLib /usr/lib/libSystem.B.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set lLib ${prefix}/lib/libMacportsLegacySystem.B.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                system "install_name_tool -change ${sLib} ${lLib} ${exe} > /dev/null 2>&1 ; true"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        proc relink_binaries { binaries } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach binary $binaries {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                relink_binary ${binary}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        proc search_dirs_relink { dirs } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach dir $dirs {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                relink_binaries [ glob -nocomplain ${dir}/* ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        relink_binaries    [ exec find ${workpath}/ -name "*.dylib" ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        search_dirs_relink [ exec find ${workpath}/ -type d -and -name bin -or -name libexec ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Need a newer set of coreutils (e.g. mktemp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_build-append path:libexec/coreutils/libstdbuf.so:coreutils
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set NewPath "${prefix}/libexec/gnubin:${NewPath}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${subport} ne ${ccwrap} } {
</span> depends_build-append        path:bin/cmake:cmake \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            bin:git:git \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:cctools \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:lbzip2 \
</span>                             port:python${py_ver_nodot} \
                             port:pkgconfig \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:gmake \
</span>                             port:ninja
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib-append          port:jemalloc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:libffi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${configure.ccache} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append    port:ccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && ${os.major} > 14 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      port:jemalloc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append          port:curl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:libiconv \
</span>                             port:libgit2 \
                             port:zlib
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+openssl.branch              1.1
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites        https://static.rust-lang.org/dist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_skip_archcheck      cmake \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            python${py_ver_nodot} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            pkgconfig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            ninja \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            ccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dist_subdir                 rust
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+muniversal.run_binaries     yes
</span> 
 distname                    rustc-${version}-src
<span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles                   ${distname}${extract.suffix}:apple_vendor
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-distfiles-append    rust-std-${binTag}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rustc-${binTag}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    cargo-${binTag}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           ${distname}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  4f42c9d9b1730bf7e2a9af88a6a760c0c6ff144d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  20ca826d1cf674daf8e22c4f8c4b9743af07973211c839b85839742314c838b7 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    202376973
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums-append    rust-std-${rustc_version}-x86_64-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  420c6ae0086a68aa018c31f79b96eb2d1c556537 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  959af8bafbc9f3916a1d1111d7378fdd7aa459410cdd2d3bbfc2d9d9a6db0683 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    39328167 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rustc-${rustc_version}-x86_64-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  70eb8715fb4219be33d430e708883e5b035ad111 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  eb5b613800c75882bed9e3bb48c325aac0e5ce418ae2b19f51e4ccf7e4781e0b \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    81261773 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    cargo-${rustc_version}-x86_64-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  5c968f1dd476d0e7a340a23a03fa918aee17d3cb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  d0202b50b4f3d0e943a5d7e8d14420afeac8cf36e6136e8d5b7ddefb3538d62a \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    6424124 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rust-std-${rustc_version}-aarch64-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  79767785ff058ea7173b234232f9f238b1a7c7b6 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  e70bd0c56f8f716238a1395c54dd9d993a3168e2764e404dc65553babf7aa127 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    38541530 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rustc-${rustc_version}-aarch64-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  18cb2608f941741b3dabe66a0668b6b3cf366994 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  caac78491d8f0844bb9a512989a409c35ff681a131495e7ebfacb69ba006bbc1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    82983805 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    cargo-${rustc_version}-aarch64-apple-${os.platform}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  d2a4638a1509d051f0bce03ae043eccc4c612b0c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  4bdcb77ea084364b551a5cf969e263beb09afa39627f6dead262c8e2a7aed9c1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    5750407
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# The only way to introduce support of macOS 10.6 is reimplement __thread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# See: https://github.com/rust-lang/rust/issues/10842
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set min_darwin 11
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} eq "darwin" && ${os.major} < ${min_darwin} && ${subport} ne "rust-src"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    known_fail yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_error "${name} is only supported on macOS 10.[expr ${min_darwin} - 4] or later."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return -code error "unsupported platform version"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# upstream source
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums                   rustc-${version}-src${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            rmd160  4f42c9d9b1730bf7e2a9af88a6a760c0c6ff144d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            sha256  20ca826d1cf674daf8e22c4f8c4b9743af07973211c839b85839742314c838b7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            size    202376973
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set rust_platform       ${arch}-apple-${os.platform}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set rust_root           ${worksrcpath}/build/stage0-${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set rustc_version           [rust.add_bootstrap_components ${muniversal.architectures}]
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${subport} ne ${ccwrap} && ${subport} ne "rust-src" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.platform} eq "darwin" && ${os.major} < 13} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:curl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${subport} eq "rust-src"} return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # ensure std library can be found by rust binary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach std_dir [glob -types d -directory ${workpath} -tails rust-std-*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set run_platform    [join [lrange [split ${std_dir} -] end-2 end] -]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set rustc_dir       rustc-[join [lrange [split ${std_dir} -] 2 end] -]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ln -s               ${workpath}/${std_dir}/rust-std-${run_platform}/lib/rustlib/${run_platform}/lib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            ${workpath}/${rustc_dir}/rustc/lib/rustlib/${run_platform}/
</span>     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # Relinking against MacPorts libcurl allows to fix `error: Unknown option`
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # which happened because cargo tries to use HTTP/2 and it fails
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # See: https://github.com/rust-lang/cargo/blob/2e2a16e983f597da62bc132eb191bc3276d4b1bb/src/cargo/core/package.rs#L423
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {${os.platform} eq "darwin" && ${os.major} < 13} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set sLib /usr/lib/libcurl.4.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set lLib ${prefix}/lib/libcurl.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            system "install_name_tool -change ${sLib} ${lLib} ${workpath}/cargo-${rustc_version}-${rust_platform}/cargo/bin/cargo > /dev/null 2>&1 ; true"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        file mkdir ${rust_root}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cp -r ${workpath}/rust-std-${rustc_version}-${rust_platform}/rust-std-${rust_platform}/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cp -r ${workpath}/rustc-${rustc_version}-${rust_platform}/rustc/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "cp -r ${workpath}/cargo-${rustc_version}-${rust_platform}/cargo/* ${rust_root}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append           patch-offline_bootstrap.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            patch-ssize_t.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            patch-emulate_tls.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            patch-fs.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${rust.use_cctools} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append       patch-llvm_libtool.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace           "s|__MACPORTS_PREFIX__|${prefix}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            ${worksrcpath}/src/bootstrap/native.rs
</span>     }
 }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Rust claims to only need c++14 but uses some c++17 features relating to std::unique_ptr
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.cxx_standard  2017
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Rust never claims to need it, but it uses `__thread`
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.thread_local_storage yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Use recent macports clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append {macports-clang-[4-9].0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Want to force a specific version, as it is baked into wrapper scripts, so do
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# not want it changing if default fallbacks are changed. Use clang-12 for now.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append {macports-clang-1[2-9]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Blacklist all possible Xcode clang versions on macOS 10.13 and older
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://trac.macports.org/ticket/63341
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${os.platform} eq "darwin" && ${os.major} < 18 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.blacklist-append {clang < 1100}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && ${os.major} < 10 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # CFURLSetResourcePropertyForKey was introduced in 10.6, so turn off the (optional) function that uses it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append       patch-no_CFURLSetResourcePropertyForKey.diff
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Compiler used needed at runtime with rust, so if a MacPorts clang compiler used needs to be a dep
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { [string match macports-clang-* ${configure.compiler}] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append port:[string map {"macports-" ""} ${configure.compiler}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd               ${configure.python} src/bootstrap/configure.py
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Max Darwin version to create wrapper scripts. Should be equal to the highest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Darwin version that downstream ports could possible need legacy support for.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set max_wrap_darwin [legacysupport::get_newest_darwin_with_missing_symbols]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Adds given entry to the environment of various phases
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proc envs_append { value } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach stage {extract configure build destroot} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${stage}.env-delete ${value}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${stage}.env-append ${value}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && ${os.major} < 11 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # ___emutls_get_address
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    rust.add_compiler_runtime   yes
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# In order to enforce use of legacy support, both when building rust and subsequently
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# when using it, the underlying compiler commands need to be wrapped to make sure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# they use the correct flags. Do this in a sub-port which then is added as a dep
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# to rust to ensure they are available when rust is both built and installed.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set wrapdir ${prefix}/libexec/${ccwrap}/bin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-subport ${ccwrap} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Enable support in scripts for all neccessary versions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    legacysupport.newest_darwin_requires_legacy ${max_wrap_darwin}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    description      Wrapped compiler commands for ${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    long_description {*}${description}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    license          BSD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    supported_archs  noarch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    distfiles
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Always build from source to ensure we use user's compiler selection
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    archive_sites
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append [legacysupport::get_dependency]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    use_configure    no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    build            {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append port:cctools
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    variant debug description {Install with additional debugging handling} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        xinstall -d ${destroot}${prefix}/share/doc/${ccwrap}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system "echo '${description}' > ${destroot}${prefix}/share/doc/${ccwrap}/README"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { ${os.major} <= ${max_wrap_darwin} } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # Try and deduce MacPorts LLVM version from configured compiler
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # If this fails just use exact settings for cc and cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set sel_cc  ${configure.cc}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set sel_cxx ${configure.cxx}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set sel_ld  ld
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[regexp {macports-clang-(.*)} ${configure.compiler} -> llvm_ver]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set llvm_path ${prefix}/libexec/llvm-${llvm_ver}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set sel_cc    ${llvm_path}/bin/clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set sel_cxx   ${llvm_path}/bin/clang++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set sel_ld    ${llvm_path}/bin/ld
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            xinstall -m 755 -d ${destroot}${wrapdir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            proc create_wrapper { fname comp flags } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set f [ open ${fname} w 0755 ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts ${f} "#!/bin/bash"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {![variant_isset debug]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # Normally just exec
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "exec ${comp} ${flags} \"\$\{\@\}\""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # For debugging run as sub-process and check return value
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # and on failure print command and current path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "${comp} ${flags} \"\$\{\@\}\""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "ret_code=\$?"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "if \[ \$ret_code \!\= 0 \]\; then"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "  echo \"PWD : \"\`pwd\` 1>&2"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "  echo \"CMD : \"${comp} ${flags} \"\$\{\@\}\" 1>&2"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "fi"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    puts ${f} "exit \$ret_code"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                close ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrapper ${destroot}${wrapdir}/clang   \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_RUST_CC\:\-${sel_cc}\}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_LEGACY_SUPPORT_CPPFLAGS\}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrapper ${destroot}${wrapdir}/clang++ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_RUST_CXX\:\-${sel_cxx}\}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_LEGACY_SUPPORT_CPPFLAGS\}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrapper ${destroot}${wrapdir}/ld-rust \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_RUST_CC\:\-${sel_cc}\}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_LEGACY_SUPPORT_CPPFLAGS\} \$\{MACPORTS_LEGACY_SUPPORT_LDFLAGS\}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            create_wrapper ${destroot}${wrapdir}/ld \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_RUST_LD\:\-${sel_ld}\}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                "\$\{MACPORTS_LEGACY_SUPPORT_LDFLAGS\}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach cmd { ar as nm nm-classic libtool lipo objdump otool ranlib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          size size-classic strip strings bitcode-strip segedit } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ln -s ${prefix}/bin/${cmd} ${destroot}${wrapdir}/${cmd}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set ld ${configure.cc}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${subport} ne ${ccwrap} } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if { ${os.major} <= ${max_wrap_darwin} } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_lib-append port:${ccwrap}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.cc     ${wrapdir}/clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.cxx    ${wrapdir}/clang++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.objc   ${wrapdir}/clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.objcxx ${wrapdir}/clang++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set ld           ${wrapdir}/ld-rust
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set NewPath     "${wrapdir}:${NewPath}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    envs_append   "PATH=${NewPath}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-envs_append       LD=${ld}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args              --disable-docs \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --default-linker=${ld} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --disable-codegen-tests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# we want to build the Rust compiler with `--release-channel=stable`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# rustfmt, clippy, and rls seem to require unstable features, so build them here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# cargo, analysis, and src are built in separate ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append       --disable-codegen-tests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --disable-docs \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --sysconfdir=${prefix}/etc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=build.verbose=2 \
</span>                             --release-channel=stable \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --build=${rust_platform} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --local-rust-root=${rust_root} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --set=target.${rust_platform}.cc=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --set=target.${rust_platform}.cxx=${configure.cxx} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --set=target.${rust_platform}.linker=${ld} \
</span>                             --enable-extended \
                             --tools=rustfmt,clippy,rls \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --llvm-cflags="${configure.cflags}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --llvm-cxxflags="${configure.cxxflags}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --llvm-ldflags="${configure.ldflags}" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --python=${prefix}/bin/python${py_ver}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Build with jemalloc on macOS 10.11 and up
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${os.platform} eq "darwin" && ${os.major} > 14 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --set=rust.jemalloc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --llvm-cflags="${rust.llvm.cflags}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --llvm-cxxflags="${rust.llvm.cxxflags}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --llvm-ldflags="${rust.llvm.ldflags}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --python=${configure.python}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && ${os.major} < 9 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --disable-rpath
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Cache support
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if { ${subport} ne ${ccwrap} } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if { [tbool configure.ccache] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append   port:ccache
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.args-append  --enable-ccache
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { "port:jemalloc" in ${depends_lib} } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --set=rust.jemalloc
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-configure {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # the bootstrap call to rustc uses cc for the linker
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # place config file in the HOME directory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://trac.macports.org/wiki/UsingTheRightCompiler
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -d -m 0755 ${workpath}/.home/.cargo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set config [open ${workpath}/.home/.cargo/config a]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    puts ${config} "\[target.${rust_platform}\]"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    puts ${config} "linker = \"${ld}\""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    close ${config}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+triplet.add_build           all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+triplet.add_host            all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach arch ${muniversal.architectures} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set platform            [option triplet.${arch}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set rustc_prefix        ${workpath}/rustc-${rustc_version}-${platform}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set cargo_prefix        ${workpath}/cargo-${rustc_version}-${platform}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args.${arch}-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=build.rustc=${rustc_prefix}/rustc/bin/rustc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=build.cargo=${cargo_prefix}/cargo/bin/cargo \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=target.${platform}.cc=[compwrap::wrap_compiler cc] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=target.${platform}.cxx=[compwrap::wrap_compiler cxx] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=target.${platform}.linker=[compwrap::wrap_compiler ld] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=target.${platform}.ar=${rust.archiver} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --set=target.${platform}.ranlib=${rust.ranlib}
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${configure.ccache}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --enable-ccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --disable-ccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# see
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#     https://github.com/rust-lang/rust/blob/340f6491bed3525acfabbdbd1545b6aee2fca62b/src/bootstrap/lib.rs#L1033
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#     https://github.com/rust-lang/rust/blob/340f6491bed3525acfabbdbd1545b6aee2fca62b/compiler/rustc_llvm/build.rs#L329
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx_stdlib        libc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append       --enable-use-libcxx
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-build.args                  VERBOSE=1 BOOTSTRAP_ARGS="-vv -j${build.jobs}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-envs_append                 RUST_BACKTRACE=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args                  BOOTSTRAP_ARGS="-j${build.jobs}"
</span> 
 test.run                    yes
 test.target                 check
<span style='display:block; white-space:pre;background:#ffe0e0;'>-test.args                   VERBOSE=1
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot.args               VERBOSE=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rust::append_envs           RUST_BACKTRACE=1
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${subport} eq ${name}} {
</span> post-destroot {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${subport} eq "rust-src"} return
</span>     delete                  ${destroot}${prefix}/lib/rustlib/install.log
     delete                  ${destroot}${prefix}/lib/rustlib/uninstall.sh
     xinstall -d -m 0755     ${destroot}${prefix}/share/${name}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -m 0644        ${worksrcpath}/src/etc/ctags.rust \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall    -m 0644     ${worksrcpath}/src/etc/ctags.rust \
</span>                             ${destroot}${prefix}/share/${name}
 }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.type              regex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.url               https://github.com/rust-lang/rust/tags
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.regex             refs/tags/(\[\\d\\.\]+).zip
</span> 
 subport rust-src {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # do not unpack bootsrap dependency
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    distfiles       ${distname}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description             Source code for the Rust programming language
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description        {*}${description}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # remove dependencies
</span>     depends_build
     depends_lib
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set rust_source_dir ${destroot}${prefix}/lib/rustlib/src/rust
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    distfiles               ${distname}${extract.suffix}:apple_vendor
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    description     Source code for the rust programming language
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    long_description {*}${description}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    use_configure no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    use_configure           no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    supported_archs         noarch
</span> 
     post-extract {
         # delete the test directories (which for some god awful reason contains binaries)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -403,6 +187,8 @@ subport rust-src {
</span>     build {}
 
     destroot {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        set rust_source_dir ${destroot}${prefix}/lib/rustlib/src/rust
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>         xinstall -d ${rust_source_dir}
         move {*}[glob ${worksrcpath}/*] ${rust_source_dir}
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -410,43 +196,21 @@ subport rust-src {
</span>         system -W ${rust_source_dir} "find . -type d -perm -755 -print0 | xargs -0 chmod 755"
         system -W ${rust_source_dir} "find . -type f -perm -644 -print0 | xargs -0 chmod 644"
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    proc rust::rust_pg_callback {} { cargo.crates }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    proc rust::set_environment  {} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    proc rust::handle_crates    {} {}
</span> }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type              regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url               https://github.com/rust-lang/rust/tags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex             refs/tags/(\[\\d\\.\]+).zip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # The root cause of offline mode is prevent cargo to check signatures
 # which is broken before 10.8
 # See: https://github.com/rust-lang/cargo/issues/4813
 # See: https://github.com/mozilla/releases-comm-central/commit/5cd3595203de78a6f47324f53f0cf616f4e383ea
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${subport} ne "${ccwrap}" && ${subport} ne "rust-src"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    PortGroup           cargo_fetch 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    dist_subdir         $name
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # enable offline mode for cargo at bootstrap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        system -W ${worksrcpath} "patch -p0 < ${filespath}/offline-bootstrap.patch"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if { ${os.platform} eq "darwin" && ${os.major} < 12 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # well, let me build a small library which contains only needed symbols
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set scalpel_dylib ${workpath}/scalpel.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        pre-build {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # Since https://github.com/rust-lang/rust/commit/8a6ff90a3a41e6ace18aeb089ea0a0eb3726dd08
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set scalpel_sources "${filespath}/llvm-13-builtins/muloti4.c"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # let's build the scalpel
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            system "${configure.cc} ${configure.cflags} [get_canonical_archflags cc] -dynamiclib -o ${scalpel_dylib} ${scalpel_sources}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.env-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        DYLD_FORCE_FLAT_NAMESPACE=1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        DYLD_INSERT_LIBRARIES=${scalpel_dylib}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # inside destroot it also calls prebuilt cargo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        destroot.env-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        DYLD_FORCE_FLAT_NAMESPACE=1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        DYLD_INSERT_LIBRARIES=${scalpel_dylib}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span> 
 # use cargo2port to update it
 # cargo from rust-bootstrap is linked against the system's crypto library,
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -841,10 +605,3 @@ cargo.crates \
</span>     yaml-rust                        0.3.5  e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992 \
     yaml-rust                        0.4.4  39f0c922f1a334134dc2f7a8b67dc5d25f0735263feec974345ff706bcf20b0d \
     yansi-term                       0.1.2  fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # cargo_fetch added port:cargo which isn't required here and creates only dependency cycle
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    proc rust.delete_dependencies {} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-delete port:cargo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    port::register_callback rust.delete_dependencies
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/llvm-13-builtins/int_endianness.h b/lang/rust/files/llvm-13-builtins/int_endianness.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a50eea63e5e..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/files/llvm-13-builtins/int_endianness.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,123 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Source: https://github.com/llvm/llvm-project/blob/llvmorg-13.0.0/compiler-rt/lib/builtins/int_endianness.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * The goal of this code is only allow to run binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * which was linked against macOS 10.8 on macOS 10.7 and below.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Such binaries are used to boostrap rust on stage0 only.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===-- int_endianness.h - configuration header for compiler-rt -----------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// See https://llvm.org/LICENSE.txt for license information.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file is a configuration header for compiler-rt.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file is not part of the interface of this library.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef INT_ENDIANNESS_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define INT_ENDIANNESS_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) &&                \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    defined(__ORDER_LITTLE_ENDIAN__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Clang and GCC provide built-in endianness definitions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // __BYTE_ORDER__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else // Compilers other than Clang or GCC.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__SVR4) && defined(__sun)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <sys/byteorder.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(_BIG_ENDIAN)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif defined(_LITTLE_ENDIAN)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else // !_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#error "unknown endianness"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // !_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // Solaris and AuroraUX.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// ..
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) ||   \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    defined(__minix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <sys/endian.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if _BYTE_ORDER == _BIG_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif _BYTE_ORDER == _LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // _BYTE_ORDER
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // *BSD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__OpenBSD__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <machine/endian.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if _BYTE_ORDER == _BIG_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif _BYTE_ORDER == _LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // _BYTE_ORDER
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // OpenBSD
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// ..
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Mac OSX has __BIG_ENDIAN__ or __LITTLE_ENDIAN__ automatically set by the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// compiler (at least with GCC)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__APPLE__) || defined(__ellcc__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef __BIG_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __BIG_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // __BIG_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef __LITTLE_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __LITTLE_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // __LITTLE_ENDIAN__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // Mac OSX
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// ..
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(_WIN32)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_LITTLE_ENDIAN 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _YUGA_BIG_ENDIAN 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // Windows
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // Clang or GCC.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// .
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if !defined(_YUGA_LITTLE_ENDIAN) || !defined(_YUGA_BIG_ENDIAN)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#error Unable to determine endian
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // Check we found an endianness correctly.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // INT_ENDIANNESS_H
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/llvm-13-builtins/int_lib.h b/lang/rust/files/llvm-13-builtins/int_lib.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0a21d26d3c1..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/files/llvm-13-builtins/int_lib.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,180 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Source: https://github.com/llvm/llvm-project/blob/llvmorg-13.0.0/compiler-rt/lib/builtins/int_lib.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * The goal of this code is only allow to run binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * which was linked against macOS 10.8 on macOS 10.7 and below.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Such binaries are used to boostrap rust on stage0 only.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===-- int_lib.h - configuration header for compiler-rt  -----------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// See https://llvm.org/LICENSE.txt for license information.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file is a configuration header for compiler-rt.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file is not part of the interface of this library.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef INT_LIB_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define INT_LIB_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Assumption: Signed integral is 2's complement.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Assumption: Right shift of signed negative is arithmetic shift.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Assumption: Endianness is little or big (not mixed).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// ABI macro definitions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __ARM_EABI__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef COMPILER_RT_ARMHF_TARGET
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ABI
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ABI __attribute__((__pcs__("aapcs")))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ABI
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define AEABI_RTABI __attribute__((__pcs__("aapcs")))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(_MSC_VER) && !defined(__clang__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define ALWAYS_INLINE __forceinline
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define NOINLINE __declspec(noinline)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define NORETURN __declspec(noreturn)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define UNUSED
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define ALWAYS_INLINE __attribute__((always_inline))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define NOINLINE __attribute__((noinline))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define NORETURN __attribute__((noreturn))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define UNUSED __attribute__((unused))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define STR(a) #a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define XSTR(a) STR(a)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define SYMBOL_NAME(name) XSTR(__USER_LABEL_PREFIX__) #name
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__ELF__) || defined(__MINGW32__) || defined(__wasm__) ||           \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    defined(_AIX)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ALIAS(name, aliasname) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  COMPILER_RT_ABI __typeof(name) aliasname __attribute__((__alias__(#name)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(VISIBILITY_HIDDEN)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ALIAS_VISIBILITY(name) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  __asm__(".private_extern " SYMBOL_NAME(name));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ALIAS_VISIBILITY(name)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ALIAS(name, aliasname) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  __asm__(".globl " SYMBOL_NAME(aliasname)); \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  COMPILER_RT_ALIAS_VISIBILITY(aliasname) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  __asm__(SYMBOL_NAME(aliasname) " = " SYMBOL_NAME(name)); \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  COMPILER_RT_ABI __typeof(name) aliasname;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif defined(_WIN32)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILER_RT_ALIAS(name, aliasname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#error Unsupported target
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if (defined(__FreeBSD__) || defined(__NetBSD__)) &&                           \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    (defined(_KERNEL) || defined(_STANDALONE))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Kernel and boot environment can't use normal headers,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// so use the equivalent system headers.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// NB: FreeBSD (and OpenBSD) deprecate machine/limits.h in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// favour of sys/limits.h, so prefer the former, but fall
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// back on the latter if not available since NetBSD only has
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// the latter.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__has_include) && __has_include(<sys/limits.h>)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <sys/limits.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <machine/limits.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <sys/stdint.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Include the standard compiler builtin headers we use functionality from.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <float.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <limits.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <stdbool.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <stdint.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Include the commonly used internal type definitions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "int_types.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Include internal utility function declarations.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "int_util.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI int __paritysi2(si_int a);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI int __paritydi2(di_int a);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI si_int __divsi3(si_int a, si_int b);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI su_int __udivsi3(su_int n, su_int d);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI su_int __udivmodsi4(su_int a, su_int b, su_int *rem);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI du_int __udivmoddi4(du_int a, du_int b, du_int *rem);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef CRT_HAS_128BIT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI int __clzti2(ti_int a);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Definitions for builtins unavailable on MSVC
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(_MSC_VER) && !defined(__clang__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <intrin.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int __inline __builtin_ctz(uint32_t value) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  unsigned long trailing_zero = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (_BitScanForward(&trailing_zero, value))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return trailing_zero;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return 32;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int __inline __builtin_clz(uint32_t value) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  unsigned long leading_zero = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (_BitScanReverse(&leading_zero, value))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return 31 - leading_zero;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return 32;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(_M_ARM) || defined(_M_X64)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int __inline __builtin_clzll(uint64_t value) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  unsigned long leading_zero = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (_BitScanReverse64(&leading_zero, value))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return 63 - leading_zero;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return 64;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int __inline __builtin_clzll(uint64_t value) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (value == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return 64;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  uint32_t msh = (uint32_t)(value >> 32);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  uint32_t lsh = (uint32_t)(value & 0xFFFFFFFF);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (msh != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return __builtin_clz(msh);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return 32 + __builtin_clz(lsh);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __builtin_clzl __builtin_clzll
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-bool __inline __builtin_sadd_overflow(int x, int y, int *result) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if ((x < 0) != (y < 0)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    *result = x + y;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  int tmp = (unsigned int)x + (unsigned int)y;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if ((tmp < 0) != (x < 0))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *result = tmp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // defined(_MSC_VER) && !defined(__clang__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // INT_LIB_H
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/llvm-13-builtins/int_mulo_impl.inc b/lang/rust/files/llvm-13-builtins/int_mulo_impl.inc
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index e1b5c1a5d03..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/files/llvm-13-builtins/int_mulo_impl.inc
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,58 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Source: https://github.com/llvm/llvm-project/blob/llvmorg-13.0.0/compiler-rt/lib/builtins/int_mulo_impl.inc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * The goal of this code is only allow to run binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * which was linked against macOS 10.8 on macOS 10.7 and below.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Such binaries are used to boostrap rust on stage0 only.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===-- int_mulo_impl.inc - Implement __mulo[sdt]i4 ---------------*- C -*-===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// See https://llvm.org/LICENSE.txt for license information.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Helper used by __mulosi4, __mulodi4 and __muloti4.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "int_lib.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Returns: a * b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Effects: sets *overflow to 1  if a * b overflows
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static __inline fixint_t __muloXi4(fixint_t a, fixint_t b, int *overflow) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  const int N = (int)(sizeof(fixint_t) * CHAR_BIT);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  const fixint_t MIN = (fixint_t)1 << (N - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  const fixint_t MAX = ~MIN;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *overflow = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  fixint_t result = a * b;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (a == MIN) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (b != 0 && b != 1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      *overflow = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (b == MIN) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (a != 0 && a != 1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      *overflow = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  fixint_t sa = a >> (N - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  fixint_t abs_a = (a ^ sa) - sa;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  fixint_t sb = b >> (N - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  fixint_t abs_b = (b ^ sb) - sb;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (abs_a < 2 || abs_b < 2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (sa == sb) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (abs_a > MAX / abs_b)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      *overflow = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (abs_a > MIN / -abs_b)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      *overflow = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/llvm-13-builtins/int_types.h b/lang/rust/files/llvm-13-builtins/int_types.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 75acfaff4a1..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/files/llvm-13-builtins/int_types.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,207 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Source: https://github.com/llvm/llvm-project/blob/llvmorg-13.0.0/compiler-rt/lib/builtins/int_types.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * The goal of this code is only allow to run binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * which was linked against macOS 10.8 on macOS 10.7 and below.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Such binaries are used to boostrap rust on stage0 only.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===-- int_lib.h - configuration header for compiler-rt  -----------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// See https://llvm.org/LICENSE.txt for license information.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file is not part of the interface of this library.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file defines various standard types, most importantly a number of unions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// used to access parts of larger types.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef INT_TYPES_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define INT_TYPES_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "int_endianness.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// si_int is defined in Linux sysroot's asm-generic/siginfo.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef si_int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#undef si_int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef int32_t si_int;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef uint32_t su_int;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if UINT_MAX == 0xFFFFFFFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define clzsi __builtin_clz
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define ctzsi __builtin_ctz
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif ULONG_MAX == 0xFFFFFFFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define clzsi __builtin_clzl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define ctzsi __builtin_ctzl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#error could not determine appropriate clzsi macro for this system
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef int64_t di_int;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef uint64_t du_int;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  di_int all;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    su_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    si_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    si_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    su_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  } s;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} dwords;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  du_int all;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    su_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    su_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    su_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    su_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  } s;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} udwords;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__LP64__) || defined(__wasm__) || defined(__mips64) ||             \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    defined(__riscv) || defined(_WIN64)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define CRT_HAS_128BIT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// MSVC doesn't have a working 128bit integer type. Users should really compile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// compiler-rt with clang, but if they happen to be doing a standalone build for
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// asan or something else, disable the 128 bit parts so things sort of work.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(_MSC_VER) && !defined(__clang__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#undef CRT_HAS_128BIT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef CRT_HAS_128BIT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef int ti_int __attribute__((mode(TI)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef unsigned tu_int __attribute__((mode(TI)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ti_int all;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    du_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    di_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    di_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    du_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  } s;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} twords;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  tu_int all;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    du_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    du_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    du_int high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    du_int low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  } s;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} utwords;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static __inline ti_int make_ti(di_int h, di_int l) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  twords r;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  r.s.high = h;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  r.s.low = l;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return r.all;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static __inline tu_int make_tu(du_int h, du_int l) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  utwords r;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  r.s.high = h;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  r.s.low = l;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return r.all;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // CRT_HAS_128BIT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// FreeBSD's boot environment does not support using floating-point and poisons
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// the float and double keywords.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(__FreeBSD__) && defined(_STANDALONE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define CRT_HAS_FLOATING_POINT 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define CRT_HAS_FLOATING_POINT 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if CRT_HAS_FLOATING_POINT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  su_int u;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  float f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} float_bits;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  udwords u;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  double f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} double_bits;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  udwords low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  udwords high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  udwords high;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  udwords low;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // _YUGA_LITTLE_ENDIAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} uqwords;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Check if the target supports 80 bit extended precision long doubles.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Notably, on x86 Windows, MSVC only provides a 64-bit long double, but GCC
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// still makes it 80 bits. Clang will match whatever compiler it is trying to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// be compatible with. On 32-bit x86 Android, long double is 64 bits, while on
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// x86_64 Android, long double is 128 bits.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if (defined(__i386__) || defined(__x86_64__)) &&                              \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    !(defined(_MSC_VER) || defined(__ANDROID__))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define HAS_80_BIT_LONG_DOUBLE 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif defined(__m68k__) || defined(__ia64__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define HAS_80_BIT_LONG_DOUBLE 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define HAS_80_BIT_LONG_DOUBLE 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if CRT_HAS_FLOATING_POINT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef union {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  uqwords u;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  long double f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} long_double_bits;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __STDC_VERSION__ >= 199901L
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef float _Complex Fcomplex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef double _Complex Dcomplex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef long double _Complex Lcomplex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPLEX_REAL(x) __real__(x)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPLEX_IMAGINARY(x) __imag__(x)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  float real, imaginary;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} Fcomplex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  double real, imaginary;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} Dcomplex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  long double real, imaginary;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} Lcomplex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPLEX_REAL(x) (x).real
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPLEX_IMAGINARY(x) (x).imaginary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // INT_TYPES_H
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/llvm-13-builtins/int_util.h b/lang/rust/files/llvm-13-builtins/int_util.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 836ff965aa3..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/files/llvm-13-builtins/int_util.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,56 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Source: https://github.com/llvm/llvm-project/blob/llvmorg-13.0.0/compiler-rt/lib/builtins/int_util.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * The goal of this code is only allow to run binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * which was linked against macOS 10.8 on macOS 10.7 and below.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Such binaries are used to boostrap rust on stage0 only.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===-- int_util.h - internal utility functions ---------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// See https://llvm.org/LICENSE.txt for license information.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file is not part of the interface of this library.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file defines non-inline utilities which are available for use in the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// library. The function definitions themselves are all contained in int_util.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// which will always be compiled into any compiler-rt library.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef INT_UTIL_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define INT_UTIL_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/// \brief Trigger a program abort (or panic for kernel code).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define compilerrt_abort() __compilerrt_abort_impl(__FILE__, __LINE__, __func__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-NORETURN void __compilerrt_abort_impl(const char *file, int line,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                      const char *function);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILE_TIME_ASSERT(expr) COMPILE_TIME_ASSERT1(expr, __COUNTER__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILE_TIME_ASSERT1(expr, cnt) COMPILE_TIME_ASSERT2(expr, cnt)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COMPILE_TIME_ASSERT2(expr, cnt)                                        \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  typedef char ct_assert_##cnt[(expr) ? 1 : -1] UNUSED
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Force unrolling the code specified to be repeated N times.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define REPEAT_0_TIMES(code_to_repeat) /* do nothing */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define REPEAT_1_TIMES(code_to_repeat) code_to_repeat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define REPEAT_2_TIMES(code_to_repeat)                                         \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  REPEAT_1_TIMES(code_to_repeat)                                               \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  code_to_repeat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define REPEAT_3_TIMES(code_to_repeat)                                         \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  REPEAT_2_TIMES(code_to_repeat)                                               \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  code_to_repeat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define REPEAT_4_TIMES(code_to_repeat)                                         \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  REPEAT_3_TIMES(code_to_repeat)                                               \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  code_to_repeat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define REPEAT_N_TIMES_(N, code_to_repeat) REPEAT_##N##_TIMES(code_to_repeat)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define REPEAT_N_TIMES(N, code_to_repeat) REPEAT_N_TIMES_(N, code_to_repeat)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // INT_UTIL_H
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/llvm-13-builtins/muloti4.c b/lang/rust/files/llvm-13-builtins/muloti4.c
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 8ec053796c7..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/files/llvm-13-builtins/muloti4.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,37 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Source: https://github.com/llvm/llvm-project/blob/llvmorg-13.0.0/compiler-rt/lib/builtins/muloti4.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * The goal of this code is only allow to run binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * which was linked against macOS 10.8 on macOS 10.7 and below.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Such binaries are used to boostrap rust on stage0 only.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===-- muloti4.c - Implement __muloti4 -----------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// See https://llvm.org/LICENSE.txt for license information.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// This file implements __muloti4 for the compiler_rt library.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "int_lib.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef CRT_HAS_128BIT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Returns: a * b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// Effects: sets *overflow to 1  if a * b overflows
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define fixint_t ti_int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "int_mulo_impl.inc"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-COMPILER_RT_ABI ti_int __muloti4(ti_int a, ti_int b, int *overflow) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return __muloXi4(a, b, overflow);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif // CRT_HAS_128BIT
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/patch-emulate_tls.diff b/lang/rust/files/patch-emulate_tls.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ddce7299129
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/files/patch-emulate_tls.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/llvm-project/llvm/include/llvm/ADT/Triple.h.orig   2021-11-16 09:47:26.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/llvm-project/llvm/include/llvm/ADT/Triple.h        2022-03-07 19:38:27.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -854,7 +854,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /// Tests whether the target uses emulated TLS as default.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool hasDefaultEmulatedTLS() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment() || isMacOSXVersionLT(10, 7);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /// Tests whether the target uses -data-sections as default.
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/patch-fs.diff b/lang/rust/files/patch-fs.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1f65d7a61dd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/files/patch-fs.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,32 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See https://github.com/rust-lang/rust/pull/95375
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- library/std/src/sys/unix/fs.rs.orig    2022-04-04 02:41:05.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ library/std/src/sys/unix/fs.rs 2022-04-10 09:06:24.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1483,7 +1483,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Dynamically choose implementation Macos x86-64: modern for 10.10+, fallback for older versions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#[cfg(all(target_os = "macos", target_arch = "x86_64"))]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#[cfg(all(target_os = "macos", not(target_arch = "aarch64")))]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mod remove_dir_impl {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     use super::{cstr, lstat, Dir, InnerReadDir, ReadDir};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     use crate::ffi::CStr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1509,6 +1509,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fn fdreaddir(dir_fd: OwnedFd) -> io::Result<(ReadDir, RawFd)> {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        #[cfg(all(target_os = "macos", target_arch = "x86"))]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        weak!(fn fdopendir(c_int) -> *mut DIR, "fdopendir$INODE64$UNIX2003");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        #[cfg(all(target_os = "macos", target_arch = "x86_64"))]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         weak!(fn fdopendir(c_int) -> *mut DIR, "fdopendir$INODE64");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         let ptr = unsafe { fdopendir.get().unwrap()(dir_fd.as_raw_fd()) };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ptr.is_null() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1602,7 +1605,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Modern implementation using openat(), unlinkat() and fdopendir()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #[cfg(not(any(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    all(target_os = "macos", target_arch = "x86_64"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    all(target_os = "macos", not(target_arch = "aarch64")),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     target_os = "redox",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     target_os = "espidf"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )))]
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/patch-llvm_libtool.diff b/lang/rust/files/patch-llvm_libtool.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..54e6357776e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/files/patch-llvm_libtool.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/bootstrap/native.rs.orig   2022-04-04 02:41:05.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/bootstrap/native.rs        2022-04-10 08:55:43.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -410,6 +410,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     use_compiler_launcher: bool,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     mut ldflags: LdFlags,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    cfg.define("CMAKE_LIBTOOL", "__MACPORTS_PREFIX__/bin/libtool");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // Do not print installation messages for up-to-date files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // LLVM and LLD builds can produce a lot of those and hit CI limits on log size.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     cfg.define("CMAKE_INSTALL_MESSAGE", "LAZY");
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/patch-no_CFURLSetResourcePropertyForKey.diff b/lang/rust/files/patch-no_CFURLSetResourcePropertyForKey.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..59c11663463
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/files/patch-no_CFURLSetResourcePropertyForKey.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/tools/cargo/crates/cargo-util/src/paths.rs.orig    2022-04-04 02:41:28.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/tools/cargo/crates/cargo-util/src/paths.rs 2022-04-10 08:55:43.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -708,10 +708,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#[cfg(not(target_os = "macos"))]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#[cfg(target_os = "macos")]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fn exclude_from_time_machine(_: &Path) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#[cfg(target_os = "macos")]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#[cfg(not(target_os = "macos"))]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// Marks files or directories as excluded from Time Machine on macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fn exclude_from_time_machine(path: &Path) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     use core_foundation::base::TCFType;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/offline-bootstrap.patch b/lang/rust/files/patch-offline_bootstrap.diff
</span>similarity index 94%
rename from lang/rust/files/offline-bootstrap.patch
rename to lang/rust/files/patch-offline_bootstrap.diff
<span style='display:block; white-space:pre;color:#808080;'>index 864ac3426e2..d040b7725a6 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/rust/files/offline-bootstrap.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/files/patch-offline_bootstrap.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,6 @@
</span> --- src/bootstrap/bootstrap.py    2022-02-24 14:11:08.000000000 -0500
 +++ src/bootstrap/bootstrap.py 2022-02-24 14:11:49.000000000 -0500
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1028,6 +1028,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1040,6 +1040,7 @@
</span>              args.append("--locked")
          if self.use_vendored_sources:
              args.append("--frozen")
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/rust/files/patch-ssize_t.diff b/lang/rust/files/patch-ssize_t.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..302f222f1c9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/rust/files/patch-ssize_t.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See https://github.com/llvm/llvm-project/issues/54846
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/llvm-project/llvm/tools/llvm-objcopy/MachO/MachOWriter.cpp.orig    2022-03-09 01:50:54.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/llvm-project/llvm/tools/llvm-objcopy/MachO/MachOWriter.cpp 2022-04-10 11:32:24.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -567,7 +567,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   while (CurrHashReadPosition < HashReadEnd) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     StringRef Block(reinterpret_cast<char *>(CurrHashReadPosition),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     std::min(HashReadEnd - CurrHashReadPosition,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                             static_cast<ssize_t>(CodeSignature.BlockSize)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             static_cast<std::ptrdiff_t>(CodeSignature.BlockSize)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     SHA256 Hasher;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Hasher.update(Block);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     StringRef Hash = Hasher.final();
</span></pre><pre style='margin:0'>

</pre>