From b089bf18c99eb6eec7c105a97eb4cfc4e001d08f Mon Sep 17 00:00:00 2001 From: its-pointless Date: Wed, 24 Apr 2019 08:39:40 +1000 Subject: [PATCH] rust: Update from 1.33.0 to 1.34.1 --- ...eprecation-fixes-from-commit-b7f030e.patch | 57 --- packages/rust/build.sh | 14 +- packages/rust/config.toml | 2 +- packages/rust/llvm-8.patch | 399 ------------------ scripts/build/setup/termux_setup_rust.sh | 6 +- 5 files changed, 11 insertions(+), 467 deletions(-) delete mode 100644 packages/rust/0001-Backport-deprecation-fixes-from-commit-b7f030e.patch delete mode 100644 packages/rust/llvm-8.patch diff --git a/packages/rust/0001-Backport-deprecation-fixes-from-commit-b7f030e.patch b/packages/rust/0001-Backport-deprecation-fixes-from-commit-b7f030e.patch deleted file mode 100644 index 6e51ef37d..000000000 --- a/packages/rust/0001-Backport-deprecation-fixes-from-commit-b7f030e.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 55030c7543d8e877ec7a6b577a51422c38f01259 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Fri, 1 Mar 2019 09:27:45 -0800 -Subject: [PATCH] Backport deprecation fixes from commit b7f030e - ---- - src/tools/linkchecker/main.rs | 6 +++--- - src/tools/tidy/src/features.rs | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/tools/linkchecker/main.rs b/src/tools/linkchecker/main.rs -index 59662be349dc..2cf0fcfd34cd 100644 ---- a/src/tools/linkchecker/main.rs -+++ b/src/tools/linkchecker/main.rs -@@ -78,7 +78,7 @@ impl FileEntry { - fn parse_ids(&mut self, file: &Path, contents: &str, errors: &mut bool) { - if self.ids.is_empty() { - with_attrs_in_source(contents, " id", |fragment, i, _| { -- let frag = fragment.trim_left_matches("#").to_owned(); -+ let frag = fragment.trim_start_matches("#").to_owned(); - let encoded = small_url_encode(&frag); - if !self.ids.insert(frag) { - *errors = true; -@@ -343,7 +343,7 @@ fn with_attrs_in_source(contents: &str, attr: &str, - Some(i) => i, - None => continue, - }; -- if rest[..pos_equals].trim_left_matches(" ") != "" { -+ if rest[..pos_equals].trim_start_matches(" ") != "" { - continue; - } - -@@ -355,7 +355,7 @@ fn with_attrs_in_source(contents: &str, attr: &str, - }; - let quote_delim = rest.as_bytes()[pos_quote] as char; - -- if rest[..pos_quote].trim_left_matches(" ") != "" { -+ if rest[..pos_quote].trim_start_matches(" ") != "" { - continue; - } - let rest = &rest[pos_quote + 1..]; -diff --git a/src/tools/tidy/src/features.rs b/src/tools/tidy/src/features.rs -index 2435a0cfd4e3..bf2cfbf32fc7 100644 ---- a/src/tools/tidy/src/features.rs -+++ b/src/tools/tidy/src/features.rs -@@ -188,7 +188,7 @@ pub fn collect_lang_features(base_src_path: &Path, bad: &mut bool) -> Features { - } - - let mut parts = line.split(','); -- let level = match parts.next().map(|l| l.trim().trim_left_matches('(')) { -+ let level = match parts.next().map(|l| l.trim().trim_start_matches('(')) { - Some("active") => Status::Unstable, - Some("removed") => Status::Removed, - Some("accepted") => Status::Stable, --- -2.20.1 - diff --git a/packages/rust/build.sh b/packages/rust/build.sh index c3190c287..e85c62822 100644 --- a/packages/rust/build.sh +++ b/packages/rust/build.sh @@ -2,9 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://www.rust-lang.org/ TERMUX_PKG_DESCRIPTION="Systems programming language focused on safety, speed and concurrency" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="Kevin Cotugno @kcotugno" -TERMUX_PKG_VERSION=1.33.0 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=f4b1a72f1a29b23dcc9d7be5f60878f0434560513273906aa93dcd5c0de39b71 +TERMUX_PKG_VERSION=1.34.1 +TERMUX_PKG_SHA256=e0efb1e6aba0d4900de57bd2db64e32e7c5b440a95a675d5303839c9a2c3328f TERMUX_PKG_SRCURL=https://static.rust-lang.org/dist/rustc-$TERMUX_PKG_VERSION-src.tar.xz TERMUX_PKG_DEPENDS="clang, openssl, lld, zlib" @@ -14,13 +13,11 @@ termux_step_configure() { # it breaks building rust tools without doing this because it tries to find # ../lib from bin location: - rustup update # this is about to get ugly but i have to make sure a rustc in a proper bin lib # configuration is used otherwise it fails a long time into the build... # like 30 to 40 + minutes ... so lets get it right - export PATH=$HOME/.rustup/toolchains/1.32.0-x86_64-unknown-linux-gnu/bin:$HOME/.rustup/toolchains/1.33.0-x86_64-unknown-linux-gnu/bin:HOME/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin:$PATH - + export PATH=$HOME/.rustup/toolchains/1.34.0-x86_64-unknown-linux-gnu/bin:$PATH local RUSTC=$(which rustc) local CARGO=$(which cargo) @@ -33,8 +30,7 @@ termux_step_configure() { > config.toml local env_host=$(printf $CARGO_TARGET_NAME | tr a-z A-Z | sed s/-/_/g) - - export LD_LIBRARY_PATH=$TERMUX_PKG_BUILDDIR/build/x86_64-unknown-linux-gnu/llvm/lib + export LD_LIBRARY_PATH=$TERMUX_PKG_BUILDDIR/build/x86_64-unknown-linux-gnu/stage2/lib export ${env_host}_OPENSSL_DIR=$TERMUX_PREFIX export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR=/usr/include @@ -42,7 +38,7 @@ termux_step_configure() { # for backtrace-sys export CC_x86_64_unknown_linux_gnu=gcc export CFLAGS_x86_64_unknown_linux_gnu="-O2" - unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG AR + unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG AR RANLIB } termux_step_make() { diff --git a/packages/rust/config.toml b/packages/rust/config.toml index bc6ebac57..f72b0dc6c 100644 --- a/packages/rust/config.toml +++ b/packages/rust/config.toml @@ -31,7 +31,7 @@ channel = "stable" rpath = false [target.x86_64-unknown-linux-gnu] -llvm-config = "/usr/bin/llvm-config-7" +llvm-config = "/usr/bin/llvm-config-8" [target.@triple@] diff --git a/packages/rust/llvm-8.patch b/packages/rust/llvm-8.patch deleted file mode 100644 index 6382e4e7e..000000000 --- a/packages/rust/llvm-8.patch +++ /dev/null @@ -1,399 +0,0 @@ ---- a/src/rustllvm/PassWrapper.cpp -+++ b/src/rustllvm/PassWrapper.cpp -@@ -789,7 +789,7 @@ struct LLVMRustThinLTOData { - StringMap ModuleToDefinedGVSummaries; - - #if LLVM_VERSION_GE(7, 0) -- LLVMRustThinLTOData() : Index(/* isPerformingAnalysis = */ false) {} -+ LLVMRustThinLTOData() : Index(/* HaveGVs = */ false) {} - #endif - }; - -@@ -865,7 +865,12 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules, - auto deadIsPrevailing = [&](GlobalValue::GUID G) { - return PrevailingType::Unknown; - }; -+#if LLVM_VERSION_GE(8, 0) -+ computeDeadSymbolsWithConstProp(Ret->Index, Ret->GUIDPreservedSymbols, -+ deadIsPrevailing, /* ImportEnabled = */ true); -+#else - computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing); -+#endif - #else - computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols); - #endif -diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp -index 9d3e6f93b0c1..7905e9f0f237 100644 ---- a/src/rustllvm/RustWrapper.cpp -+++ b/src/rustllvm/RustWrapper.cpp -@@ -294,7 +294,7 @@ extern "C" void LLVMRustSetHasUnsafeAlgebra(LLVMValueRef V) { - extern "C" LLVMValueRef - LLVMRustBuildAtomicLoad(LLVMBuilderRef B, LLVMValueRef Source, const char *Name, - LLVMAtomicOrdering Order) { -- LoadInst *LI = new LoadInst(unwrap(Source), 0); -+ LoadInst *LI = new LoadInst(unwrap(Source)); - LI->setAtomic(fromRust(Order)); - return wrap(unwrap(B)->Insert(LI, Name)); - } -@@ -511,6 +511,71 @@ static DINode::DIFlags fromRust(LLVMRustDIFlags Flags) { - return Result; - } - -+// These values **must** match debuginfo::DISPFlags! They also *happen* -+// to match LLVM, but that isn't required as we do giant sets of -+// matching below. The value shouldn't be directly passed to LLVM. -+enum class LLVMRustDISPFlags : uint32_t { -+ SPFlagZero = 0, -+ SPFlagVirtual = 1, -+ SPFlagPureVirtual = 2, -+ SPFlagLocalToUnit = (1 << 2), -+ SPFlagDefinition = (1 << 3), -+ SPFlagOptimized = (1 << 4), -+ // Do not add values that are not supported by the minimum LLVM -+ // version we support! see llvm/include/llvm/IR/DebugInfoFlags.def -+ // (In LLVM < 8, createFunction supported these as separate bool arguments.) -+}; -+ -+inline LLVMRustDISPFlags operator&(LLVMRustDISPFlags A, LLVMRustDISPFlags B) { -+ return static_cast(static_cast(A) & -+ static_cast(B)); -+} -+ -+inline LLVMRustDISPFlags operator|(LLVMRustDISPFlags A, LLVMRustDISPFlags B) { -+ return static_cast(static_cast(A) | -+ static_cast(B)); -+} -+ -+inline LLVMRustDISPFlags &operator|=(LLVMRustDISPFlags &A, LLVMRustDISPFlags B) { -+ return A = A | B; -+} -+ -+inline bool isSet(LLVMRustDISPFlags F) { return F != LLVMRustDISPFlags::SPFlagZero; } -+ -+inline LLVMRustDISPFlags virtuality(LLVMRustDISPFlags F) { -+ return static_cast(static_cast(F) & 0x3); -+} -+ -+#if LLVM_VERSION_GE(8, 0) -+static DISubprogram::DISPFlags fromRust(LLVMRustDISPFlags SPFlags) { -+ DISubprogram::DISPFlags Result = DISubprogram::DISPFlags::SPFlagZero; -+ -+ switch (virtuality(SPFlags)) { -+ case LLVMRustDISPFlags::SPFlagVirtual: -+ Result |= DISubprogram::DISPFlags::SPFlagVirtual; -+ break; -+ case LLVMRustDISPFlags::SPFlagPureVirtual: -+ Result |= DISubprogram::DISPFlags::SPFlagPureVirtual; -+ break; -+ default: -+ // The rest are handled below -+ break; -+ } -+ -+ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagLocalToUnit)) { -+ Result |= DISubprogram::DISPFlags::SPFlagLocalToUnit; -+ } -+ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagDefinition)) { -+ Result |= DISubprogram::DISPFlags::SPFlagDefinition; -+ } -+ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagOptimized)) { -+ Result |= DISubprogram::DISPFlags::SPFlagOptimized; -+ } -+ -+ return Result; -+} -+#endif -+ - extern "C" uint32_t LLVMRustDebugMetadataVersion() { - return DEBUG_METADATA_VERSION; - } -@@ -575,16 +640,26 @@ LLVMRustDIBuilderCreateSubroutineType(LLVMRustDIBuilderRef Builder, - extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateFunction( - LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, - const char *LinkageName, LLVMMetadataRef File, unsigned LineNo, -- LLVMMetadataRef Ty, bool IsLocalToUnit, bool IsDefinition, -- unsigned ScopeLine, LLVMRustDIFlags Flags, bool IsOptimized, -- LLVMValueRef Fn, LLVMMetadataRef TParam, LLVMMetadataRef Decl) { -+ LLVMMetadataRef Ty, unsigned ScopeLine, LLVMRustDIFlags Flags, -+ LLVMRustDISPFlags SPFlags, LLVMValueRef Fn, LLVMMetadataRef TParam, -+ LLVMMetadataRef Decl) { - DITemplateParameterArray TParams = - DITemplateParameterArray(unwrap(TParam)); -+#if LLVM_VERSION_GE(8, 0) -+ DISubprogram *Sub = Builder->createFunction( -+ unwrapDI(Scope), Name, LinkageName, unwrapDI(File), -+ LineNo, unwrapDI(Ty), ScopeLine, fromRust(Flags), -+ fromRust(SPFlags), TParams, unwrapDIPtr(Decl)); -+#else -+ bool IsLocalToUnit = isSet(SPFlags & LLVMRustDISPFlags::SPFlagLocalToUnit); -+ bool IsDefinition = isSet(SPFlags & LLVMRustDISPFlags::SPFlagDefinition); -+ bool IsOptimized = isSet(SPFlags & LLVMRustDISPFlags::SPFlagOptimized); - DISubprogram *Sub = Builder->createFunction( - unwrapDI(Scope), Name, LinkageName, unwrapDI(File), - LineNo, unwrapDI(Ty), IsLocalToUnit, IsDefinition, - ScopeLine, fromRust(Flags), IsOptimized, TParams, - unwrapDIPtr(Decl)); -+#endif - unwrap(Fn)->setSubprogram(Sub); - return wrap(Sub); - } -@@ -773,14 +848,14 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerationType( - LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, - LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits, - uint32_t AlignInBits, LLVMMetadataRef Elements, -- LLVMMetadataRef ClassTy, bool IsFixed) { -+ LLVMMetadataRef ClassTy, bool IsScoped) { - #if LLVM_VERSION_GE(7, 0) - return wrap(Builder->createEnumerationType( - unwrapDI(Scope), Name, unwrapDI(File), LineNumber, - SizeInBits, AlignInBits, DINodeArray(unwrapDI(Elements)), -- unwrapDI(ClassTy), "", IsFixed)); -+ unwrapDI(ClassTy), "", IsScoped)); - #else -- // Ignore IsFixed on older LLVM. -+ // Ignore IsScoped on older LLVM. - return wrap(Builder->createEnumerationType( - unwrapDI(Scope), Name, unwrapDI(File), LineNumber, - SizeInBits, AlignInBits, DINodeArray(unwrapDI(Elements)), -@@ -920,7 +995,11 @@ extern "C" void LLVMRustUnpackOptimizationDiagnostic( - if (loc.isValid()) { - *Line = loc.getLine(); - *Column = loc.getColumn(); -+#if LLVM_VERSION_GE(8, 0) -+ FilenameOS << loc.getAbsolutePath(); -+#else - FilenameOS << loc.getFilename(); -+#endif - } - - RawRustStringOstream MessageOS(MessageOut); -diff --git a/src/rustllvm/llvm-rebuild-trigger b/src/rustllvm/llvm-rebuild-trigger -index a268838de451..9ee1bceb632b 100644 ---- ./src/librustc_codegen_llvm/llvm/ffi.rs -+++ ./src/librustc_codegen_llvm/llvm/ffi.rs -@@ -2,7 +2,7 @@ use super::debuginfo::{ - DIBuilder, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType, - DIBasicType, DIDerivedType, DICompositeType, DIScope, DIVariable, - DIGlobalVariableExpression, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator, -- DINameSpace, DIFlags, -+ DINameSpace, DIFlags, DISPFlags, - }; - - use libc::{c_uint, c_int, size_t, c_char}; -@@ -591,6 +591,20 @@ pub mod debuginfo { - const FlagMainSubprogram = (1 << 21); - } - } -+ -+ // These values **must** match with LLVMRustDISPFlags!! -+ bitflags! { -+ #[repr(C)] -+ #[derive(Default)] -+ pub struct DISPFlags: ::libc::uint32_t { -+ const SPFlagZero = 0; -+ const SPFlagVirtual = 1; -+ const SPFlagPureVirtual = 2; -+ const SPFlagLocalToUnit = (1 << 2); -+ const SPFlagDefinition = (1 << 3); -+ const SPFlagOptimized = (1 << 4); -+ } -+ } - } - - extern { pub type ModuleBuffer; } -@@ -1387,11 +1401,9 @@ extern "C" { - File: &'a DIFile, - LineNo: c_uint, - Ty: &'a DIType, -- isLocalToUnit: bool, -- isDefinition: bool, - ScopeLine: c_uint, - Flags: DIFlags, -- isOptimized: bool, -+ SPFlags: DISPFlags, - Fn: &'a Value, - TParam: &'a DIArray, - Decl: Option<&'a DIDescriptor>) -@@ -1529,7 +1541,7 @@ extern "C" { - AlignInBits: u32, - Elements: &'a DIArray, - ClassType: &'a DIType, -- IsFixed: bool) -+ IsScoped: bool) - -> &'a DIType; - - pub fn LLVMRustDIBuilderCreateUnionType(Builder: &DIBuilder<'a>, ---- a/src/librustc_codegen_llvm/debuginfo/mod.rs -+++ ./src/librustc_codegen_llvm/debuginfo/mod.rs -@@ -12,7 +12,7 @@ use self::source_loc::InternalDebugLocation::{self, UnknownLocation}; - - use llvm; - use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags, -- DILexicalBlock}; -+ DISPFlags, DILexicalBlock}; - use rustc::hir::CodegenFnAttrFlags; - use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE}; - use rustc::ty::subst::{Substs, UnpackedKind}; -@@ -283,7 +283,6 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { - let linkage_name = mangled_name_of_instance(self, instance); - - let scope_line = span_start(self, span).line; -- let is_local_to_unit = is_node_local_to_unit(self, def_id); - - let function_name = CString::new(name).unwrap(); - let linkage_name = SmallCStr::new(&linkage_name.as_str()); -@@ -300,6 +299,14 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { - flags |= DIFlags::FlagNoReturn; - } - -+ let mut spflags = DISPFlags::SPFlagDefinition; -+ if is_node_local_to_unit(self, def_id) { -+ spflags |= DISPFlags::SPFlagLocalToUnit; -+ } -+ if self.sess().opts.optimize != config::OptLevel::No { -+ spflags |= DISPFlags::SPFlagOptimized; -+ } -+ - let fn_metadata = unsafe { - llvm::LLVMRustDIBuilderCreateFunction( - DIB(self), -@@ -309,11 +316,9 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { - file_metadata, - loc.line as c_uint, - function_type_metadata, -- is_local_to_unit, -- true, - scope_line as c_uint, - flags, -- self.sess().opts.optimize != config::OptLevel::No, -+ spflags, - llfn, - template_parameters, - None) -diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs -index 9f63038c3623..3a7864cb7a5a 100644 ---- a/src/librustc_codegen_llvm/debuginfo/metadata.rs -+++ ./src/librustc_codegen_llvm/debuginfo/metadata.rs -@@ -13,7 +13,7 @@ use value::Value; - - use llvm; - use llvm::debuginfo::{DIArray, DIType, DIFile, DIScope, DIDescriptor, -- DICompositeType, DILexicalBlock, DIFlags}; -+ DICompositeType, DILexicalBlock, DIFlags, DebugEmissionKind}; - use llvm_util; - - use rustc_data_structures::stable_hasher::{HashStable, StableHasher}; -@@ -846,6 +846,7 @@ pub fn compile_unit_metadata(tcx: TyCtxt, - let producer = CString::new(producer).unwrap(); - let flags = "\0"; - let split_name = "\0"; -+ let kind = DebugEmissionKind::from_generic(tcx.sess.opts.debuginfo); - - unsafe { - let file_metadata = llvm::LLVMRustDIBuilderCreateFile( -@@ -859,7 +860,8 @@ pub fn compile_unit_metadata(tcx: TyCtxt, - tcx.sess.opts.optimize != config::OptLevel::No, - flags.as_ptr() as *const _, - 0, -- split_name.as_ptr() as *const _); -+ split_name.as_ptr() as *const _, -+ kind); - - if tcx.sess.opts.debugging_opts.profile { - let cu_desc_metadata = llvm::LLVMRustMetadataAsValue(debug_context.llcontext, -diff --git a/src/librustc_codegen_llvm/llvm/ffi.rs b/src/librustc_codegen_llvm/llvm/ffi.rs -index 853c1ff0047e..199c1220a2c4 100644 ---- a/src/librustc_codegen_llvm/llvm/ffi.rs -+++ ./src/librustc_codegen_llvm/llvm/ffi.rs -@@ -2,7 +2,7 @@ use super::debuginfo::{ - DIBuilder, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType, - DIBasicType, DIDerivedType, DICompositeType, DIScope, DIVariable, - DIGlobalVariableExpression, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator, -- DINameSpace, DIFlags, DISPFlags, -+ DINameSpace, DIFlags, DISPFlags, DebugEmissionKind, - }; - - use libc::{c_uint, c_int, size_t, c_char}; -@@ -605,6 +605,26 @@ pub mod debuginfo { - const SPFlagOptimized = (1 << 4); - } - } -+ -+ /// LLVMRustDebugEmissionKind -+ #[derive(Copy, Clone)] -+ #[repr(C)] -+ pub enum DebugEmissionKind { -+ NoDebug, -+ FullDebug, -+ LineTablesOnly, -+ } -+ -+ impl DebugEmissionKind { -+ pub fn from_generic(kind: rustc::session::config::DebugInfo) -> Self { -+ use rustc::session::config::DebugInfo; -+ match kind { -+ DebugInfo::None => DebugEmissionKind::NoDebug, -+ DebugInfo::Limited => DebugEmissionKind::LineTablesOnly, -+ DebugInfo::Full => DebugEmissionKind::FullDebug, -+ } -+ } -+ } - } - - extern { pub type ModuleBuffer; } -@@ -1381,7 +1401,8 @@ extern "C" { - isOptimized: bool, - Flags: *const c_char, - RuntimeVer: c_uint, -- SplitName: *const c_char) -+ SplitName: *const c_char, -+ kind: DebugEmissionKind) - -> &'a DIDescriptor; - - pub fn LLVMRustDIBuilderCreateFile(Builder: &DIBuilder<'a>, -diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp -index 7905e9f0f237..e973318057c6 100644 ---- a/src/rustllvm/RustWrapper.cpp -+++ ./src/rustllvm/RustWrapper.cpp -@@ -576,6 +576,25 @@ static DISubprogram::DISPFlags fromRust(LLVMRustDISPFlags SPFlags) { - } - #endif - -+enum class LLVMRustDebugEmissionKind { -+ NoDebug, -+ FullDebug, -+ LineTablesOnly, -+}; -+ -+static DICompileUnit::DebugEmissionKind fromRust(LLVMRustDebugEmissionKind Kind) { -+ switch (Kind) { -+ case LLVMRustDebugEmissionKind::NoDebug: -+ return DICompileUnit::DebugEmissionKind::NoDebug; -+ case LLVMRustDebugEmissionKind::FullDebug: -+ return DICompileUnit::DebugEmissionKind::FullDebug; -+ case LLVMRustDebugEmissionKind::LineTablesOnly: -+ return DICompileUnit::DebugEmissionKind::LineTablesOnly; -+ default: -+ report_fatal_error("bad DebugEmissionKind."); -+ } -+} -+ - extern "C" uint32_t LLVMRustDebugMetadataVersion() { - return DEBUG_METADATA_VERSION; - } -@@ -616,11 +635,13 @@ extern "C" void LLVMRustDIBuilderFinalize(LLVMRustDIBuilderRef Builder) { - extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateCompileUnit( - LLVMRustDIBuilderRef Builder, unsigned Lang, LLVMMetadataRef FileRef, - const char *Producer, bool isOptimized, const char *Flags, -- unsigned RuntimeVer, const char *SplitName) { -+ unsigned RuntimeVer, const char *SplitName, -+ LLVMRustDebugEmissionKind Kind) { - auto *File = unwrapDI(FileRef); - - return wrap(Builder->createCompileUnit(Lang, File, Producer, isOptimized, -- Flags, RuntimeVer, SplitName)); -+ Flags, RuntimeVer, SplitName, -+ fromRust(Kind))); - } - - extern "C" LLVMMetadataRef diff --git a/scripts/build/setup/termux_setup_rust.sh b/scripts/build/setup/termux_setup_rust.sh index 67ac5f537..1449ccab1 100644 --- a/scripts/build/setup/termux_setup_rust.sh +++ b/scripts/build/setup/termux_setup_rust.sh @@ -10,10 +10,14 @@ termux_setup_rust() { export $ENV_NAME=$CC curl https://sh.rustup.rs -sSf > $TERMUX_PKG_TMPDIR/rustup.sh - sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain 1.34.0 + + local _TOOLCHAIN_VERSION=1.34.1 + + sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain $_TOOLCHAIN_VERSION export PATH=$HOME/.cargo/bin:$PATH export RUSTFLAGS="-C link-arg=-Wl,-rpath=$TERMUX_PREFIX/lib -C link-arg=-Wl,--enable-new-dtags" + rustup install $_TOOLCHAIN_VERSION-x86_64-unknown-linux-gnu rustup target add $CARGO_TARGET_NAME }