diff --git a/.gitignore b/.gitignore index 952e805..ecb5f6c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ SOURCES/rustc-1.66.1-src.tar.xz SOURCES/wasi-libc-wasi-sdk-17.tar.gz /rustc-1.66.1-src.tar.xz /wasi-libc-wasi-sdk-17.tar.gz +/rustc-1.67.1-src.tar.xz +/wasi-libc-1dfe5c302d1c5ab621f7abf04620fae92700fd22.tar.gz diff --git a/0001-Fix-Async-Generator-ABI.patch b/0001-Fix-Async-Generator-ABI.patch new file mode 100644 index 0000000..34dd1bc --- /dev/null +++ b/0001-Fix-Async-Generator-ABI.patch @@ -0,0 +1,55 @@ +From ecf812777a260e35ec9cd0c7d9dbd17a3f5cf5f9 Mon Sep 17 00:00:00 2001 +From: Arpad Borsos +Date: Tue, 29 Nov 2022 23:17:08 +0100 +Subject: [PATCH] Fix Async Generator ABI + +This change was missed when making async generators implement `Future` directly. +It did not cause any problems in codegen so far, as `GeneratorState<(), Output>` +happens to have the same ABI as `Poll`. +--- + compiler/rustc_ty_utils/src/abi.rs | 22 +++++++++++++++++----- + 1 file changed, 17 insertions(+), 5 deletions(-) + +diff --git a/compiler/rustc_ty_utils/src/abi.rs b/compiler/rustc_ty_utils/src/abi.rs +index 73c7eb6992f0..d644cbccea11 100644 +--- a/compiler/rustc_ty_utils/src/abi.rs ++++ b/compiler/rustc_ty_utils/src/abi.rs +@@ -85,7 +85,7 @@ fn fn_sig_for_fn_abi<'tcx>( + bound_vars, + ) + } +- ty::Generator(_, substs, _) => { ++ ty::Generator(did, substs, _) => { + let sig = substs.as_generator().poly_sig(); + + let bound_vars = tcx.mk_bound_variable_kinds( +@@ -104,10 +104,22 @@ fn fn_sig_for_fn_abi<'tcx>( + let env_ty = tcx.mk_adt(pin_adt_ref, pin_substs); + + let sig = sig.skip_binder(); +- let state_did = tcx.require_lang_item(LangItem::GeneratorState, None); +- let state_adt_ref = tcx.adt_def(state_did); +- let state_substs = tcx.intern_substs(&[sig.yield_ty.into(), sig.return_ty.into()]); +- let ret_ty = tcx.mk_adt(state_adt_ref, state_substs); ++ // The `FnSig` and the `ret_ty` here is for a generators main ++ // `Generator::resume(...) -> GeneratorState` function in case we ++ // have an ordinary generator, or the `Future::poll(...) -> Poll` ++ // function in case this is a special generator backing an async construct. ++ let ret_ty = if tcx.generator_is_async(did) { ++ let state_did = tcx.require_lang_item(LangItem::Poll, None); ++ let state_adt_ref = tcx.adt_def(state_did); ++ let state_substs = tcx.intern_substs(&[sig.return_ty.into()]); ++ tcx.mk_adt(state_adt_ref, state_substs) ++ } else { ++ let state_did = tcx.require_lang_item(LangItem::GeneratorState, None); ++ let state_adt_ref = tcx.adt_def(state_did); ++ let state_substs = tcx.intern_substs(&[sig.yield_ty.into(), sig.return_ty.into()]); ++ tcx.mk_adt(state_adt_ref, state_substs) ++ }; ++ + ty::Binder::bind_with_vars( + tcx.mk_fn_sig( + [env_ty, sig.resume_ty].iter(), +-- +2.39.1 + diff --git a/0001-Improve-generating-Custom-entry-function.patch b/0001-Improve-generating-Custom-entry-function.patch deleted file mode 100644 index 77cb30e..0000000 --- a/0001-Improve-generating-Custom-entry-function.patch +++ /dev/null @@ -1,302 +0,0 @@ -From 9f0a8620bd7d325e6d42417b08daff3e55cb88f6 Mon Sep 17 00:00:00 2001 -From: Ayush Singh -Date: Sat, 5 Nov 2022 14:36:38 +0530 -Subject: [PATCH] Improve generating Custom entry function - -This commit is aimed at making compiler generated entry functions -(Basically just C `main` right now) more generic so other targets can do -similar things for custom entry. This was initially implemented as part -of https://github.com/rust-lang/rust/pull/100316. - -Currently, this moves the entry function name and Call convention to the -target spec. - -Signed-off-by: Ayush Singh ---- - compiler/rustc_codegen_llvm/src/abi.rs | 40 +++++++++++-------- - compiler/rustc_codegen_llvm/src/context.rs | 10 ++++- - compiler/rustc_codegen_llvm/src/declare.rs | 22 ++++++++++ - .../src/back/symbol_export.rs | 3 +- - compiler/rustc_target/src/abi/call/mod.rs | 28 +++++++++++++ - compiler/rustc_target/src/json.rs | 25 ++++++++++++ - compiler/rustc_target/src/spec/mod.rs | 27 +++++++++++++ - 7 files changed, 135 insertions(+), 20 deletions(-) - -diff --git a/compiler/rustc_codegen_llvm/src/abi.rs b/compiler/rustc_codegen_llvm/src/abi.rs -index d478efc863a9..a6fd2a7de6bd 100644 ---- a/compiler/rustc_codegen_llvm/src/abi.rs -+++ b/compiler/rustc_codegen_llvm/src/abi.rs -@@ -398,23 +398,7 @@ fn ptr_to_llvm_type(&self, cx: &CodegenCx<'ll, 'tcx>) -> &'ll Type { - } - - fn llvm_cconv(&self) -> llvm::CallConv { -- match self.conv { -- Conv::C | Conv::Rust | Conv::CCmseNonSecureCall => llvm::CCallConv, -- Conv::RustCold => llvm::ColdCallConv, -- Conv::AmdGpuKernel => llvm::AmdGpuKernel, -- Conv::AvrInterrupt => llvm::AvrInterrupt, -- Conv::AvrNonBlockingInterrupt => llvm::AvrNonBlockingInterrupt, -- Conv::ArmAapcs => llvm::ArmAapcsCallConv, -- Conv::Msp430Intr => llvm::Msp430Intr, -- Conv::PtxKernel => llvm::PtxKernel, -- Conv::X86Fastcall => llvm::X86FastcallCallConv, -- Conv::X86Intr => llvm::X86_Intr, -- Conv::X86Stdcall => llvm::X86StdcallCallConv, -- Conv::X86ThisCall => llvm::X86_ThisCall, -- Conv::X86VectorCall => llvm::X86_VectorCall, -- Conv::X86_64SysV => llvm::X86_64_SysV, -- Conv::X86_64Win64 => llvm::X86_64_Win64, -- } -+ self.conv.into() - } - - fn apply_attrs_llfn(&self, cx: &CodegenCx<'ll, 'tcx>, llfn: &'ll Value) { -@@ -596,3 +580,25 @@ fn get_param(&mut self, index: usize) -> Self::Value { - llvm::get_param(self.llfn(), index as c_uint) - } - } -+ -+impl From for llvm::CallConv { -+ fn from(conv: Conv) -> Self { -+ match conv { -+ Conv::C | Conv::Rust | Conv::CCmseNonSecureCall => llvm::CCallConv, -+ Conv::RustCold => llvm::ColdCallConv, -+ Conv::AmdGpuKernel => llvm::AmdGpuKernel, -+ Conv::AvrInterrupt => llvm::AvrInterrupt, -+ Conv::AvrNonBlockingInterrupt => llvm::AvrNonBlockingInterrupt, -+ Conv::ArmAapcs => llvm::ArmAapcsCallConv, -+ Conv::Msp430Intr => llvm::Msp430Intr, -+ Conv::PtxKernel => llvm::PtxKernel, -+ Conv::X86Fastcall => llvm::X86FastcallCallConv, -+ Conv::X86Intr => llvm::X86_Intr, -+ Conv::X86Stdcall => llvm::X86StdcallCallConv, -+ Conv::X86ThisCall => llvm::X86_ThisCall, -+ Conv::X86VectorCall => llvm::X86_VectorCall, -+ Conv::X86_64SysV => llvm::X86_64_SysV, -+ Conv::X86_64Win64 => llvm::X86_64_Win64, -+ } -+ } -+} -diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs -index 79ddfd884dfa..f3ef618fff54 100644 ---- a/compiler/rustc_codegen_llvm/src/context.rs -+++ b/compiler/rustc_codegen_llvm/src/context.rs -@@ -570,8 +570,14 @@ fn apply_target_cpu_attr(&self, llfn: &'ll Value) { - } - - fn declare_c_main(&self, fn_type: Self::Type) -> Option { -- if self.get_declared_value("main").is_none() { -- Some(self.declare_cfn("main", llvm::UnnamedAddr::Global, fn_type)) -+ let entry_name = self.sess().target.entry_name.as_ref(); -+ if self.get_declared_value(entry_name).is_none() { -+ Some(self.declare_entry_fn( -+ entry_name, -+ self.sess().target.entry_abi.into(), -+ llvm::UnnamedAddr::Global, -+ fn_type, -+ )) - } else { - // If the symbol already exists, it is an error: for example, the user wrote - // #[no_mangle] extern "C" fn main(..) {..} -diff --git a/compiler/rustc_codegen_llvm/src/declare.rs b/compiler/rustc_codegen_llvm/src/declare.rs -index f79ef11720df..dc21a02cec44 100644 ---- a/compiler/rustc_codegen_llvm/src/declare.rs -+++ b/compiler/rustc_codegen_llvm/src/declare.rs -@@ -90,6 +90,28 @@ pub fn declare_cfn( - declare_raw_fn(self, name, llvm::CCallConv, unnamed, visibility, fn_type) - } - -+ /// Declare an entry Function -+ /// -+ /// The ABI of this function can change depending on the target (although for now the same as -+ /// `declare_cfn`) -+ /// -+ /// If there’s a value with the same name already declared, the function will -+ /// update the declaration and return existing Value instead. -+ pub fn declare_entry_fn( -+ &self, -+ name: &str, -+ callconv: llvm::CallConv, -+ unnamed: llvm::UnnamedAddr, -+ fn_type: &'ll Type, -+ ) -> &'ll Value { -+ let visibility = if self.tcx.sess.target.default_hidden_visibility { -+ llvm::Visibility::Hidden -+ } else { -+ llvm::Visibility::Default -+ }; -+ declare_raw_fn(self, name, callconv, unnamed, visibility, fn_type) -+ } -+ - /// Declare a Rust function. - /// - /// If there’s a value with the same name already declared, the function will -diff --git a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs -index 752f6b1ef40c..22f534d909ab 100644 ---- a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs -+++ b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs -@@ -180,7 +180,8 @@ fn exported_symbols_provider_local<'tcx>( - .collect(); - - if tcx.entry_fn(()).is_some() { -- let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, "main")); -+ let exported_symbol = -+ ExportedSymbol::NoDefId(SymbolName::new(tcx, tcx.sess.target.entry_name.as_ref())); - - symbols.push(( - exported_symbol, -diff --git a/compiler/rustc_target/src/abi/call/mod.rs b/compiler/rustc_target/src/abi/call/mod.rs -index 9e5f0e4d158b..c622bd36b00c 100644 ---- a/compiler/rustc_target/src/abi/call/mod.rs -+++ b/compiler/rustc_target/src/abi/call/mod.rs -@@ -3,6 +3,7 @@ - use crate::spec::{self, HasTargetSpec}; - use rustc_span::Symbol; - use std::fmt; -+use std::str::FromStr; - - mod aarch64; - mod amdgpu; -@@ -735,6 +736,33 @@ pub fn adjust_for_foreign_abi( - } - } - -+impl FromStr for Conv { -+ type Err = String; -+ -+ fn from_str(s: &str) -> Result { -+ match s { -+ "C" => Ok(Conv::C), -+ "Rust" => Ok(Conv::Rust), -+ "RustCold" => Ok(Conv::Rust), -+ "ArmAapcs" => Ok(Conv::ArmAapcs), -+ "CCmseNonSecureCall" => Ok(Conv::CCmseNonSecureCall), -+ "Msp430Intr" => Ok(Conv::Msp430Intr), -+ "PtxKernel" => Ok(Conv::PtxKernel), -+ "X86Fastcall" => Ok(Conv::X86Fastcall), -+ "X86Intr" => Ok(Conv::X86Intr), -+ "X86Stdcall" => Ok(Conv::X86Stdcall), -+ "X86ThisCall" => Ok(Conv::X86ThisCall), -+ "X86VectorCall" => Ok(Conv::X86VectorCall), -+ "X86_64SysV" => Ok(Conv::X86_64SysV), -+ "X86_64Win64" => Ok(Conv::X86_64Win64), -+ "AmdGpuKernel" => Ok(Conv::AmdGpuKernel), -+ "AvrInterrupt" => Ok(Conv::AvrInterrupt), -+ "AvrNonBlockingInterrupt" => Ok(Conv::AvrNonBlockingInterrupt), -+ _ => Err(format!("'{}' is not a valid value for entry function call convetion.", s)), -+ } -+ } -+} -+ - // Some types are used a lot. Make sure they don't unintentionally get bigger. - #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] - mod size_asserts { -diff --git a/compiler/rustc_target/src/json.rs b/compiler/rustc_target/src/json.rs -index b5d926352122..75bb76a9de08 100644 ---- a/compiler/rustc_target/src/json.rs -+++ b/compiler/rustc_target/src/json.rs -@@ -89,3 +89,28 @@ fn to_json(&self) -> Json { - } - } - } -+ -+impl ToJson for crate::abi::call::Conv { -+ fn to_json(&self) -> Json { -+ let s = match self { -+ Self::C => "C", -+ Self::Rust => "Rust", -+ Self::RustCold => "RustCold", -+ Self::ArmAapcs => "ArmAapcs", -+ Self::CCmseNonSecureCall => "CCmseNonSecureCall", -+ Self::Msp430Intr => "Msp430Intr", -+ Self::PtxKernel => "PtxKernel", -+ Self::X86Fastcall => "X86Fastcall", -+ Self::X86Intr => "X86Intr", -+ Self::X86Stdcall => "X86Stdcall", -+ Self::X86ThisCall => "X86ThisCall", -+ Self::X86VectorCall => "X86VectorCall", -+ Self::X86_64SysV => "X86_64SysV", -+ Self::X86_64Win64 => "X86_64Win64", -+ Self::AmdGpuKernel => "AmdGpuKernel", -+ Self::AvrInterrupt => "AvrInterrupt", -+ Self::AvrNonBlockingInterrupt => "AvrNonBlockingInterrupt", -+ }; -+ Json::String(s.to_owned()) -+ } -+} -diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs -index 72b088d663b1..617de46a55aa 100644 ---- a/compiler/rustc_target/src/spec/mod.rs -+++ b/compiler/rustc_target/src/spec/mod.rs -@@ -34,6 +34,7 @@ - //! the target's settings, though `target-feature` and `link-args` will *add* - //! to the list specified by the target, rather than replace. - -+use crate::abi::call::Conv; - use crate::abi::Endian; - use crate::json::{Json, ToJson}; - use crate::spec::abi::{lookup as lookup_abi, Abi}; -@@ -1668,6 +1669,14 @@ pub struct TargetOptions { - /// Whether the target supports stack canary checks. `true` by default, - /// since this is most common among tier 1 and tier 2 targets. - pub supports_stack_protector: bool, -+ -+ // The name of entry function. -+ // Default value is "main" -+ pub entry_name: StaticCow, -+ -+ // The ABI of entry function. -+ // Default value is `Conv::C`, i.e. C call convention -+ pub entry_abi: Conv, - } - - /// Add arguments for the given flavor and also for its "twin" flavors -@@ -1884,6 +1893,8 @@ fn default() -> TargetOptions { - c_enum_min_bits: 32, - generate_arange_section: true, - supports_stack_protector: true, -+ entry_name: "main".into(), -+ entry_abi: Conv::C, - } - } - } -@@ -2401,6 +2412,18 @@ macro_rules! key { - } - } - } ); -+ ($key_name:ident, Conv) => ( { -+ let name = (stringify!($key_name)).replace("_", "-"); -+ obj.remove(&name).and_then(|o| o.as_str().and_then(|s| { -+ match Conv::from_str(s) { -+ Ok(c) => { -+ base.$key_name = c; -+ Some(Ok(())) -+ } -+ Err(e) => Some(Err(e)) -+ } -+ })).unwrap_or(Ok(())) -+ } ); - } - - if let Some(j) = obj.remove("target-endian") { -@@ -2520,6 +2543,8 @@ macro_rules! key { - key!(c_enum_min_bits, u64); - key!(generate_arange_section, bool); - key!(supports_stack_protector, bool); -+ key!(entry_name); -+ key!(entry_abi, Conv)?; - - if base.is_builtin { - // This can cause unfortunate ICEs later down the line. -@@ -2770,6 +2795,8 @@ macro_rules! target_option_val { - target_option_val!(c_enum_min_bits); - target_option_val!(generate_arange_section); - target_option_val!(supports_stack_protector); -+ target_option_val!(entry_name); -+ target_option_val!(entry_abi); - - if let Some(abi) = self.default_adjusted_cabi { - d.insert("default-adjusted-cabi".into(), Abi::name(abi).to_json()); --- -2.38.1 - diff --git a/0001-Mangle-main-as-__main_void-on-wasm32-wasi.patch b/0001-Mangle-main-as-__main_void-on-wasm32-wasi.patch deleted file mode 100644 index 3f087ef..0000000 --- a/0001-Mangle-main-as-__main_void-on-wasm32-wasi.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 98ae83daae67e9e7663b8345eced1de8c667271f Mon Sep 17 00:00:00 2001 -From: Dan Gohman -Date: Thu, 8 Dec 2022 10:35:46 -0800 -Subject: [PATCH] Mangle "main" as "__main_void" on wasm32-wasi - -On wasm, the age-old C trick of having a main function which can either have -no arguments or argc+argv doesn't work, because wasm requires caller and -callee signatures to match. WASI's current strategy is to have compilers -mangle main's name to indicate which signature they're using. Rust uses the -no-argument form, which should be mangled as `__main_void`. - -This is needed on wasm32-wasi as of #105395. ---- - compiler/rustc_target/src/spec/wasm32_wasi.rs | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/compiler/rustc_target/src/spec/wasm32_wasi.rs b/compiler/rustc_target/src/spec/wasm32_wasi.rs -index 6f0bbf0672d4..a0476d542e64 100644 ---- a/compiler/rustc_target/src/spec/wasm32_wasi.rs -+++ b/compiler/rustc_target/src/spec/wasm32_wasi.rs -@@ -104,6 +104,10 @@ pub fn target() -> Target { - // `args::args()` makes the WASI API calls itself. - options.main_needs_argc_argv = false; - -+ // And, WASI mangles the name of "main" to distinguish between different -+ // signatures. -+ options.entry_name = "__main_void".into(); -+ - Target { - llvm_target: "wasm32-wasi".into(), - pointer_width: 32, --- -2.38.1 - diff --git a/0001-compiletest-set-the-dylib-path-when-gathering-target.patch b/0001-compiletest-set-the-dylib-path-when-gathering-target.patch deleted file mode 100644 index 54185a7..0000000 --- a/0001-compiletest-set-the-dylib-path-when-gathering-target.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 2bdbc5fbf7f84c62f8c7b1007f3b6fd6d3da06f6 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Fri, 14 Oct 2022 16:11:28 -0700 -Subject: [PATCH] compiletest: set the dylib path when gathering target cfg - -If the compiler is built with `rpath = false`, then it won't find its -own libraries unless the library search path is set. We already do that -while running the actual compiletests, but #100260 added another rustc -command for getting the target cfg. - - Check compiletest suite=codegen mode=codegen (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu) - thread 'main' panicked at 'error: failed to get cfg info from "[...]/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" - --- stdout - - --- stderr - [...]/build/x86_64-unknown-linux-gnu/stage1/bin/rustc: error while loading shared libraries: librustc_driver-a2a76dc626cd02d2.so: cannot open shared object file: No such file or directory - ', src/tools/compiletest/src/common.rs:476:13 - -Now the library path is set here as well, so it works without rpath. - -(cherry picked from commit f8a0cc2ca8a644ddb63867526711ba17cb7508c8) ---- - src/tools/compiletest/src/common.rs | 20 +++++++++++--------- - src/tools/compiletest/src/runtest.rs | 27 +++------------------------ - src/tools/compiletest/src/util.rs | 23 +++++++++++++++++++++++ - 3 files changed, 37 insertions(+), 33 deletions(-) - -diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs -index 0260f6848386..9a432f11f82f 100644 ---- a/src/tools/compiletest/src/common.rs -+++ b/src/tools/compiletest/src/common.rs -@@ -2,11 +2,12 @@ - - use std::ffi::OsString; - use std::fmt; -+use std::iter; - use std::path::{Path, PathBuf}; - use std::process::Command; - use std::str::FromStr; - --use crate::util::PathBufExt; -+use crate::util::{add_dylib_path, PathBufExt}; - use lazycell::LazyCell; - use test::ColorConfig; - -@@ -385,8 +386,7 @@ pub fn run_enabled(&self) -> bool { - } - - fn target_cfg(&self) -> &TargetCfg { -- self.target_cfg -- .borrow_with(|| TargetCfg::new(&self.rustc_path, &self.target, &self.target_rustcflags)) -+ self.target_cfg.borrow_with(|| TargetCfg::new(self)) - } - - pub fn matches_arch(&self, arch: &str) -> bool { -@@ -457,21 +457,23 @@ pub enum Endian { - } - - impl TargetCfg { -- fn new(rustc_path: &Path, target: &str, target_rustcflags: &Vec) -> TargetCfg { -- let output = match Command::new(rustc_path) -+ fn new(config: &Config) -> TargetCfg { -+ let mut command = Command::new(&config.rustc_path); -+ add_dylib_path(&mut command, iter::once(&config.compile_lib_path)); -+ let output = match command - .arg("--print=cfg") - .arg("--target") -- .arg(target) -- .args(target_rustcflags) -+ .arg(&config.target) -+ .args(&config.target_rustcflags) - .output() - { - Ok(output) => output, -- Err(e) => panic!("error: failed to get cfg info from {:?}: {e}", rustc_path), -+ Err(e) => panic!("error: failed to get cfg info from {:?}: {e}", config.rustc_path), - }; - if !output.status.success() { - panic!( - "error: failed to get cfg info from {:?}\n--- stdout\n{}\n--- stderr\n{}", -- rustc_path, -+ config.rustc_path, - String::from_utf8(output.stdout).unwrap(), - String::from_utf8(output.stderr).unwrap(), - ); -diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs -index 8af5f1da694b..f8903f754f09 100644 ---- a/src/tools/compiletest/src/runtest.rs -+++ b/src/tools/compiletest/src/runtest.rs -@@ -13,7 +13,7 @@ - use crate::header::TestProps; - use crate::json; - use crate::read2::read2_abbreviated; --use crate::util::{logv, PathBufExt}; -+use crate::util::{add_dylib_path, dylib_env_var, logv, PathBufExt}; - use crate::ColorConfig; - use regex::{Captures, Regex}; - use rustfix::{apply_suggestions, get_suggestions_from_json, Filter}; -@@ -26,6 +26,7 @@ - use std::hash::{Hash, Hasher}; - use std::io::prelude::*; - use std::io::{self, BufReader}; -+use std::iter; - use std::path::{Path, PathBuf}; - use std::process::{Child, Command, ExitStatus, Output, Stdio}; - use std::str; -@@ -72,19 +73,6 @@ fn disable_error_reporting R, R>(f: F) -> R { - f() - } - --/// The name of the environment variable that holds dynamic library locations. --pub fn dylib_env_var() -> &'static str { -- if cfg!(windows) { -- "PATH" -- } else if cfg!(target_os = "macos") { -- "DYLD_LIBRARY_PATH" -- } else if cfg!(target_os = "haiku") { -- "LIBRARY_PATH" -- } else { -- "LD_LIBRARY_PATH" -- } --} -- - /// The platform-specific library name - pub fn get_lib_name(lib: &str, dylib: bool) -> String { - // In some casess (e.g. MUSL), we build a static -@@ -1811,16 +1799,7 @@ fn compose_and_run( - - // Need to be sure to put both the lib_path and the aux path in the dylib - // search path for the child. -- let mut path = -- env::split_paths(&env::var_os(dylib_env_var()).unwrap_or_default()).collect::>(); -- if let Some(p) = aux_path { -- path.insert(0, PathBuf::from(p)) -- } -- path.insert(0, PathBuf::from(lib_path)); -- -- // Add the new dylib search path var -- let newpath = env::join_paths(&path).unwrap(); -- command.env(dylib_env_var(), newpath); -+ add_dylib_path(&mut command, iter::once(lib_path).chain(aux_path)); - - let mut child = disable_error_reporting(|| command.spawn()) - .unwrap_or_else(|_| panic!("failed to exec `{:?}`", &command)); -diff --git a/src/tools/compiletest/src/util.rs b/src/tools/compiletest/src/util.rs -index e5ff0906be8a..ec36f1e4fb72 100644 ---- a/src/tools/compiletest/src/util.rs -+++ b/src/tools/compiletest/src/util.rs -@@ -2,6 +2,7 @@ - use std::env; - use std::ffi::OsStr; - use std::path::PathBuf; -+use std::process::Command; - - use tracing::*; - -@@ -111,3 +112,25 @@ fn with_extra_extension>(&self, extension: S) -> PathBuf { - } - } - } -+ -+/// The name of the environment variable that holds dynamic library locations. -+pub fn dylib_env_var() -> &'static str { -+ if cfg!(windows) { -+ "PATH" -+ } else if cfg!(target_os = "macos") { -+ "DYLD_LIBRARY_PATH" -+ } else if cfg!(target_os = "haiku") { -+ "LIBRARY_PATH" -+ } else { -+ "LD_LIBRARY_PATH" -+ } -+} -+ -+/// Adds a list of lookup paths to `cmd`'s dynamic library lookup path. -+/// If the dylib_path_var is already set for this cmd, the old value will be overwritten! -+pub fn add_dylib_path(cmd: &mut Command, paths: impl Iterator>) { -+ let path_env = env::var_os(dylib_env_var()); -+ let old_paths = path_env.as_ref().map(env::split_paths); -+ let new_paths = paths.map(Into::into).chain(old_paths.into_iter().flatten()); -+ cmd.env(dylib_env_var(), env::join_paths(new_paths).unwrap()); -+} --- -2.38.1 - diff --git a/0001-llvm-wrapper-adapt-for-LLVM-API-changes.patch b/0001-llvm-wrapper-adapt-for-LLVM-API-changes.patch new file mode 100644 index 0000000..0a46567 --- /dev/null +++ b/0001-llvm-wrapper-adapt-for-LLVM-API-changes.patch @@ -0,0 +1,69 @@ +From 1b512e5ece0a56733d298db227f7c6a933cb5123 Mon Sep 17 00:00:00 2001 +From: Krasimir Georgiev +Date: Sun, 11 Dec 2022 09:14:50 +0000 +Subject: [PATCH] llvm-wrapper: adapt for LLVM API changes + +This is a follow-up of +https://github.com/rust-lang/rust/commit/75aec4703dea7ef8e13924ccfa3a3d2e8c5c7cff. +There, I updated the wrapper to only include llvm/ADT/Optional.h for +LLVM version below 16. But I missed updating some of the None references. + +Found by our experimental rust + llvm at HEAD bot: +https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/15587#0185006b-e0af-49e5-8b06-280ed125ff0d/200-539 + +(cherry picked from commit cbdc00f6e61132cbb74397cbb91171756e5d5834) +--- + compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | 4 ++++ + compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 12 +++++++++++- + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +index 1a3d458c3006..2865ea892733 100644 +--- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp ++++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +@@ -223,7 +223,11 @@ fromRust(LLVMRustCodeModel Model) { + case LLVMRustCodeModel::Large: + return CodeModel::Large; + case LLVMRustCodeModel::None: ++#if LLVM_VERSION_LT(16, 0) + return None; ++#else ++ return std::nullopt; ++#endif + default: + report_fatal_error("Bad CodeModel."); + } +diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +index 3a748f38995b..6e63a7e01b5f 100644 +--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp ++++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +@@ -322,7 +322,13 @@ extern "C" LLVMAttributeRef LLVMRustCreateUWTableAttr(LLVMContextRef C, bool Asy + } + + extern "C" LLVMAttributeRef LLVMRustCreateAllocSizeAttr(LLVMContextRef C, uint32_t ElementSizeArg) { +- return wrap(Attribute::getWithAllocSizeArgs(*unwrap(C), ElementSizeArg, None)); ++ return wrap(Attribute::getWithAllocSizeArgs(*unwrap(C), ElementSizeArg, ++#if LLVM_VERSION_LT(16, 0) ++ None ++#else ++ std::nullopt ++#endif ++ )); + } + + #if LLVM_VERSION_GE(15, 0) +@@ -717,7 +723,11 @@ static std::optional fromRust(LLVMRustChecksumKind Kind) { + #endif + switch (Kind) { + case LLVMRustChecksumKind::None: ++#if LLVM_VERSION_LT(16, 0) + return None; ++#else ++ return std::nullopt; ++#endif + case LLVMRustChecksumKind::MD5: + return DIFile::ChecksumKind::CSK_MD5; + case LLVMRustChecksumKind::SHA1: +-- +2.40.0 + diff --git a/rust-pr94505-mono-item-sort-local.patch b/rust-pr94505-mono-item-sort-local.patch deleted file mode 100644 index 7710704..0000000 --- a/rust-pr94505-mono-item-sort-local.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/compiler/rustc_middle/src/mir/mono.rs b/compiler/rustc_middle/src/mir/mono.rs -index 892808386dee..13c325a14e40 100644 ---- a/compiler/rustc_middle/src/mir/mono.rs -+++ b/compiler/rustc_middle/src/mir/mono.rs -@@ -7,6 +7,7 @@ - use rustc_data_structures::stable_hasher::{HashStable, StableHasher}; - use rustc_hir::def_id::{CrateNum, DefId, LOCAL_CRATE}; - use rustc_hir::ItemId; -+use rustc_index::vec::Idx; - use rustc_query_system::ich::{NodeIdHashingMode, StableHashingContext}; - use rustc_session::config::OptLevel; - use rustc_span::source_map::Span; -@@ -380,7 +381,7 @@ fn item_sort_key<'tcx>(tcx: TyCtxt<'tcx>, item: MonoItem<'tcx>) -> ItemSortKey<' - // instances into account. The others don't matter for - // the codegen tests and can even make item order - // unstable. -- InstanceDef::Item(def) => Some(def.did.index.as_usize()), -+ InstanceDef::Item(def) => def.did.as_local().map(Idx::index), - InstanceDef::VtableShim(..) - | InstanceDef::ReifyShim(..) - | InstanceDef::Intrinsic(..) -@@ -391,10 +392,8 @@ fn item_sort_key<'tcx>(tcx: TyCtxt<'tcx>, item: MonoItem<'tcx>) -> ItemSortKey<' - | InstanceDef::CloneShim(..) => None, - } - } -- MonoItem::Static(def_id) => Some(def_id.index.as_usize()), -- MonoItem::GlobalAsm(item_id) => { -- Some(item_id.def_id.to_def_id().index.as_usize()) -- } -+ MonoItem::Static(def_id) => def_id.as_local().map(Idx::index), -+ MonoItem::GlobalAsm(item_id) => Some(item_id.def_id.index()), - }, - item.symbol_name(tcx), - ) diff --git a/rust.spec b/rust.spec index 2063175..5c2c190 100644 --- a/rust.spec +++ b/rust.spec @@ -8,9 +8,9 @@ # To bootstrap from scratch, set the channel and date from src/stage0.json # e.g. 1.59.0 wants rustc: 1.58.0-2022-01-13 # or nightly wants some beta-YYYY-MM-DD -%global bootstrap_version 1.65.0 -%global bootstrap_channel 1.65.0 -%global bootstrap_date 2022-11-03 +%global bootstrap_version 1.66.0 +%global bootstrap_channel 1.66.0 +%global bootstrap_date 2022-12-15 # Only the specified arches will use bootstrap binaries. # NOTE: Those binaries used to be uploaded with every new release, but that was @@ -39,7 +39,8 @@ # src/ci/docker/host-x86_64/dist-various-2/build-wasi-toolchain.sh # (updated per https://github.com/rust-lang/rust/pull/96907) %global wasi_libc_url https://github.com/WebAssembly/wasi-libc -%global wasi_libc_ref wasi-sdk-17 +#global wasi_libc_ref wasi-sdk-20 +%global wasi_libc_ref 1dfe5c302d1c5ab621f7abf04620fae92700fd22 %global wasi_libc_name wasi-libc-%{wasi_libc_ref} %global wasi_libc_source %{wasi_libc_url}/archive/%{wasi_libc_ref}/%{wasi_libc_name}.tar.gz %global wasi_libc_dir %{_builddir}/%{wasi_libc_name} @@ -50,7 +51,7 @@ # We can also choose to just use Rust's bundled LLVM, in case the system LLVM # is insufficient. Rust currently requires LLVM 12.0+. %global min_llvm_version 13.0.0 -%global bundled_llvm_version 15.0.2 +%global bundled_llvm_version 15.0.6 %bcond_with bundled_llvm # Requires stable libgit2 1.5, and not the next minor soname change. @@ -58,7 +59,7 @@ %global min_libgit2_version 1.5.0 %global next_libgit2_version 1.6.0~ %global bundled_libgit2_version 1.5.0 -%if 0%{?fedora} >= 99 +%if 0%{?fedora} >= 38 %bcond_with bundled_libgit2 %else %bcond_without bundled_libgit2 @@ -87,7 +88,7 @@ %endif Name: rust -Version: 1.66.1 +Version: 1.67.1 Release: 1%{?dist} Summary: The Rust Programming Language License: (ASL 2.0 or MIT) and (BSD and MIT) @@ -110,14 +111,12 @@ Patch1: 0001-Use-lld-provided-by-system-for-wasm.patch # Set a substitute-path in rust-gdb for standard library sources. Patch2: rustc-1.61.0-rust-gdb-substitute-path.patch -# https://github.com/rust-lang/rust/pull/103072 -Patch3: 0001-compiletest-set-the-dylib-path-when-gathering-target.patch +# Fix Async Generator ABI (rhbz2168622) +# https://github.com/rust-lang/rust/pull/105082 +Patch3: 0001-Fix-Async-Generator-ABI.patch -# https://github.com/rust-lang/rust/pull/104001 -Patch4: 0001-Improve-generating-Custom-entry-function.patch - -# https://github.com/rust-lang/rust/pull/105468 -Patch5: 0001-Mangle-main-as-__main_void-on-wasm32-wasi.patch +# https://github.com/rust-lang/rust/pull/105555 +Patch4: 0001-llvm-wrapper-adapt-for-LLVM-API-changes.patch ### RHEL-specific patches below ### @@ -129,7 +128,7 @@ Patch100: rustc-1.65.0-disable-libssh2.patch # libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys # will try to build it statically -- instead we turn off the feature. -Patch101: rustc-1.65.0-disable-http2.patch +Patch101: rustc-1.67.0-disable-http2.patch # kernel rh1410097 causes too-small stacks for PIE. # (affects RHEL6 kernels when building for RHEL7) @@ -339,6 +338,7 @@ This package includes the Rust compiler and documentation generator. %package std-static Summary: Standard library for Rust +Provides: %{name}-std-static-%{rust_triple} = %{version}-%{release} Requires: %{name} = %{version}-%{release} Requires: glibc-devel%{?_isa} >= 2.11 @@ -558,12 +558,13 @@ feature for the Rust standard library. The RLS (Rust Language Server) uses this data to provide information about the Rust standard library. -%if 0%{?rhel} && 0%{?rhel} >= 8 +%if 0%{?rhel} %package toolset Summary: Rust Toolset -Requires: rust%{?_isa} = %{version}-%{release} -Requires: cargo%{?_isa} = %{version}-%{release} +BuildArch: noarch +Requires: rust = %{version}-%{release} +Requires: cargo = %{version}-%{release} %description toolset This is the metapackage for Rust Toolset, bringing in the Rust compiler, @@ -596,7 +597,6 @@ test -f '%{local_rust_root}/bin/rustc' %patch2 -p1 %patch3 -p1 %patch4 -p1 -%patch5 -p1 %if %with disabled_libssh2 %patch100 -p1 @@ -858,7 +858,7 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_* # We don't want Rust copies of LLVM tools (rust-lld, rust-llvm-dwp) rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll* -%if 0%{?rhel} && 0%{?rhel} >= 8 +%if 0%{?rhel} # This allows users to build packages using Rust Toolset. %{__install} -D -m 644 %{S:100} %{buildroot}%{rpmmacrodir}/macros.rust-toolset %endif @@ -996,16 +996,7 @@ end} %files doc %docdir %{_docdir}/%{name} %dir %{_docdir}/%{name} -%dir %{_docdir}/%{name}/html -%{_docdir}/%{name}/html/*/ -%{_docdir}/%{name}/html/*.html -%{_docdir}/%{name}/html/*.css -%{_docdir}/%{name}/html/*.js -%{_docdir}/%{name}/html/*.png -%{_docdir}/%{name}/html/*.svg -%{_docdir}/%{name}/html/*.woff2 -%license %{_docdir}/%{name}/html/*.txt -%license %{_docdir}/%{name}/html/*.md +%{_docdir}/%{name}/html # former cargo-doc %docdir %{_docdir}/cargo %dir %{_docdir}/cargo @@ -1054,13 +1045,16 @@ end} %{rustlibdir}/%{rust_triple}/analysis/ -%if 0%{?rhel} && 0%{?rhel} >= 8 +%if 0%{?rhel} %files toolset %{rpmmacrodir}/macros.rust-toolset %endif %changelog +* Thu May 18 2023 Josh Stone - 1.67.1-1 +- Update to 1.67.1. + * Wed Jan 11 2023 Josh Stone - 1.66.1-1 - Update to 1.66.1. diff --git a/rustc-1.58.0-no-default-pie.patch b/rustc-1.58.0-no-default-pie.patch deleted file mode 100644 index 67fb0c6..0000000 --- a/rustc-1.58.0-no-default-pie.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs -index 638b2a7b5a9f..79d4ecf4cb91 100644 ---- a/compiler/rustc_codegen_ssa/src/back/link.rs -+++ b/compiler/rustc_codegen_ssa/src/back/link.rs -@@ -763,7 +763,7 @@ fn link_natively<'a, B: ArchiveBuilder<'a>>( - && cmd.get_args().iter().any(|e| e.to_string_lossy() == "-no-pie") - { - info!("linker output: {:?}", out); -- warn!("Linker does not support -no-pie command line option. Retrying without."); -+ info!("Linker does not support -no-pie command line option. Retrying without."); - for arg in cmd.take_args() { - if arg.to_string_lossy() != "-no-pie" { - cmd.arg(arg); -@@ -782,7 +782,7 @@ fn link_natively<'a, B: ArchiveBuilder<'a>>( - && cmd.get_args().iter().any(|e| e.to_string_lossy() == "-static-pie") - { - info!("linker output: {:?}", out); -- warn!( -+ info!( - "Linker does not support -static-pie command line option. Retrying with -static instead." - ); - // Mirror `add_(pre,post)_link_objects` to replace CRT objects. -@@ -1507,15 +1507,14 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - } - - fn link_output_kind(sess: &Session, crate_type: CrateType) -> LinkOutputKind { -- let kind = match (crate_type, sess.crt_static(Some(crate_type)), sess.relocation_model()) { -+ // Only use PIE if explicitly specified. -+ let explicit_pic = -+ matches!(sess.opts.cg.relocation_model, Some(RelocModel::Pic | RelocModel::Pie)); -+ let kind = match (crate_type, sess.crt_static(Some(crate_type)), explicit_pic) { - (CrateType::Executable, _, _) if sess.is_wasi_reactor() => LinkOutputKind::WasiReactorExe, -- (CrateType::Executable, false, RelocModel::Pic | RelocModel::Pie) => { -- LinkOutputKind::DynamicPicExe -- } -+ (CrateType::Executable, false, true) => LinkOutputKind::DynamicPicExe, - (CrateType::Executable, false, _) => LinkOutputKind::DynamicNoPicExe, -- (CrateType::Executable, true, RelocModel::Pic | RelocModel::Pie) => { -- LinkOutputKind::StaticPicExe -- } -+ (CrateType::Executable, true, true) => LinkOutputKind::StaticPicExe, - (CrateType::Executable, true, _) => LinkOutputKind::StaticNoPicExe, - (_, true, _) => LinkOutputKind::StaticDylib, - (_, false, _) => LinkOutputKind::DynamicDylib, diff --git a/rustc-1.59.0-disable-libssh2.patch b/rustc-1.59.0-disable-libssh2.patch deleted file mode 100644 index 4afd67c..0000000 --- a/rustc-1.59.0-disable-libssh2.patch +++ /dev/null @@ -1,42 +0,0 @@ ---- rustc-1.59.0-src/Cargo.lock.orig 2022-02-21 18:48:37.000000000 -0800 -+++ rustc-1.59.0-src/Cargo.lock 2022-02-22 10:16:10.381962862 -0800 -@@ -1935,7 +1935,6 @@ - dependencies = [ - "cc", - "libc", -- "libssh2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", -@@ -1968,20 +1967,6 @@ - ] - - [[package]] --name = "libssh2-sys" --version = "0.2.23" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca" --dependencies = [ -- "cc", -- "libc", -- "libz-sys", -- "openssl-sys", -- "pkg-config", -- "vcpkg", --] -- --[[package]] - name = "libz-sys" - version = "1.1.3" - source = "registry+https://github.com/rust-lang/crates.io-index" ---- rustc-1.59.0-src/vendor/git2/Cargo.toml.orig 2022-02-21 20:14:37.000000000 -0800 -+++ rustc-1.59.0-src/vendor/git2/Cargo.toml 2022-02-22 10:12:23.021772490 -0800 -@@ -51,7 +51,7 @@ - version = "0.1.39" - - [features] --default = ["ssh", "https", "ssh_key_from_memory"] -+default = ["https"] - https = ["libgit2-sys/https", "openssl-sys", "openssl-probe"] - ssh = ["libgit2-sys/ssh"] - ssh_key_from_memory = ["libgit2-sys/ssh_key_from_memory"] diff --git a/rustc-1.60.0-disable-http2.patch b/rustc-1.60.0-disable-http2.patch deleted file mode 100644 index a3a9e2c..0000000 --- a/rustc-1.60.0-disable-http2.patch +++ /dev/null @@ -1,66 +0,0 @@ ---- rustc-beta-src/Cargo.lock.orig 2022-03-18 10:27:54.154949492 -0700 -+++ rustc-beta-src/Cargo.lock 2022-03-18 10:27:54.156949449 -0700 -@@ -958,7 +958,6 @@ - dependencies = [ - "cc", - "libc", -- "libnghttp2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", -@@ -2009,16 +2008,6 @@ - checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" - - [[package]] --name = "libnghttp2-sys" --version = "0.1.4+1.41.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "03624ec6df166e79e139a2310ca213283d6b3c30810c54844f307086d4488df1" --dependencies = [ -- "cc", -- "libc", --] -- --[[package]] - name = "libz-sys" - version = "1.1.3" - source = "registry+https://github.com/rust-lang/crates.io-index" ---- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2022-03-18 10:27:54.156949449 -0700 -+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2022-03-18 10:29:15.967184238 -0700 -@@ -22,7 +22,7 @@ - cargo-util = { path = "crates/cargo-util", version = "0.1.2" } - crates-io = { path = "crates/crates-io", version = "0.34.0" } - crossbeam-utils = "0.8" --curl = { version = "0.4.41", features = ["http2"] } -+curl = { version = "0.4.41", features = [] } - curl-sys = "0.4.50" - env_logger = "0.9.0" - pretty_env_logger = { version = "0.4", optional = true } ---- rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs.orig 2022-03-14 11:49:37.000000000 -0700 -+++ rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs 2022-03-18 10:27:54.156949449 -0700 -@@ -412,14 +412,8 @@ - // Also note that pipelining is disabled as curl authors have indicated - // that it's buggy, and we've empirically seen that it's buggy with HTTP - // proxies. -- let mut multi = Multi::new(); -- let multiplexing = config.http_config()?.multiplexing.unwrap_or(true); -- multi -- .pipelining(false, multiplexing) -- .with_context(|| "failed to enable multiplexing/pipelining in curl")?; -- -- // let's not flood crates.io with connections -- multi.set_max_host_connections(2)?; -+ let multi = Multi::new(); -+ let multiplexing = false; - - Ok(PackageSet { - packages: package_ids -@@ -648,7 +642,7 @@ - macro_rules! try_old_curl { - ($e:expr, $msg:expr) => { - let result = $e; -- if cfg!(target_os = "macos") { -+ if cfg!(any(target_os = "linux", target_os = "macos")) { - if let Err(e) = result { - warn!("ignoring libcurl {} error: {}", $msg, e); - } diff --git a/rustc-1.62.0-disable-http2.patch b/rustc-1.62.0-disable-http2.patch deleted file mode 100644 index 71b019e..0000000 --- a/rustc-1.62.0-disable-http2.patch +++ /dev/null @@ -1,90 +0,0 @@ ---- rustc-beta-src/Cargo.lock.orig 2022-06-22 14:03:26.309745526 -0700 -+++ rustc-beta-src/Cargo.lock 2022-06-22 14:03:26.310745506 -0700 -@@ -990,7 +990,6 @@ - dependencies = [ - "cc", - "libc", -- "libnghttp2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", -@@ -2101,16 +2100,6 @@ - checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" - - [[package]] --name = "libnghttp2-sys" --version = "0.1.4+1.41.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "03624ec6df166e79e139a2310ca213283d6b3c30810c54844f307086d4488df1" --dependencies = [ -- "cc", -- "libc", --] -- --[[package]] - name = "libz-sys" - version = "1.1.3" - source = "registry+https://github.com/rust-lang/crates.io-index" ---- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2022-06-22 14:03:26.310745506 -0700 -+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2022-06-22 14:04:22.058596881 -0700 -@@ -22,7 +22,7 @@ - cargo-util = { path = "crates/cargo-util", version = "0.1.3" } - crates-io = { path = "crates/crates-io", version = "0.34.0" } - crossbeam-utils = "0.8" --curl = { version = "0.4.41", features = ["http2"] } -+curl = { version = "0.4.41", features = [] } - curl-sys = "0.4.50" - env_logger = "0.9.0" - pretty_env_logger = { version = "0.4", optional = true } ---- rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs.orig 2022-06-13 07:34:54.000000000 -0700 -+++ rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs 2022-06-22 14:03:26.311745485 -0700 -@@ -183,16 +183,8 @@ - } - self.fetch_started = true; - -- // We've enabled the `http2` feature of `curl` in Cargo, so treat -- // failures here as fatal as it would indicate a build-time problem. -- self.multiplexing = self.config.http_config()?.multiplexing.unwrap_or(true); -- -- self.multi -- .pipelining(false, self.multiplexing) -- .with_context(|| "failed to enable multiplexing/pipelining in curl")?; -- -- // let's not flood the server with connections -- self.multi.set_max_host_connections(2)?; -+ // Multiplexing is disabled because the system libcurl doesn't support it. -+ self.multiplexing = false; - - self.config - .shell() ---- rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs.orig 2022-06-13 07:34:54.000000000 -0700 -+++ rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs 2022-06-22 14:03:26.311745485 -0700 -@@ -403,16 +403,9 @@ - sources: SourceMap<'cfg>, - config: &'cfg Config, - ) -> CargoResult> { -- // We've enabled the `http2` feature of `curl` in Cargo, so treat -- // failures here as fatal as it would indicate a build-time problem. -- let mut multi = Multi::new(); -- let multiplexing = config.http_config()?.multiplexing.unwrap_or(true); -- multi -- .pipelining(false, multiplexing) -- .with_context(|| "failed to enable multiplexing/pipelining in curl")?; -- -- // let's not flood crates.io with connections -- multi.set_max_host_connections(2)?; -+ // Multiplexing is disabled because the system libcurl doesn't support it. -+ let multi = Multi::new(); -+ let multiplexing = false; - - Ok(PackageSet { - packages: package_ids -@@ -658,7 +651,7 @@ - macro_rules! try_old_curl { - ($e:expr, $msg:expr) => { - let result = $e; -- if cfg!(target_os = "macos") { -+ if cfg!(any(target_os = "linux", target_os = "macos")) { - if let Err(e) = result { - warn!("ignoring libcurl {} error: {}", $msg, e); - } diff --git a/rustc-1.65.0-disable-http2.patch b/rustc-1.67.0-disable-http2.patch similarity index 77% rename from rustc-1.65.0-disable-http2.patch rename to rustc-1.67.0-disable-http2.patch index 99e33c7..7b346e9 100644 --- a/rustc-1.65.0-disable-http2.patch +++ b/rustc-1.67.0-disable-http2.patch @@ -1,6 +1,6 @@ ---- rustc-beta-src/Cargo.lock.orig 2022-10-04 10:55:48.797517289 -0700 -+++ rustc-beta-src/Cargo.lock 2022-10-04 10:55:48.799517248 -0700 -@@ -1026,7 +1026,6 @@ +--- rustc-beta-src/Cargo.lock.orig 2023-01-24 13:25:47.822917185 -0800 ++++ rustc-beta-src/Cargo.lock 2023-01-24 13:25:47.824917142 -0800 +@@ -1062,7 +1062,6 @@ dependencies = [ "cc", "libc", @@ -8,7 +8,7 @@ "libz-sys", "openssl-sys", "pkg-config", -@@ -1993,16 +1992,6 @@ +@@ -2181,16 +2180,6 @@ checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" [[package]] @@ -25,40 +25,19 @@ name = "libz-sys" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" ---- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2022-10-04 10:55:48.799517248 -0700 -+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2022-10-04 11:00:55.057162743 -0700 +--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2023-01-24 13:25:47.824917142 -0800 ++++ rustc-beta-src/src/tools/cargo/Cargo.toml 2023-01-24 13:26:29.209044200 -0800 @@ -21,7 +21,7 @@ cargo-platform = { path = "crates/cargo-platform", version = "0.1.2" } - cargo-util = { path = "crates/cargo-util", version = "0.2.1" } - crates-io = { path = "crates/crates-io", version = "0.34.0" } --curl = { version = "0.4.43", features = ["http2"] } -+curl = { version = "0.4.43", features = [] } - curl-sys = "0.4.55" - env_logger = "0.9.0" + cargo-util = { path = "crates/cargo-util", version = "0.2.3" } + crates-io = { path = "crates/crates-io", version = "0.35.0" } +-curl = { version = "0.4.44", features = ["http2"] } ++curl = { version = "0.4.44", features = [] } + curl-sys = "0.4.59" + env_logger = "0.10.0" pretty_env_logger = { version = "0.4", optional = true } ---- rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs.orig 2022-09-24 10:23:17.000000000 -0700 -+++ rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs 2022-10-04 10:55:48.799517248 -0700 -@@ -192,16 +192,8 @@ - } - self.fetch_started = true; - -- // We've enabled the `http2` feature of `curl` in Cargo, so treat -- // failures here as fatal as it would indicate a build-time problem. -- self.multiplexing = self.config.http_config()?.multiplexing.unwrap_or(true); -- -- self.multi -- .pipelining(false, self.multiplexing) -- .with_context(|| "failed to enable multiplexing/pipelining in curl")?; -- -- // let's not flood the server with connections -- self.multi.set_max_host_connections(2)?; -+ // Multiplexing is disabled because the system libcurl doesn't support it. -+ self.multiplexing = false; - - self.config - .shell() ---- rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs.orig 2022-09-24 10:23:17.000000000 -0700 -+++ rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs 2022-10-04 10:55:48.800517227 -0700 +--- rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs.orig 2023-01-21 17:17:19.000000000 -0800 ++++ rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs 2023-01-24 13:25:47.824917142 -0800 @@ -403,16 +403,9 @@ sources: SourceMap<'cfg>, config: &'cfg Config, @@ -88,3 +67,24 @@ if let Err(e) = result { warn!("ignoring libcurl {} error: {}", $msg, e); } +--- rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs.orig 2023-01-21 17:17:19.000000000 -0800 ++++ rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs 2023-01-24 13:25:47.824917142 -0800 +@@ -223,16 +223,8 @@ + } + self.fetch_started = true; + +- // We've enabled the `http2` feature of `curl` in Cargo, so treat +- // failures here as fatal as it would indicate a build-time problem. +- self.multiplexing = self.config.http_config()?.multiplexing.unwrap_or(true); +- +- self.multi +- .pipelining(false, self.multiplexing) +- .with_context(|| "failed to enable multiplexing/pipelining in curl")?; +- +- // let's not flood the server with connections +- self.multi.set_max_host_connections(2)?; ++ // Multiplexing is disabled because the system libcurl doesn't support it. ++ self.multiplexing = false; + + self.config + .shell() diff --git a/sources b/sources index 4fb006d..8fa0e6e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (rustc-1.66.1-src.tar.xz) = 1944c024c603140d0a9236043a3bd1d0d211dd8d368d6d82a3a620f1ff43b29624755b0943f2b38b40a188c7eee77a840238ea757eaf435e2a3fa6a0e6b82832 -SHA512 (wasi-libc-wasi-sdk-17.tar.gz) = 5870f86d4a8431edefaef41163d1fa7eddeabcfa6bc5794c7bf18b4fd320b6ea43c261a7e41966d0da1490a2d96b9742c82cbcca7c56bb404830722664cab376 +SHA512 (rustc-1.67.1-src.tar.xz) = 42d77ee93b168ae139b026138fb48d925624ff436a836aa97ee235f870e61ea11643b0cf7ad20bcafda774c6cd3855a4bc10a2e2ed1c4d82c6f15158963b304d +SHA512 (wasi-libc-1dfe5c302d1c5ab621f7abf04620fae92700fd22.tar.gz) = 6f813bc7822746c161932de6b84fb965111400a1a38c25dd0981209d588b9ccafe1a5923349110c536f1b7cda707dfa2d0be42c92b2fa6fd89c957eda27bda27 diff --git a/wasi-libc-clang-14-compat.patch b/wasi-libc-clang-14-compat.patch deleted file mode 100644 index 32d52f0..0000000 --- a/wasi-libc-clang-14-compat.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/Makefile b/Makefile -index a93b10a6757a..518bab0aaf78 100644 ---- a/Makefile -+++ b/Makefile -@@ -538,6 +538,10 @@ check-symbols: startup_files libc - -U__GNUC_PATCHLEVEL__ \ - -U__VERSION__ \ - -U__FLOAT128__ \ -+ -U__NO_MATH_ERRNO__ \ -+ -U__BITINT_MAXWIDTH__ \ -+ | grep -vE '^#define __(BOOL|INT|LLONG|LONG|SHRT)_WIDTH__' \ -+ | grep -vE '^#define __INT_(FAST|LEAST)(8|16|32|64)_WIDTH__' \ - | sed -e 's/__[[:upper:][:digit:]]*_ATOMIC_\([[:upper:][:digit:]_]*\)_LOCK_FREE/__compiler_ATOMIC_\1_LOCK_FREE/' \ - | grep -v '^#define __FLT16_' \ - > "$(SYSROOT_SHARE)/predefined-macros.txt"