diff options
| author | bors <bors@rust-lang.org> | 2023-05-06 00:34:37 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-05-06 00:34:37 +0000 |
| commit | 6d140d59bb957903b02ddb993450509d8d92b448 (patch) | |
| tree | 2e74d588be207d6ee188e6182e851fc1dc660d07 /compiler/rustc_codegen_llvm/src | |
| parent | 963e5c0eff171160238dc2a2c0ba7a1912fada67 (diff) | |
| parent | 393e285e14fcc8477d74ed3919460e7a53d2fbe1 (diff) | |
| download | rust-6d140d59bb957903b02ddb993450509d8d92b448.tar.gz rust-6d140d59bb957903b02ddb993450509d8d92b448.zip | |
Auto merge of #111271 - JohnTitor:rollup-t07qk1c, r=JohnTitor
Rollup of 8 pull requests Successful merges: - #109677 (Stabilize raw-dylib, link_ordinal, import_name_type and -Cdlltool) - #110780 (rustdoc-search: add slices and arrays to index) - #110830 (Add FreeBSD cpuset support to `std::thread::available_concurrency`) - #111139 (Fix MXCSR configuration dependent timing) - #111239 (Remove unnecessary attribute from a diagnostic) - #111246 (forbid escaping bound vars in combine) - #111251 (Issue 109502 follow up, remove unnecessary Vec::new() from compile_test()) - #111261 (Mark `ErrorGuaranteed` constructor as deprecated so people don't use it) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/back/archive.rs | 12 | ||||
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/errors.rs | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/compiler/rustc_codegen_llvm/src/back/archive.rs b/compiler/rustc_codegen_llvm/src/back/archive.rs index 12da21dc477..a6416e9540c 100644 --- a/compiler/rustc_codegen_llvm/src/back/archive.rs +++ b/compiler/rustc_codegen_llvm/src/back/archive.rs @@ -198,7 +198,7 @@ impl ArchiveBuilderBuilder for LlvmArchiveBuilderBuilder { "arm" => ("arm", "--32"), _ => panic!("unsupported arch {}", sess.target.arch), }; - let result = std::process::Command::new(dlltool) + let result = std::process::Command::new(&dlltool) .args([ "-d", def_file_path.to_str().unwrap(), @@ -218,9 +218,13 @@ impl ArchiveBuilderBuilder for LlvmArchiveBuilderBuilder { match result { Err(e) => { - sess.emit_fatal(ErrorCallingDllTool { error: e }); + sess.emit_fatal(ErrorCallingDllTool { + dlltool_path: dlltool.to_string_lossy(), + error: e, + }); } - Ok(output) if !output.status.success() => { + // dlltool returns '0' on failure, so check for error output instead. + Ok(output) if !output.stderr.is_empty() => { sess.emit_fatal(DlltoolFailImportLibrary { stdout: String::from_utf8_lossy(&output.stdout), stderr: String::from_utf8_lossy(&output.stderr), @@ -431,7 +435,7 @@ fn string_to_io_error(s: String) -> io::Error { fn find_binutils_dlltool(sess: &Session) -> OsString { assert!(sess.target.options.is_like_windows && !sess.target.options.is_like_msvc); - if let Some(dlltool_path) = &sess.opts.unstable_opts.dlltool { + if let Some(dlltool_path) = &sess.opts.cg.dlltool { return dlltool_path.clone().into_os_string(); } diff --git a/compiler/rustc_codegen_llvm/src/errors.rs b/compiler/rustc_codegen_llvm/src/errors.rs index bae88d94293..672087de315 100644 --- a/compiler/rustc_codegen_llvm/src/errors.rs +++ b/compiler/rustc_codegen_llvm/src/errors.rs @@ -67,7 +67,8 @@ pub(crate) struct ErrorWritingDEFFile { #[derive(Diagnostic)] #[diag(codegen_llvm_error_calling_dlltool)] -pub(crate) struct ErrorCallingDllTool { +pub(crate) struct ErrorCallingDllTool<'a> { + pub dlltool_path: Cow<'a, str>, pub error: std::io::Error, } |
