diff options
author | Tobias Kortkamp <tobik@FreeBSD.org> | 2020-07-17 06:44:04 +0000 |
---|---|---|
committer | Tobias Kortkamp <tobik@FreeBSD.org> | 2020-07-17 06:44:04 +0000 |
commit | b0f1d6430efe60a7d9a3aa11e8ed28a80842469b (patch) | |
tree | 99d9ac6360ee6f7d04f5cb7d7f1db83a19a355f8 /lang/rust | |
parent | multimedia/kodi-addon-pvr-hts: Update to 4.4.21 to chase kodi update (diff) |
lang/rust: Update to 1.45.0
- This Rust release comes with LLVM 10. Drop the LLVM patches we
no longer need.
- On FreeBSD 13.0 powerpc64 set the elfv2 ABI explicitly in the
Rust target instead of patching LLVM.
- Build LLVM with Ninja. It can shorten the build time slightly.
- Force rebuild all consumers to catch regressions early
Changes: https://blog.rust-lang.org/2020/07/16/Rust-1.45.0.html
Tested by: mikael, pkubaj, tobik
With hat: rust
Differential Revision: https://reviews.freebsd.org/D25658
Notes
Notes:
svn path=/head/; revision=542412
Diffstat (limited to 'lang/rust')
9 files changed, 75 insertions, 371 deletions
diff --git a/lang/rust/Makefile b/lang/rust/Makefile index cae53f4de613..8dd66f57536e 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -2,10 +2,10 @@ # $FreeBSD$ PORTNAME= rust -PORTVERSION?= 1.44.1 -PORTREVISION?= 1 +PORTVERSION?= 1.45.0 +PORTREVISION?= 0 CATEGORIES= lang -MASTER_SITES= https://static.rust-lang.org/dist/:src \ +MASTER_SITES= https://dev-static.rust-lang.org/dist/:src \ LOCAL/tobik/rust:bootstrap \ https://static.rust-lang.org/dist/:bootstrap DISTNAME?= ${PORTNAME}c-${PORTVERSION}-src @@ -28,10 +28,8 @@ ONLY_FOR_ARCHS?= aarch64 amd64 armv6 armv7 i386 powerpc64 ONLY_FOR_ARCHS_REASON?= requires prebuilt bootstrap compiler BUILD_DEPENDS= cmake:devel/cmake \ - libgit2>=1.0.0:devel/libgit2 -.if defined(NIGHTLY_DATE) -BUILD_DEPENDS+= ninja:devel/ninja -.endif + libgit2>=1.0.0:devel/libgit2 \ + ninja:devel/ninja LIB_DEPENDS= libcurl.so:ftp/curl \ libgit2.so:devel/libgit2 \ libssh2.so:security/libssh2 @@ -57,14 +55,15 @@ WASM_DESC= Build the WebAssembly target (wasm32-unknown-unknown) DOCS_VARS= _RUST_BUILD_DOCS=true DOCS_VARS_OFF= _RUST_BUILD_DOCS=false GDB_RUN_DEPENDS= ${LOCALBASE}/bin/gdb:devel/gdb +SOURCES_VARS= _RUST_TOOLS+=src WASM_VARS= _RUST_BUILD_WASM=true \ _RUST_TARGETS+=wasm32-unknown-unknown WASM_VARS_OFF= _RUST_BUILD_WASM=false # See WRKSRC/src/stage0.txt for the date and version values. -BOOTSTRAPS_DATE?= 2020-05-07 -RUST_BOOTSTRAP_VERSION?= 1.43.1 -CARGO_BOOTSTRAP_VERSION?= 0.44.0 +BOOTSTRAPS_DATE?= 2020-06-18 +RUST_BOOTSTRAP_VERSION?= 1.44.1 +CARGO_BOOTSTRAP_VERSION?= 0.45.1 BOOTSTRAPS_SUFFIX?= ${BOOTSTRAPS_SUFFIX_${ARCH}} BOOTSTRAPS_SUFFIX_powerpc64?= -${PPC_ABI:tl} @@ -76,6 +75,7 @@ _RUST_ARCH_amd64= x86_64 _RUST_ARCH_i386= i686 _RUST_TARGET= ${_RUST_ARCH_${ARCH}:U${ARCH}}-unknown-${OPSYS:tl} _RUST_TARGETS= ${_RUST_TARGET} +_RUST_TOOLS= analysis cargo clippy rls rustfmt _RUSTC_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rustc-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} _RUST_STD_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rust-std-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} @@ -107,20 +107,10 @@ post-patch: .if defined(NIGHTLY_DATE) @${REINPLACE_CMD} '/^rustfmt:/d' ${WRKSRC}/src/stage0.txt .endif -.if ${ARCH} == powerpc64 -# Starting with 13.0 powerpc64 is ELFv2 while 12.0 is ELFv1. Pass the correct LLVM target triple. - @${REINPLACE_CMD} 's,powerpc64-unknown-freebsd,powerpc64-unknown-freebsd${OSREL},' \ - ${WRKSRC}/src/librustc_target/spec/powerpc64_unknown_freebsd.rs -.endif # Disable vendor checksums @${REINPLACE_CMD} 's,"files":{[^}]*},"files":{},' \ ${CARGO_VENDOR_DIR}/*/.cargo-checksum.json -post-patch-SOURCES-off: -# Mimic tools in config.toml with just src excluded - @${REINPLACE_CMD} 's,config.tools.*"src".*,false;,' \ - ${WRKSRC}/src/bootstrap/install.rs - do-configure: # Check that the running kernel has COMPAT_FREEBSD11 required by lang/rust post-ino64 @${SETENV} CC="${CC}" OPSYS="${OPSYS}" OSVERSION="${OSVERSION}" WRKDIR="${WRKDIR}" \ @@ -142,6 +132,7 @@ do-configure: @${ECHO_CMD} 'target=[${_RUST_TARGETS:@.target.@"${.target.}"@:ts,}]' >> ${WRKSRC}/config.toml @${ECHO_CMD} 'cargo="${WRKDIR}/bootstrap/bin/cargo"' >> ${WRKSRC}/config.toml @${ECHO_CMD} 'rustc="${WRKDIR}/bootstrap/bin/rustc"' >> ${WRKSRC}/config.toml + @${ECHO_CMD} 'tools=[${_RUST_TOOLS:@.tool.@"${.tool.}"@:ts,}]' >> ${WRKSRC}/config.toml @${ECHO_CMD} '[install]' >> ${WRKSRC}/config.toml @${ECHO_CMD} 'prefix="${PREFIX}"' >> ${WRKSRC}/config.toml @${ECHO_CMD} 'sysconfdir="${PREFIX}/etc"' >> ${WRKSRC}/config.toml @@ -156,9 +147,7 @@ do-configure: .else @${ECHO_CMD} 'ccache=false' >> ${WRKSRC}/config.toml .endif -.if defined(NIGHTLY_DATE) @${ECHO_CMD} 'ninja=true' >> ${WRKSRC}/config.toml -.endif .if ${ARCH} == armv6 # fails to link with base ld.bfd: rustc_codegen_llvm.e2557spx-cgu.11:(.text._ZN89_$LT$rustc_target..abi..call..CastTarget$u20$as$u20$rustc_codegen_llvm..abi..LlvmType$GT$9llvm_type17h1296210ab461fc57E+0x54): relocation truncated to fit: R_ARM_CALL against symbol `__aeabi_uldivmod' defined in .text.__aeabi_uldivmod section in /tmp/rustcdnGbao/libcompiler_builtins-ee65b414e4115a8f.rlib(compiler_builtins-ee65b414e4115a8f.compiler_builtins.ay8p39ey-cgu.13.rcgu.o) @${PRINTF} '#!/bin/sh\nexec ${CC} -fuse-ld=lld "$$@"' > ${WRKDIR}/cc-wrapper diff --git a/lang/rust/distinfo b/lang/rust/distinfo index eb80643facfc..4d69ea676c16 100644 --- a/lang/rust/distinfo +++ b/lang/rust/distinfo @@ -1,45 +1,45 @@ -TIMESTAMP = 1592451352 -SHA256 (rust/rustc-1.44.1-src.tar.xz) = e0386295dd5f2c7842835a509e4c57989eec6c29f989a1c85478b0e06f9d38ea -SIZE (rust/rustc-1.44.1-src.tar.xz) = 94756856 -SHA256 (rust/2020-05-07/rustc-1.43.1-aarch64-unknown-freebsd.tar.xz) = bf65d73547f9a1445ea8177fc452dddab8bbcfff8ad17d8292903ba4fc65d1a6 -SIZE (rust/2020-05-07/rustc-1.43.1-aarch64-unknown-freebsd.tar.xz) = 27175484 -SHA256 (rust/2020-05-07/rust-std-1.43.1-aarch64-unknown-freebsd.tar.xz) = d0f8413767123d9630bb2648fe15e8a2a05382cb7dcbe3c332223eb1e4a788a4 -SIZE (rust/2020-05-07/rust-std-1.43.1-aarch64-unknown-freebsd.tar.xz) = 13267024 -SHA256 (rust/2020-05-07/cargo-0.44.0-aarch64-unknown-freebsd.tar.xz) = 8f5852b0fb3a726152468e48bfb3f95d4441493901325c739dba5d7a444d3e2b -SIZE (rust/2020-05-07/cargo-0.44.0-aarch64-unknown-freebsd.tar.xz) = 3891232 -SHA256 (rust/2020-05-07/rustc-1.43.1-x86_64-unknown-freebsd.tar.xz) = 7d12495c00e2e6186a2ca26b13b41a90b1444aa379313a816f83bee31d2f6454 -SIZE (rust/2020-05-07/rustc-1.43.1-x86_64-unknown-freebsd.tar.xz) = 29803884 -SHA256 (rust/2020-05-07/rust-std-1.43.1-x86_64-unknown-freebsd.tar.xz) = a4610e7a07792a382c01511d7401f8bc4404a59e8529659f770e96734ef1ee71 -SIZE (rust/2020-05-07/rust-std-1.43.1-x86_64-unknown-freebsd.tar.xz) = 13797152 -SHA256 (rust/2020-05-07/cargo-0.44.0-x86_64-unknown-freebsd.tar.xz) = c70f874ccf4ac92b5138d13ef374429702ace98fa01b621dc1b308e73adead05 -SIZE (rust/2020-05-07/cargo-0.44.0-x86_64-unknown-freebsd.tar.xz) = 4632952 -SHA256 (rust/2020-05-07/rustc-1.43.1-armv6-unknown-freebsd.tar.xz) = 360495e0722e16ea29076d21399fd65f65e787b419ea3069d711aa2f4fcb4098 -SIZE (rust/2020-05-07/rustc-1.43.1-armv6-unknown-freebsd.tar.xz) = 28690648 -SHA256 (rust/2020-05-07/rust-std-1.43.1-armv6-unknown-freebsd.tar.xz) = f400e2a4b001a3a9e505c61728cfe1274f2e68f60c455f8aa72159c814af04e2 -SIZE (rust/2020-05-07/rust-std-1.43.1-armv6-unknown-freebsd.tar.xz) = 13260336 -SHA256 (rust/2020-05-07/cargo-0.44.0-armv6-unknown-freebsd.tar.xz) = bac4421f5237aa743fc5c416298344057a550d4563d622d9ece2c715075308f8 -SIZE (rust/2020-05-07/cargo-0.44.0-armv6-unknown-freebsd.tar.xz) = 3980908 -SHA256 (rust/2020-05-07/rustc-1.43.1-armv7-unknown-freebsd.tar.xz) = 6d56e3c9517a3798b30e90735eaecea41e2a1677549f9aee31550ab095b0d88e -SIZE (rust/2020-05-07/rustc-1.43.1-armv7-unknown-freebsd.tar.xz) = 28783628 -SHA256 (rust/2020-05-07/rust-std-1.43.1-armv7-unknown-freebsd.tar.xz) = 8363fcce57a0aebecd2e0b18fef5701a9a55f082698eef282dc45c43c0dee106 -SIZE (rust/2020-05-07/rust-std-1.43.1-armv7-unknown-freebsd.tar.xz) = 13185812 -SHA256 (rust/2020-05-07/cargo-0.44.0-armv7-unknown-freebsd.tar.xz) = 9bd79b8da7b4eef717f4773e0d282b158c783d0545b35437060726634e917079 -SIZE (rust/2020-05-07/cargo-0.44.0-armv7-unknown-freebsd.tar.xz) = 3975184 -SHA256 (rust/2020-05-07/rustc-1.43.1-i686-unknown-freebsd.tar.xz) = 3ec5c5a58f55f62c2225d79839c66d85ec1e036df7f348d7fbc5fd8742ee408e -SIZE (rust/2020-05-07/rustc-1.43.1-i686-unknown-freebsd.tar.xz) = 30358564 -SHA256 (rust/2020-05-07/rust-std-1.43.1-i686-unknown-freebsd.tar.xz) = 0484f94f7c3da65ab04c81d0da48c278c6432d001e5eaf5cd47f3c20e505c247 -SIZE (rust/2020-05-07/rust-std-1.43.1-i686-unknown-freebsd.tar.xz) = 13793004 -SHA256 (rust/2020-05-07/cargo-0.44.0-i686-unknown-freebsd.tar.xz) = d6cdaf9f3106a45eb0b561be88450dd5d142ce78e3507d59bdf6f0ce0efa3313 -SIZE (rust/2020-05-07/cargo-0.44.0-i686-unknown-freebsd.tar.xz) = 4550164 -SHA256 (rust/2020-05-07/rustc-1.43.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 0d3dd6720be8ce31ef79ea20cc6dab432e4eca364a44b6bb27ff9cefea1d6966 -SIZE (rust/2020-05-07/rustc-1.43.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 33209688 -SHA256 (rust/2020-05-07/rust-std-1.43.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 7f48580ffcadb6de4347efe58e6e24485cdb996e58f99ae88a1b057e34bb6e43 -SIZE (rust/2020-05-07/rust-std-1.43.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 13249040 -SHA256 (rust/2020-05-07/cargo-0.44.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = ec9418790b1ba5f12fa0837779ebb75e43d8bf727ca4b7dad41e44f53af0ad35 -SIZE (rust/2020-05-07/cargo-0.44.0-powerpc64-unknown-freebsd-elfv1.tar.xz) = 4530892 -SHA256 (rust/2020-05-07/rustc-1.43.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 56c0a38209aca776f9836a414d87672e86213dc431aa441e59b58e52e86ebe17 -SIZE (rust/2020-05-07/rustc-1.43.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 27568464 -SHA256 (rust/2020-05-07/rust-std-1.43.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 54fd8ebc85460db5b822b56082d22ae5343837f766d4f64c8a7885c242e24787 -SIZE (rust/2020-05-07/rust-std-1.43.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 13226424 -SHA256 (rust/2020-05-07/cargo-0.44.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = e2a857b8292181e30ef98384a16e432246780f7aab7c7ee7f4634bc9da015661 -SIZE (rust/2020-05-07/cargo-0.44.0-powerpc64-unknown-freebsd-elfv2.tar.xz) = 4227604 +TIMESTAMP = 1594679619 +SHA256 (rust/rustc-1.45.0-src.tar.xz) = c436034db42bc0ea7e7f32816ac6555b70d1f76c834407597966dfaf2ec839d6 +SIZE (rust/rustc-1.45.0-src.tar.xz) = 98677856 +SHA256 (rust/2020-06-18/rustc-1.44.1-aarch64-unknown-freebsd.tar.xz) = 76eb48d6f925cc80ae79ce088d4d9f1aec7daee860d6d730fa4575fc9340329e +SIZE (rust/2020-06-18/rustc-1.44.1-aarch64-unknown-freebsd.tar.xz) = 27714208 +SHA256 (rust/2020-06-18/rust-std-1.44.1-aarch64-unknown-freebsd.tar.xz) = 8914a9222c0680297d90ca15d4b5e93dab277cd122933ec3c5ebf09c2a3dc245 +SIZE (rust/2020-06-18/rust-std-1.44.1-aarch64-unknown-freebsd.tar.xz) = 13821100 +SHA256 (rust/2020-06-18/cargo-0.45.1-aarch64-unknown-freebsd.tar.xz) = 643c9f03af1f4bda3f8278341f7c76d38dbce93deb966f0bb99fdd061f61b35c +SIZE (rust/2020-06-18/cargo-0.45.1-aarch64-unknown-freebsd.tar.xz) = 3954724 +SHA256 (rust/2020-06-18/rustc-1.44.1-x86_64-unknown-freebsd.tar.xz) = a8b8dbce588446fdcd24878114a7366f052c9f58996d1de8b7fbf303874320fd +SIZE (rust/2020-06-18/rustc-1.44.1-x86_64-unknown-freebsd.tar.xz) = 30246044 +SHA256 (rust/2020-06-18/rust-std-1.44.1-x86_64-unknown-freebsd.tar.xz) = c65d1ddbaf5b4616e886ee34d9ca05dedc9e1369b9e42501e07fb4f29023c943 +SIZE (rust/2020-06-18/rust-std-1.44.1-x86_64-unknown-freebsd.tar.xz) = 14477368 +SHA256 (rust/2020-06-18/cargo-0.45.1-x86_64-unknown-freebsd.tar.xz) = ba4bcc8640eaacef28ce167f577320e780b04b1fe2b9de1ff6bedd6b1f8f186c +SIZE (rust/2020-06-18/cargo-0.45.1-x86_64-unknown-freebsd.tar.xz) = 4676020 +SHA256 (rust/2020-06-18/rustc-1.44.1-armv6-unknown-freebsd.tar.xz) = 70df1f88849eab352b922286cf11a81fefd0c74233da89fed63b1a95173addc0 +SIZE (rust/2020-06-18/rustc-1.44.1-armv6-unknown-freebsd.tar.xz) = 29123284 +SHA256 (rust/2020-06-18/rust-std-1.44.1-armv6-unknown-freebsd.tar.xz) = 64a66fbc6b4c5fa50c5fa6837a35bf70daa277dabd63f8bb70e5e3a28e134b1f +SIZE (rust/2020-06-18/rust-std-1.44.1-armv6-unknown-freebsd.tar.xz) = 13860760 +SHA256 (rust/2020-06-18/cargo-0.45.1-armv6-unknown-freebsd.tar.xz) = f4b496153fdeb366ff3a4fc7e9f76f79567fa48e8b5095d701ce2a557e8ddddf +SIZE (rust/2020-06-18/cargo-0.45.1-armv6-unknown-freebsd.tar.xz) = 4059848 +SHA256 (rust/2020-06-18/rustc-1.44.1-armv7-unknown-freebsd.tar.xz) = 2f7caecbbb87c9b2c289b86705b335ba7c72b69a49e34b373748949795ba3c96 +SIZE (rust/2020-06-18/rustc-1.44.1-armv7-unknown-freebsd.tar.xz) = 29000984 +SHA256 (rust/2020-06-18/rust-std-1.44.1-armv7-unknown-freebsd.tar.xz) = 8d1de65d63e7669c6058d597aefa99077078f3827dc523c82985d11a55d6ef1e +SIZE (rust/2020-06-18/rust-std-1.44.1-armv7-unknown-freebsd.tar.xz) = 13878980 +SHA256 (rust/2020-06-18/cargo-0.45.1-armv7-unknown-freebsd.tar.xz) = 89af922e6a33432b0f8a1d569528cc482d6e255e5f5a621feda9aea90f727ab2 +SIZE (rust/2020-06-18/cargo-0.45.1-armv7-unknown-freebsd.tar.xz) = 4046556 +SHA256 (rust/2020-06-18/rustc-1.44.1-i686-unknown-freebsd.tar.xz) = 2e1d72c85b38aa8ba0e60cadbf2f8af19edcc478c42c77412338fd46edaa78bb +SIZE (rust/2020-06-18/rustc-1.44.1-i686-unknown-freebsd.tar.xz) = 30719424 +SHA256 (rust/2020-06-18/rust-std-1.44.1-i686-unknown-freebsd.tar.xz) = ff81978947669cb08e66dddeb3f97b25af9ba9c20231a90390b4907ff233295e +SIZE (rust/2020-06-18/rust-std-1.44.1-i686-unknown-freebsd.tar.xz) = 14316028 +SHA256 (rust/2020-06-18/cargo-0.45.1-i686-unknown-freebsd.tar.xz) = dcfd6e7e4a798331442c18ca6d40ba9cea9e82891dc29dae20dc6f11886098f5 +SIZE (rust/2020-06-18/cargo-0.45.1-i686-unknown-freebsd.tar.xz) = 4600508 +SHA256 (rust/2020-06-18/rustc-1.44.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 69f97a4ee7026324d2dd7fe17d58f3460b050497ade6676d4f371c24cc22ca44 +SIZE (rust/2020-06-18/rustc-1.44.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 33787016 +SHA256 (rust/2020-06-18/rust-std-1.44.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 6154918a77b3d5ea8c53fb7a8739404dd874f1b003e5dad05cf886e1e7b552c1 +SIZE (rust/2020-06-18/rust-std-1.44.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 13783880 +SHA256 (rust/2020-06-18/cargo-0.45.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 8cfc689a6a8068b3f405013b2ab5f109cf4130bda14f4c9a6d75f3b7c3cfd442 +SIZE (rust/2020-06-18/cargo-0.45.1-powerpc64-unknown-freebsd-elfv1.tar.xz) = 4517500 +SHA256 (rust/2020-06-18/rustc-1.44.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 657f04c1256862c0e7a9e22ce00d553c9c628e2c348b43abb5520d3ac811690c +SIZE (rust/2020-06-18/rustc-1.44.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 28157416 +SHA256 (rust/2020-06-18/rust-std-1.44.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 834cd2799fedd8d435441e92580efbaa4eddb630e686d69e71ecab2103a44b68 +SIZE (rust/2020-06-18/rust-std-1.44.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 13745812 +SHA256 (rust/2020-06-18/cargo-0.45.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 58eb64e241405b4243f448b764d9dc0173199bd567162278e5d7e2bcbaffc6ad +SIZE (rust/2020-06-18/cargo-0.45.1-powerpc64-unknown-freebsd-elfv2.tar.xz) = 4216696 diff --git a/lang/rust/files/armv6/patch-src_llvm-project_compiler-rt_lib_builtins_atomic.c b/lang/rust/files/armv6/patch-src_llvm-project_compiler-rt_lib_builtins_atomic.c deleted file mode 100644 index 48a112abcd57..000000000000 --- a/lang/rust/files/armv6/patch-src_llvm-project_compiler-rt_lib_builtins_atomic.c +++ /dev/null @@ -1,43 +0,0 @@ -https://reviews.llvm.org/D68045 - ---- src/llvm-project/compiler-rt/lib/builtins/atomic.c.orig 2019-09-09 18:30:53 UTC -+++ src/llvm-project/compiler-rt/lib/builtins/atomic.c -@@ -51,9 +51,11 @@ static const long SPINLOCK_MASK = SPINLOCK_COUNT - 1; - //////////////////////////////////////////////////////////////////////////////// - #ifdef __FreeBSD__ - #include <errno.h> --#include <machine/atomic.h> -+// clang-format off - #include <sys/types.h> -+#include <machine/atomic.h> - #include <sys/umtx.h> -+// clang-format on - typedef struct _usem Lock; - __inline static void unlock(Lock *l) { - __c11_atomic_store((_Atomic(uint32_t) *)&l->_count, 1, __ATOMIC_RELEASE); ---- src/llvm-project/compiler-rt/lib/builtins/clear_cache.c.orig 2019-09-09 18:30:53 UTC -+++ src/llvm-project/compiler-rt/lib/builtins/clear_cache.c -@@ -23,8 +23,10 @@ uintptr_t GetCurrentProcess(void); - #endif - - #if defined(__FreeBSD__) && defined(__arm__) --#include <machine/sysarch.h> -+// clang-format off - #include <sys/types.h> -+#include <machine/sysarch.h> -+// clang-format on - #endif - - #if defined(__NetBSD__) && defined(__arm__) -@@ -32,8 +34,10 @@ uintptr_t GetCurrentProcess(void); - #endif - - #if defined(__OpenBSD__) && defined(__mips__) --#include <machine/sysarch.h> -+// clang-format off - #include <sys/types.h> -+#include <machine/sysarch.h> -+// clang-format on - #endif - - #if defined(__linux__) && defined(__mips__) diff --git a/lang/rust/files/armv7/patch-src_llvm-project_compiler-rt_lib_builtins_atomic.c b/lang/rust/files/armv7/patch-src_llvm-project_compiler-rt_lib_builtins_atomic.c deleted file mode 100644 index 48a112abcd57..000000000000 --- a/lang/rust/files/armv7/patch-src_llvm-project_compiler-rt_lib_builtins_atomic.c +++ /dev/null @@ -1,43 +0,0 @@ -https://reviews.llvm.org/D68045 - ---- src/llvm-project/compiler-rt/lib/builtins/atomic.c.orig 2019-09-09 18:30:53 UTC -+++ src/llvm-project/compiler-rt/lib/builtins/atomic.c -@@ -51,9 +51,11 @@ static const long SPINLOCK_MASK = SPINLOCK_COUNT - 1; - //////////////////////////////////////////////////////////////////////////////// - #ifdef __FreeBSD__ - #include <errno.h> --#include <machine/atomic.h> -+// clang-format off - #include <sys/types.h> -+#include <machine/atomic.h> - #include <sys/umtx.h> -+// clang-format on - typedef struct _usem Lock; - __inline static void unlock(Lock *l) { - __c11_atomic_store((_Atomic(uint32_t) *)&l->_count, 1, __ATOMIC_RELEASE); ---- src/llvm-project/compiler-rt/lib/builtins/clear_cache.c.orig 2019-09-09 18:30:53 UTC -+++ src/llvm-project/compiler-rt/lib/builtins/clear_cache.c -@@ -23,8 +23,10 @@ uintptr_t GetCurrentProcess(void); - #endif - - #if defined(__FreeBSD__) && defined(__arm__) --#include <machine/sysarch.h> -+// clang-format off - #include <sys/types.h> -+#include <machine/sysarch.h> -+// clang-format on - #endif - - #if defined(__NetBSD__) && defined(__arm__) -@@ -32,8 +34,10 @@ uintptr_t GetCurrentProcess(void); - #endif - - #if defined(__OpenBSD__) && defined(__mips__) --#include <machine/sysarch.h> -+// clang-format off - #include <sys/types.h> -+#include <machine/sysarch.h> -+// clang-format on - #endif - - #if defined(__linux__) && defined(__mips__) diff --git a/lang/rust/files/patch-src_bootstrap_native.rs b/lang/rust/files/patch-src_bootstrap_native.rs index 433833a4a5af..7af832a912d3 100644 --- a/lang/rust/files/patch-src_bootstrap_native.rs +++ b/lang/rust/files/patch-src_bootstrap_native.rs @@ -3,9 +3,9 @@ for building rust-lld. Attempt to improve reliability of the build by not using it. llvm-config-wrapper is a hack in the first place that is only really needed on Windows. ---- src/bootstrap/native.rs.orig 2020-02-27 18:39:49 UTC +--- src/bootstrap/native.rs.orig 2020-05-03 19:47:59 UTC +++ src/bootstrap/native.rs -@@ -467,25 +467,9 @@ impl Step for Lld { +@@ -488,25 +488,9 @@ impl Step for Lld { let mut cfg = cmake::Config::new(builder.src.join("src/llvm-project/lld")); configure_cmake(builder, target, &mut cfg, true); @@ -26,9 +26,9 @@ that is only really needed on Windows. - let llvm_config_shim = env::current_exe().unwrap().with_file_name("llvm-config-wrapper"); cfg.out_dir(&out_dir) .profile("Release") -- .env("LLVM_CONFIG_REAL", llvm_config) +- .env("LLVM_CONFIG_REAL", &llvm_config) - .define("LLVM_CONFIG_PATH", llvm_config_shim) -+ .define("LLVM_CONFIG_PATH", llvm_config) ++ .define("LLVM_CONFIG_PATH", &llvm_config) .define("LLVM_INCLUDE_TESTS", "OFF"); - cfg.build(); + // While we're using this horrible workaround to shim the execution of diff --git a/lang/rust/files/patch-src_llvm-project_llvm_lib_Transforms_InstCombine_InstCombineCasts.cpp b/lang/rust/files/patch-src_llvm-project_llvm_lib_Transforms_InstCombine_InstCombineCasts.cpp deleted file mode 100644 index 1b4a494b3fe8..000000000000 --- a/lang/rust/files/patch-src_llvm-project_llvm_lib_Transforms_InstCombine_InstCombineCasts.cpp +++ /dev/null @@ -1,156 +0,0 @@ -From f8e146f3430de3a6cd904f3f3f7aa1bfaefee14c Mon Sep 17 00:00:00 2001 -From: Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> -Date: Thu, 28 Nov 2019 23:18:28 +0100 -Subject: [PATCH] [InstCombine] Fix big-endian miscompile of (bitcast - (zext/trunc (bitcast))) - -Summary: -optimizeVectorResize is rewriting patterns like: - %1 = bitcast vector %src to integer - %2 = trunc/zext %1 - %dst = bitcast %2 to vector - -Since bitcasting between integer an vector types gives -different integer values depending on endianness, we need -to take endianness into account. As it happens the old -implementation only produced the correct result for little -endian targets. - -Fixes: https://bugs.llvm.org/show_bug.cgi?id=44178 - -Reviewers: spatel, lattner, lebedev.ri - -Reviewed By: spatel, lebedev.ri - -Subscribers: lebedev.ri, hiraditya, uabelho, llvm-commits - -Tags: #llvm - -Differential Revision: https://reviews.llvm.org/D70844 - -(cherry picked from commit a9d6b0e5444741d08ff1df7cf71d1559e7fefc1f) ---- - .../InstCombine/InstCombineCasts.cpp | 79 +++++++++++++------ - llvm/test/Transforms/InstCombine/cast.ll | 6 +- - 2 files changed, 60 insertions(+), 25 deletions(-) - ---- src/llvm-project/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp.orig 2020-04-07 15:52:51 UTC -+++ src/llvm-project/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp -@@ -18,6 +18,7 @@ - #include "llvm/IR/DIBuilder.h" - #include "llvm/IR/PatternMatch.h" - #include "llvm/Support/KnownBits.h" -+#include <numeric> - using namespace llvm; - using namespace PatternMatch; - -@@ -1820,12 +1821,24 @@ Instruction *InstCombiner::visitPtrToInt(PtrToIntInst - } - - /// This input value (which is known to have vector type) is being zero extended --/// or truncated to the specified vector type. -+/// or truncated to the specified vector type. Since the zext/trunc is done -+/// using an integer type, we have a (bitcast(cast(bitcast))) pattern, -+/// endianness will impact which end of the vector that is extended or -+/// truncated. -+/// -+/// A vector is always stored with index 0 at the lowest address, which -+/// corresponds to the most significant bits for a big endian stored integer and -+/// the least significant bits for little endian. A trunc/zext of an integer -+/// impacts the big end of the integer. Thus, we need to add/remove elements at -+/// the front of the vector for big endian targets, and the back of the vector -+/// for little endian targets. -+/// - /// Try to replace it with a shuffle (and vector/vector bitcast) if possible. - /// - /// The source and destination vector types may have different element types. --static Instruction *optimizeVectorResize(Value *InVal, VectorType *DestTy, -- InstCombiner &IC) { -+static Instruction *optimizeVectorResizeWithIntegerBitCasts(Value *InVal, -+ VectorType *DestTy, -+ InstCombiner &IC) { - // We can only do this optimization if the output is a multiple of the input - // element size, or the input is a multiple of the output element size. - // Convert the input type to have the same element type as the output. -@@ -1844,31 +1857,53 @@ static Instruction *optimizeVectorResize(Value *InVal, - InVal = IC.Builder.CreateBitCast(InVal, SrcTy); - } - -+ bool IsBigEndian = IC.getDataLayout().isBigEndian(); -+ unsigned SrcElts = SrcTy->getNumElements(); -+ unsigned DestElts = DestTy->getNumElements(); -+ -+ assert(SrcElts != DestElts && "Element counts should be different."); -+ - // Now that the element types match, get the shuffle mask and RHS of the - // shuffle to use, which depends on whether we're increasing or decreasing the - // size of the input. -- SmallVector<uint32_t, 16> ShuffleMask; -+ SmallVector<uint32_t, 16> ShuffleMaskStorage; -+ ArrayRef<uint32_t> ShuffleMask; - Value *V2; - -- if (SrcTy->getNumElements() > DestTy->getNumElements()) { -- // If we're shrinking the number of elements, just shuffle in the low -- // elements from the input and use undef as the second shuffle input. -- V2 = UndefValue::get(SrcTy); -- for (unsigned i = 0, e = DestTy->getNumElements(); i != e; ++i) -- ShuffleMask.push_back(i); -+ // Produce an identify shuffle mask for the src vector. -+ ShuffleMaskStorage.resize(SrcElts); -+ std::iota(ShuffleMaskStorage.begin(), ShuffleMaskStorage.end(), 0); - -+ if (SrcElts > DestElts) { -+ // If we're shrinking the number of elements (rewriting an integer -+ // truncate), just shuffle in the elements corresponding to the least -+ // significant bits from the input and use undef as the second shuffle -+ // input. -+ V2 = UndefValue::get(SrcTy); -+ // Make sure the shuffle mask selects the "least significant bits" by -+ // keeping elements from back of the src vector for big endian, and from the -+ // front for little endian. -+ ShuffleMask = ShuffleMaskStorage; -+ if (IsBigEndian) -+ ShuffleMask = ShuffleMask.take_back(DestElts); -+ else -+ ShuffleMask = ShuffleMask.take_front(DestElts); - } else { -- // If we're increasing the number of elements, shuffle in all of the -- // elements from InVal and fill the rest of the result elements with zeros -- // from a constant zero. -+ // If we're increasing the number of elements (rewriting an integer zext), -+ // shuffle in all of the elements from InVal. Fill the rest of the result -+ // elements with zeros from a constant zero. - V2 = Constant::getNullValue(SrcTy); -- unsigned SrcElts = SrcTy->getNumElements(); -- for (unsigned i = 0, e = SrcElts; i != e; ++i) -- ShuffleMask.push_back(i); -- -- // The excess elements reference the first element of the zero input. -- for (unsigned i = 0, e = DestTy->getNumElements()-SrcElts; i != e; ++i) -- ShuffleMask.push_back(SrcElts); -+ // Use first elt from V2 when indicating zero in the shuffle mask. -+ uint32_t NullElt = SrcElts; -+ // Extend with null values in the "most significant bits" by adding elements -+ // in front of the src vector for big endian, and at the back for little -+ // endian. -+ unsigned DeltaElts = DestElts - SrcElts; -+ if (IsBigEndian) -+ ShuffleMaskStorage.insert(ShuffleMaskStorage.begin(), DeltaElts, NullElt); -+ else -+ ShuffleMaskStorage.append(DeltaElts, NullElt); -+ ShuffleMask = ShuffleMaskStorage; - } - - return new ShuffleVectorInst(InVal, V2, -@@ -2396,8 +2431,8 @@ Instruction *InstCombiner::visitBitCast(BitCastInst &C - CastInst *SrcCast = cast<CastInst>(Src); - if (BitCastInst *BCIn = dyn_cast<BitCastInst>(SrcCast->getOperand(0))) - if (isa<VectorType>(BCIn->getOperand(0)->getType())) -- if (Instruction *I = optimizeVectorResize(BCIn->getOperand(0), -- cast<VectorType>(DestTy), *this)) -+ if (Instruction *I = optimizeVectorResizeWithIntegerBitCasts( -+ BCIn->getOperand(0), cast<VectorType>(DestTy), *this)) - return I; - } - diff --git a/lang/rust/files/powerpc64-elfv2/patch-src_librustc__target_spec_powerpc64__unknown__freebsd.rs b/lang/rust/files/powerpc64-elfv2/patch-src_librustc__target_spec_powerpc64__unknown__freebsd.rs new file mode 100644 index 000000000000..e8bf492c91a2 --- /dev/null +++ b/lang/rust/files/powerpc64-elfv2/patch-src_librustc__target_spec_powerpc64__unknown__freebsd.rs @@ -0,0 +1,14 @@ +--- src/librustc_target/spec/powerpc64_unknown_freebsd.rs.orig 2020-07-15 11:31:58 UTC ++++ src/librustc_target/spec/powerpc64_unknown_freebsd.rs +@@ -17,6 +17,10 @@ pub fn target() -> TargetResult { + target_env: String::new(), + target_vendor: "unknown".to_string(), + linker_flavor: LinkerFlavor::Gcc, +- options: TargetOptions { target_mcount: "_mcount".to_string(), ..base }, ++ options: TargetOptions { ++ target_mcount: "_mcount".to_string(), ++ llvm_abiname: "elfv2".to_string(), ++ ..base ++ }, + }) + } diff --git a/lang/rust/files/powerpc64-elfv2/patch-src_llvm-project_clang_lib_Basic_Targets_PPC.h b/lang/rust/files/powerpc64-elfv2/patch-src_llvm-project_clang_lib_Basic_Targets_PPC.h deleted file mode 100644 index 43e85603791d..000000000000 --- a/lang/rust/files/powerpc64-elfv2/patch-src_llvm-project_clang_lib_Basic_Targets_PPC.h +++ /dev/null @@ -1,34 +0,0 @@ ---- src/llvm-project/clang/lib/Basic/Targets/PPC.h.orig 2019-09-20 16:14:30 UTC -+++ src/llvm-project/clang/lib/Basic/Targets/PPC.h -@@ -374,12 +374,29 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public - IntMaxType = SignedLong; - Int64Type = SignedLong; - -+ if (Triple.getEnvironment() != llvm::Triple::UnknownEnvironment) { -+ switch (Triple.getEnvironment()){ -+ case llvm::Triple::ELFv1: -+ ABI = "elfv1"; -+ break; -+ default: -+ ABI = "elfv2"; -+ break; -+ } -+ } else { -+ if ((Triple.getOS() == llvm::Triple::FreeBSD) && -+ (Triple.getOSMajorVersion() < 13)) { -+ ABI = "elfv1"; -+ } else { -+ ABI = "elfv2"; -+ } -+ } -+ -+ - if ((Triple.getArch() == llvm::Triple::ppc64le)) { - resetDataLayout("e-m:e-i64:64-n32:64"); -- ABI = "elfv2"; - } else { - resetDataLayout("E-m:e-i64:64-n32:64"); -- ABI = Triple.getEnvironment() == llvm::Triple::ELFv2 ? "elfv2" : "elfv1"; - } - - if (Triple.getOS() == llvm::Triple::AIX) diff --git a/lang/rust/files/powerpc64-elfv2/patch-src_llvm-project_llvm_lib_Target_PowerPC_PPCTargetMachine.cpp b/lang/rust/files/powerpc64-elfv2/patch-src_llvm-project_llvm_lib_Target_PowerPC_PPCTargetMachine.cpp deleted file mode 100644 index 87fff59c8b28..000000000000 --- a/lang/rust/files/powerpc64-elfv2/patch-src_llvm-project_llvm_lib_Target_PowerPC_PPCTargetMachine.cpp +++ /dev/null @@ -1,23 +0,0 @@ ---- src/llvm-project/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp.orig 2019-09-20 16:14:30 UTC -+++ src/llvm-project/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp -@@ -209,6 +209,20 @@ static PPCTargetMachine::PPCABI computeTargetABI(const - if (TT.isMacOSX()) - return PPCTargetMachine::PPC_ABI_UNKNOWN; - -+ if (TT.isOSFreeBSD()) { -+ switch (TT.getArch()) { -+ case Triple::ppc64le: -+ case Triple::ppc64: -+ if (TT.getOSMajorVersion() >= 13) -+ return PPCTargetMachine::PPC_ABI_ELFv2; -+ else -+ return PPCTargetMachine::PPC_ABI_ELFv1; -+ case Triple::ppc: -+ default: -+ return PPCTargetMachine::PPC_ABI_UNKNOWN; -+ } -+ } -+ - switch (TT.getArch()) { - case Triple::ppc64le: - return PPCTargetMachine::PPC_ABI_ELFv2; |