diff --git a/.gitignore b/.gitignore index 601eddc..89ee55f 100644 --- a/.gitignore +++ b/.gitignore @@ -152,3 +152,11 @@ /rust-1.28.0-x86_64-unknown-linux-gnu.tar.xz /rustc-1.29.1-src.tar.xz /rustc-1.29.2-src.tar.xz +/rustc-1.30.0-src.tar.xz +/rust-1.29.2-aarch64-unknown-linux-gnu.tar.xz +/rust-1.29.2-armv7-unknown-linux-gnueabihf.tar.xz +/rust-1.29.2-i686-unknown-linux-gnu.tar.xz +/rust-1.29.2-powerpc64le-unknown-linux-gnu.tar.xz +/rust-1.29.2-powerpc64-unknown-linux-gnu.tar.xz +/rust-1.29.2-s390x-unknown-linux-gnu.tar.xz +/rust-1.29.2-x86_64-unknown-linux-gnu.tar.xz diff --git a/0001-Set-more-llvm-function-attributes-for-__rust_try.patch b/0001-Set-more-llvm-function-attributes-for-__rust_try.patch deleted file mode 100644 index 36bb15c..0000000 --- a/0001-Set-more-llvm-function-attributes-for-__rust_try.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 4b95b1a4fd035a73998dc21b265ce4594e35f8ae Mon Sep 17 00:00:00 2001 -From: Alex Crichton -Date: Thu, 16 Aug 2018 13:19:04 -0700 -Subject: [PATCH] Set more llvm function attributes for __rust_try - -This shim is generated elsewhere in the compiler so this commit adds support to -ensure it goes through similar paths as the rest of the compiler to set llvm -function attributes like target features. - -cc #53372 ---- - src/librustc_codegen_llvm/attributes.rs | 52 +++++++++++++++++++------ - src/librustc_codegen_llvm/base.rs | 21 ---------- - src/librustc_codegen_llvm/callee.rs | 2 +- - src/librustc_codegen_llvm/intrinsic.rs | 2 + - src/librustc_codegen_llvm/mono_item.rs | 2 +- - 5 files changed, 44 insertions(+), 35 deletions(-) - -diff --git a/src/librustc_codegen_llvm/attributes.rs b/src/librustc_codegen_llvm/attributes.rs -index 3b5f927d52f0..2a79ce2f2285 100644 ---- a/src/librustc_codegen_llvm/attributes.rs -+++ b/src/librustc_codegen_llvm/attributes.rs -@@ -11,7 +11,7 @@ - - use std::ffi::{CStr, CString}; - --use rustc::hir::CodegenFnAttrFlags; -+use rustc::hir::{CodegenFnAttrFlags, CodegenFnAttrs}; - use rustc::hir::def_id::{DefId, LOCAL_CRATE}; - use rustc::session::Session; - use rustc::session::config::Sanitizer; -@@ -123,11 +123,37 @@ pub fn llvm_target_features(sess: &Session) -> impl Iterator { - - /// Composite function which sets LLVM attributes for function depending on its AST (#[attribute]) - /// attributes. --pub fn from_fn_attrs(cx: &CodegenCx, llfn: ValueRef, id: DefId) { -- let codegen_fn_attrs = cx.tcx.codegen_fn_attrs(id); -+pub fn from_fn_attrs( -+ cx: &CodegenCx, -+ llfn: ValueRef, -+ id: Option, -+) { -+ let codegen_fn_attrs = id.map(|id| cx.tcx.codegen_fn_attrs(id)) -+ .unwrap_or(CodegenFnAttrs::new()); - - inline(llfn, codegen_fn_attrs.inline); - -+ // The `uwtable` attribute according to LLVM is: -+ // -+ // This attribute indicates that the ABI being targeted requires that an -+ // unwind table entry be produced for this function even if we can show -+ // that no exceptions passes by it. This is normally the case for the -+ // ELF x86-64 abi, but it can be disabled for some compilation units. -+ // -+ // Typically when we're compiling with `-C panic=abort` (which implies this -+ // `no_landing_pads` check) we don't need `uwtable` because we can't -+ // generate any exceptions! On Windows, however, exceptions include other -+ // events such as illegal instructions, segfaults, etc. This means that on -+ // Windows we end up still needing the `uwtable` attribute even if the `-C -+ // panic=abort` flag is passed. -+ // -+ // You can also find more info on why Windows is whitelisted here in: -+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1302078 -+ if !cx.sess().no_landing_pads() || -+ cx.sess().target.target.options.requires_uwtable { -+ attributes::emit_uwtable(llfn, true); -+ } -+ - set_frame_pointer_elimination(cx, llfn); - set_probestack(cx, llfn); - -@@ -151,7 +177,7 @@ pub fn from_fn_attrs(cx: &CodegenCx, llfn: ValueRef, id: DefId) { - // *in Rust code* may unwind. Foreign items like `extern "C" { - // fn foo(); }` are assumed not to unwind **unless** they have - // a `#[unwind]` attribute. -- } else if !cx.tcx.is_foreign_item(id) { -+ } else if id.map(|id| !cx.tcx.is_foreign_item(id)).unwrap_or(false) { - Some(true) - } else { - None -@@ -188,14 +214,16 @@ pub fn from_fn_attrs(cx: &CodegenCx, llfn: ValueRef, id: DefId) { - // Note that currently the `wasm-import-module` doesn't do anything, but - // eventually LLVM 7 should read this and ferry the appropriate import - // module to the output file. -- if cx.tcx.sess.target.target.arch == "wasm32" { -- if let Some(module) = wasm_import_module(cx.tcx, id) { -- llvm::AddFunctionAttrStringValue( -- llfn, -- llvm::AttributePlace::Function, -- cstr("wasm-import-module\0"), -- &module, -- ); -+ if let Some(id) = id { -+ if cx.tcx.sess.target.target.arch == "wasm32" { -+ if let Some(module) = wasm_import_module(cx.tcx, id) { -+ llvm::AddFunctionAttrStringValue( -+ llfn, -+ llvm::AttributePlace::Function, -+ cstr("wasm-import-module\0"), -+ &module, -+ ); -+ } - } - } - } -diff --git a/src/librustc_codegen_llvm/base.rs b/src/librustc_codegen_llvm/base.rs -index 223c04f420f3..b0461582ddcb 100644 ---- a/src/librustc_codegen_llvm/base.rs -+++ b/src/librustc_codegen_llvm/base.rs -@@ -486,27 +486,6 @@ pub fn codegen_instance<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, instance: Instance<' - - cx.stats.borrow_mut().n_closures += 1; - -- // The `uwtable` attribute according to LLVM is: -- // -- // This attribute indicates that the ABI being targeted requires that an -- // unwind table entry be produced for this function even if we can show -- // that no exceptions passes by it. This is normally the case for the -- // ELF x86-64 abi, but it can be disabled for some compilation units. -- // -- // Typically when we're compiling with `-C panic=abort` (which implies this -- // `no_landing_pads` check) we don't need `uwtable` because we can't -- // generate any exceptions! On Windows, however, exceptions include other -- // events such as illegal instructions, segfaults, etc. This means that on -- // Windows we end up still needing the `uwtable` attribute even if the `-C -- // panic=abort` flag is passed. -- // -- // You can also find more info on why Windows is whitelisted here in: -- // https://bugzilla.mozilla.org/show_bug.cgi?id=1302078 -- if !cx.sess().no_landing_pads() || -- cx.sess().target.target.options.requires_uwtable { -- attributes::emit_uwtable(lldecl, true); -- } -- - let mir = cx.tcx.instance_mir(instance.def); - mir::codegen_mir(cx, lldecl, &mir, instance, sig); - } -diff --git a/src/librustc_codegen_llvm/callee.rs b/src/librustc_codegen_llvm/callee.rs -index 2c01bd42cc77..97f07792ede8 100644 ---- a/src/librustc_codegen_llvm/callee.rs -+++ b/src/librustc_codegen_llvm/callee.rs -@@ -97,7 +97,7 @@ pub fn get_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, - if instance.def.is_inline(tcx) { - attributes::inline(llfn, attributes::InlineAttr::Hint); - } -- attributes::from_fn_attrs(cx, llfn, instance.def.def_id()); -+ attributes::from_fn_attrs(cx, llfn, Some(instance.def.def_id())); - - let instance_def_id = instance.def_id(); - -diff --git a/src/librustc_codegen_llvm/intrinsic.rs b/src/librustc_codegen_llvm/intrinsic.rs -index 9c5c0f730c16..f69fce15dc55 100644 ---- a/src/librustc_codegen_llvm/intrinsic.rs -+++ b/src/librustc_codegen_llvm/intrinsic.rs -@@ -10,6 +10,7 @@ - - #![allow(non_upper_case_globals)] - -+use attributes; - use intrinsics::{self, Intrinsic}; - use llvm; - use llvm::{ValueRef}; -@@ -936,6 +937,7 @@ fn gen_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, - Abi::Rust - ))); - let llfn = declare::define_internal_fn(cx, name, rust_fn_ty); -+ attributes::from_fn_attrs(cx, llfn, None); - let bx = Builder::new_block(cx, llfn, "entry-block"); - codegen(bx); - llfn -diff --git a/src/librustc_codegen_llvm/mono_item.rs b/src/librustc_codegen_llvm/mono_item.rs -index a528008e3b4b..32d8b24e3c15 100644 ---- a/src/librustc_codegen_llvm/mono_item.rs -+++ b/src/librustc_codegen_llvm/mono_item.rs -@@ -183,7 +183,7 @@ fn predefine_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, - if instance.def.is_inline(cx.tcx) { - attributes::inline(lldecl, attributes::InlineAttr::Hint); - } -- attributes::from_fn_attrs(cx, lldecl, instance.def.def_id()); -+ attributes::from_fn_attrs(cx, lldecl, Some(instance.def.def_id())); - - cx.instances.borrow_mut().insert(instance, lldecl); - } --- -2.17.1 - diff --git a/0001-std-stop-backtracing-when-the-frames-are-full.patch b/0001-std-stop-backtracing-when-the-frames-are-full.patch deleted file mode 100644 index aa1b9a5..0000000 --- a/0001-std-stop-backtracing-when-the-frames-are-full.patch +++ /dev/null @@ -1,122 +0,0 @@ -From f4e8d57b6ad6f599de54c020ba185db83cb011a3 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Thu, 16 Aug 2018 11:26:27 -0700 -Subject: [PATCH] std: stop backtracing when the frames are full - ---- - src/libstd/sys/cloudabi/backtrace.rs | 18 ++++++++++-------- - src/libstd/sys/redox/backtrace/tracing.rs | 18 ++++++++++-------- - src/libstd/sys/unix/backtrace/tracing/gcc_s.rs | 18 ++++++++++-------- - 3 files changed, 30 insertions(+), 24 deletions(-) - -diff --git a/src/libstd/sys/cloudabi/backtrace.rs b/src/libstd/sys/cloudabi/backtrace.rs -index 1b970187558c..2c43b5937ce5 100644 ---- a/src/libstd/sys/cloudabi/backtrace.rs -+++ b/src/libstd/sys/cloudabi/backtrace.rs -@@ -64,6 +64,10 @@ extern "C" fn trace_fn( - arg: *mut libc::c_void, - ) -> uw::_Unwind_Reason_Code { - let cx = unsafe { &mut *(arg as *mut Context) }; -+ if cx.idx >= cx.frames.len() { -+ return uw::_URC_NORMAL_STOP; -+ } -+ - let mut ip_before_insn = 0; - let mut ip = unsafe { uw::_Unwind_GetIPInfo(ctx, &mut ip_before_insn) as *mut libc::c_void }; - if !ip.is_null() && ip_before_insn == 0 { -@@ -73,14 +77,12 @@ extern "C" fn trace_fn( - } - - let symaddr = unsafe { uw::_Unwind_FindEnclosingFunction(ip) }; -- if cx.idx < cx.frames.len() { -- cx.frames[cx.idx] = Frame { -- symbol_addr: symaddr as *mut u8, -- exact_position: ip as *mut u8, -- inline_context: 0, -- }; -- cx.idx += 1; -- } -+ cx.frames[cx.idx] = Frame { -+ symbol_addr: symaddr as *mut u8, -+ exact_position: ip as *mut u8, -+ inline_context: 0, -+ }; -+ cx.idx += 1; - - uw::_URC_NO_REASON - } -diff --git a/src/libstd/sys/redox/backtrace/tracing.rs b/src/libstd/sys/redox/backtrace/tracing.rs -index bb70ca360370..c0414b78f8d6 100644 ---- a/src/libstd/sys/redox/backtrace/tracing.rs -+++ b/src/libstd/sys/redox/backtrace/tracing.rs -@@ -68,6 +68,10 @@ pub fn unwind_backtrace(frames: &mut [Frame]) - extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - arg: *mut libc::c_void) -> uw::_Unwind_Reason_Code { - let cx = unsafe { &mut *(arg as *mut Context) }; -+ if cx.idx >= cx.frames.len() { -+ return uw::_URC_NORMAL_STOP; -+ } -+ - let mut ip_before_insn = 0; - let mut ip = unsafe { - uw::_Unwind_GetIPInfo(ctx, &mut ip_before_insn) as *mut libc::c_void -@@ -94,14 +98,12 @@ extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - unsafe { uw::_Unwind_FindEnclosingFunction(ip) } - }; - -- if cx.idx < cx.frames.len() { -- cx.frames[cx.idx] = Frame { -- symbol_addr: symaddr as *mut u8, -- exact_position: ip as *mut u8, -- inline_context: 0, -- }; -- cx.idx += 1; -- } -+ cx.frames[cx.idx] = Frame { -+ symbol_addr: symaddr as *mut u8, -+ exact_position: ip as *mut u8, -+ inline_context: 0, -+ }; -+ cx.idx += 1; - - uw::_URC_NO_REASON - } -diff --git a/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs b/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs -index 1b92fc0e6ad0..6e8415686792 100644 ---- a/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs -+++ b/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs -@@ -68,6 +68,10 @@ pub fn unwind_backtrace(frames: &mut [Frame]) - extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - arg: *mut libc::c_void) -> uw::_Unwind_Reason_Code { - let cx = unsafe { &mut *(arg as *mut Context) }; -+ if cx.idx >= cx.frames.len() { -+ return uw::_URC_NORMAL_STOP; -+ } -+ - let mut ip_before_insn = 0; - let mut ip = unsafe { - uw::_Unwind_GetIPInfo(ctx, &mut ip_before_insn) as *mut libc::c_void -@@ -94,14 +98,12 @@ extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - unsafe { uw::_Unwind_FindEnclosingFunction(ip) } - }; - -- if cx.idx < cx.frames.len() { -- cx.frames[cx.idx] = Frame { -- symbol_addr: symaddr as *mut u8, -- exact_position: ip as *mut u8, -- inline_context: 0, -- }; -- cx.idx += 1; -- } -+ cx.frames[cx.idx] = Frame { -+ symbol_addr: symaddr as *mut u8, -+ exact_position: ip as *mut u8, -+ inline_context: 0, -+ }; -+ cx.idx += 1; - - uw::_URC_NO_REASON - } --- -2.17.1 - diff --git a/rust-52876-const-endianess.patch b/rust-52876-const-endianess.patch deleted file mode 100644 index 1e844e8..0000000 --- a/rust-52876-const-endianess.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 1ea2765918d1212a07e1359537470c477d82a681 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Mon, 30 Jul 2018 13:08:56 -0700 -Subject: [PATCH] run-pass/const-endianness: negate before to_le() - -`const LE_I128` needs parentheses to negate the value *before* calling -`to_le()`, otherwise it doesn't match the operations performed in the -black-boxed part of the test. This only makes a tangible difference on -big-endian targets. ---- - src/test/run-pass/const-endianess.rs | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/test/run-pass/const-endianess.rs b/src/test/run-pass/const-endianess.rs -index fa34b49210a6..95c738d3ec49 100644 ---- a/src/test/run-pass/const-endianess.rs -+++ b/src/test/run-pass/const-endianess.rs -@@ -25,7 +25,7 @@ fn main() { - #[cfg(not(target_arch = "asmjs"))] - { - const BE_U128: u128 = 999999u128.to_be(); -- const LE_I128: i128 = -999999i128.to_le(); -+ const LE_I128: i128 = (-999999i128).to_le(); - assert_eq!(BE_U128, b(999999u128).to_be()); - assert_eq!(LE_I128, b(-999999i128).to_le()); - } diff --git a/rust.spec b/rust.spec index 0c1508d..884fe71 100644 --- a/rust.spec +++ b/rust.spec @@ -9,10 +9,10 @@ # e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24 # or nightly wants some beta-YYYY-MM-DD # Note that cargo matches the program version here, not its crate version. -%global bootstrap_rust 1.28.0 -%global bootstrap_cargo 1.28.0 +%global bootstrap_rust 1.29.2 +%global bootstrap_cargo 1.29.0 %global bootstrap_channel %{bootstrap_rust} -%global bootstrap_date 2018-08-02 +%global bootstrap_date 2018-10-12 # Only the specified arches will use bootstrap binaries. #global bootstrap_arches %%{rust_arches} @@ -55,15 +55,15 @@ # Some sub-packages are versioned independently of the rust compiler and runtime itself. # Also beware that if any of these are not changed in a version bump, then the release # number should still increase, not be reset to 1! -%global rustc_version 1.29.2 -%global cargo_version 1.29.0 -%global rustfmt_version 0.99.1 -%global rls_version 0.130.0 +%global rustc_version 1.30.0 +%global cargo_version 1.30.0 +%global rustfmt_version 0.99.4 +%global rls_version 0.130.5 %global clippy_version 0.0.212 Name: rust Version: %{rustc_version} -Release: 5%{?dist} +Release: 6%{?dist} Summary: The Rust Programming Language License: (ASL 2.0 or MIT) and (BSD and MIT) # ^ written as: (rust itself) and (bundled libraries) @@ -77,15 +77,6 @@ ExclusiveArch: %{rust_arches} %endif Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz -# https://github.com/rust-lang/rust/pull/52876 -Patch1: rust-52876-const-endianess.patch - -# https://github.com/rust-lang/rust/pull/53436 -Patch2: 0001-std-stop-backtracing-when-the-frames-are-full.patch - -# https://github.com/rust-lang/rust/pull/53437 -Patch3: 0001-Set-more-llvm-function-attributes-for-__rust_try.patch - # Get the Rust triple for any arch. %{lua: function rust_triple(arch) local abi = "gnu" @@ -409,10 +400,6 @@ test -f '%{local_rust_root}/bin/rustc' %setup -q -n %{rustc_package} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 - %if "%{python}" == "python3" sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure %endif @@ -427,15 +414,15 @@ rm -rf src/llvm/ # We never enable emscripten. rm -rf src/llvm-emscripten/ +# We never enable other LLVM tools. +rm -rf src/tools/clang +rm -rf src/tools/lld +rm -rf src/tools/lldb + # extract bundled licenses for packaging sed -e '/*\//q' src/libbacktrace/backtrace.h \ >src/libbacktrace/LICENSE-libbacktrace -# This tests a problem of exponential growth, which seems to be less-reliably -# fixed when running on older LLVM and/or some arches. Just skip it for now. -sed -i.ignore -e '1i // ignore-test may still be exponential...' \ - src/test/run-pass/issue-41696.rs - %if %{with bundled_llvm} && 0%{?epel} mkdir -p cmake-bin ln -s /usr/bin/cmake3 cmake-bin/cmake @@ -695,6 +682,9 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %changelog +* Thu Oct 25 2018 Josh Stone - 1.30.0-6 +- Update to 1.30.0. + * Mon Oct 22 2018 Josh Stone - 1.29.2-5 - Rebuild without bootstrap binaries. diff --git a/sources b/sources index 02e86f0..53d5f2e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rustc-1.29.2-src.tar.xz) = d8fa9501764348ace8f60f2069bcd016925abe56c8bbc2b87fb52ff796e4bc7284c1fccbb1671416437bb82fde7d9240eeae875d6099914e27e75cfe050e2d38 +SHA512 (rustc-1.30.0-src.tar.xz) = f5f2f8379b43f68a9c1acd476a41fab2fb3a9458146fbdb21dfb2f5d1ab86905933b9541e866f5fbb520dafe349e0ab87bc6c9466774c4616007d547e6aeaa59 diff --git a/sources-bootstrap b/sources-bootstrap index 5a20943..7ed4cf5 100644 --- a/sources-bootstrap +++ b/sources-bootstrap @@ -1,8 +1,8 @@ -SHA512 (rustc-1.29.2-src.tar.xz) = d8fa9501764348ace8f60f2069bcd016925abe56c8bbc2b87fb52ff796e4bc7284c1fccbb1671416437bb82fde7d9240eeae875d6099914e27e75cfe050e2d38 -SHA512 (rust-1.28.0-aarch64-unknown-linux-gnu.tar.xz) = 8d9acbc90ddaa1e0de0234a21798b19b5365ea371a12f9a143c6ebacbb48f57344da6e827e867513be502bce2801de27a0dbbacdf8618c653aeb58026b6c469c -SHA512 (rust-1.28.0-armv7-unknown-linux-gnueabihf.tar.xz) = 9142110e0c24657aca41468648d9364c2e6fce60b08ca7113c944a53701fc5a309481a8fdd5845b229bcc750ccad63af561d452c3a3a0727ab1ca7a461b06d3d -SHA512 (rust-1.28.0-i686-unknown-linux-gnu.tar.xz) = ffdfab46db14f07354b553e02fdb9dc6602c2c52b78d8f17c499f4ddb1e257aa53479df836eb3f06a2548d34296b0277cdb6b4c6f3cec57265823df22752c135 -SHA512 (rust-1.28.0-powerpc64le-unknown-linux-gnu.tar.xz) = bdbdf3a64a184dd4510a113bbe20c058f42e35321cd2fb7c938487dfc9b1f04320b523ea215dd92a23c2537292eeb064097119e2097d6e24a1c4e237d9d4fc8b -SHA512 (rust-1.28.0-powerpc64-unknown-linux-gnu.tar.xz) = 1bd2c5069beecb765a2305715070e4052d5a66dafe50a5b53bea2c2082b22b3f9a2d2b9fb059c93476f88ee5e602effc18b807e5c964610e8255a3a945931f51 -SHA512 (rust-1.28.0-s390x-unknown-linux-gnu.tar.xz) = 5ffb44d16c990b8a6377b64e5042a3b2e709bcc7187013dbe4ab3c9d8cd781b6bf07b0d374340e2ccabe9f84fd4731b606cb05a10a739ebcfa49652518a2aa46 -SHA512 (rust-1.28.0-x86_64-unknown-linux-gnu.tar.xz) = 4f427c11a9cd22aedd01bd7ed5bee2ba5e00a27db25af4f596cf8627d88eff8e72625eb83729d2e6c6780aaffd44c0e7065a1c8fa22f4899349b72c726cf6a5f +SHA512 (rustc-1.30.0-src.tar.xz) = f5f2f8379b43f68a9c1acd476a41fab2fb3a9458146fbdb21dfb2f5d1ab86905933b9541e866f5fbb520dafe349e0ab87bc6c9466774c4616007d547e6aeaa59 +SHA512 (rust-1.29.2-aarch64-unknown-linux-gnu.tar.xz) = f871359a3b1ac54fb237921204d98ef4fac06830e9835849538397c27d40283662c0f6ab3f6eafe0e9ef63182a460e26d615111055430ece0fe94ddf7ad03914 +SHA512 (rust-1.29.2-armv7-unknown-linux-gnueabihf.tar.xz) = bff1220781eca904a93d2cefafed3587e3f76e1dc04fbef09a0281295b6c06491c5fa327830c430d31df80eb7a3e64eac7f45739bc118e3626854f96dce246e2 +SHA512 (rust-1.29.2-i686-unknown-linux-gnu.tar.xz) = faac22aec54d0754ff991f2a34ed7b8bfefa8dc9720d247eec1c6b671bbc701907146a796699591e4a677a0f378b9d96bfea5b33452f05dd876c668525f9f33d +SHA512 (rust-1.29.2-powerpc64le-unknown-linux-gnu.tar.xz) = b9181da601a467f46713f2f438fc7ad69c46fc310e62a8d45f665744c8578491d832b8624ff454c19c94f1694fa406846a82289250241030a70b2cb4b88913d1 +SHA512 (rust-1.29.2-powerpc64-unknown-linux-gnu.tar.xz) = 1af0b55bc62d7641d33e2d33aadaf474298d3284cb2d914be0240eae54e20f464513db4b04f7518385dc5135498c58ec18e0d4cc6341c9e165847536479f44dc +SHA512 (rust-1.29.2-s390x-unknown-linux-gnu.tar.xz) = f76a030257edbdd993d7a4e83da895c8b4749904fb2252a125b3e4ef4331a1cb2c389ec54a372bea413718e3dad987e4b17eb29d301c29ba330222502e6b9b75 +SHA512 (rust-1.29.2-x86_64-unknown-linux-gnu.tar.xz) = 8bc05942a72b186ea1765831bea6921f734e2dd58790a8e427a6d63a2db0d9064937d3198ca3febffeba73b1cc3bef716155ef6cb32127ddeef29ac884cde4b8