From 2b87db3f55018738402058c3111ed6a965cb49c3 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Fri, 13 Mar 2020 11:52:40 -0700 Subject: [PATCH] cranelift-faerie: upgrade to faerie 0.15.0, fix error reporting the `FaerieProduct` exposes faerie-specific types, so we can give the `faerie::ArtifactError` on those methods. `ModuleError::Backend` now expects an `anyhow::Error`, so we change a .to_string into .into() and retain better error information. --- Cargo.lock | 24 ++++++++++++++++++++---- cranelift/faerie/Cargo.toml | 2 +- cranelift/faerie/src/backend.rs | 16 ++++++++-------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b76c9ea69..f1a8cdf268 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -461,7 +461,7 @@ dependencies = [ "anyhow", "cranelift-codegen", "cranelift-module", - "faerie", + "faerie 0.15.0", "goblin", "target-lexicon", ] @@ -499,6 +499,7 @@ dependencies = [ name = "cranelift-module" version = "0.59.0" dependencies = [ + "anyhow", "cranelift-codegen", "cranelift-entity", "hashbrown", @@ -857,6 +858,21 @@ dependencies = [ "thiserror", ] +[[package]] +name = "faerie" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfef65b0e94693295c5d2fe2506f0ee6f43465342d4b5331659936aee8b16084" +dependencies = [ + "goblin", + "indexmap", + "log", + "scroll", + "string-interner", + "target-lexicon", + "thiserror", +] + [[package]] name = "failure" version = "0.1.6" @@ -2424,7 +2440,7 @@ name = "wasmtime-cli" version = "0.12.0" dependencies = [ "anyhow", - "faerie", + "faerie 0.14.0", "file-per-thread-logger", "filecheck", "libc", @@ -2453,7 +2469,7 @@ name = "wasmtime-debug" version = "0.12.0" dependencies = [ "anyhow", - "faerie", + "faerie 0.14.0", "gimli", "more-asserts", "target-lexicon", @@ -2553,7 +2569,7 @@ name = "wasmtime-obj" version = "0.12.0" dependencies = [ "anyhow", - "faerie", + "faerie 0.14.0", "more-asserts", "wasmtime-environ", ] diff --git a/cranelift/faerie/Cargo.toml b/cranelift/faerie/Cargo.toml index dc5d80e70a..a692b3db11 100644 --- a/cranelift/faerie/Cargo.toml +++ b/cranelift/faerie/Cargo.toml @@ -11,7 +11,7 @@ edition = "2018" [dependencies] cranelift-module = { path = "../module", version = "0.59.0" } -faerie = "0.14.0" +faerie = "0.15.0" goblin = "0.1.0" anyhow = "1.0" target-lexicon = "0.10" diff --git a/cranelift/faerie/src/backend.rs b/cranelift/faerie/src/backend.rs index 2518893974..4f1c4455ef 100644 --- a/cranelift/faerie/src/backend.rs +++ b/cranelift/faerie/src/backend.rs @@ -2,7 +2,7 @@ use crate::container; use crate::traps::{FaerieTrapManifest, FaerieTrapSink}; -use anyhow::Error; +use anyhow::anyhow; use cranelift_codegen::binemit::{ Addend, CodeOffset, NullStackmapSink, NullTrapSink, Reloc, RelocSink, Stackmap, StackmapSink, }; @@ -57,9 +57,9 @@ impl FaerieBuilder { libcall_names: Box String>, ) -> ModuleResult { if !isa.flags().is_pic() { - return Err(ModuleError::Backend( - "faerie requires TargetIsa be PIC".to_owned(), - )); + return Err(ModuleError::Backend(anyhow!( + "faerie requires TargetIsa be PIC" + ))); } Ok(Self { isa, @@ -257,7 +257,7 @@ impl Backend for FaerieBackend { to, at: u64::from(offset), }) - .map_err(|e| ModuleError::Backend(e.to_string()))?; + .map_err(|e| ModuleError::Backend(e.into()))?; } for &(offset, id, addend) in data_relocs { debug_assert_eq!( @@ -271,7 +271,7 @@ impl Backend for FaerieBackend { to, at: u64::from(offset), }) - .map_err(|e| ModuleError::Backend(e.to_string()))?; + .map_err(|e| ModuleError::Backend(e.into()))?; } match *init { @@ -369,12 +369,12 @@ impl FaerieProduct { } /// Call `emit` on the faerie `Artifact`, producing bytes in memory. - pub fn emit(&self) -> Result, Error> { + pub fn emit(&self) -> Result, faerie::ArtifactError> { self.artifact.emit() } /// Call `write` on the faerie `Artifact`, writing to a file. - pub fn write(&self, sink: File) -> Result<(), Error> { + pub fn write(&self, sink: File) -> Result<(), faerie::ArtifactError> { self.artifact.write(sink) } }