Merge pull request #1311 from bytecodealliance/pch/cranelift_module_errors

cranelift-{module, faerie}: minor improvements to error reporting
This commit is contained in:
Pat Hickey
2020-03-17 10:56:05 -07:00
committed by GitHub
9 changed files with 19 additions and 17 deletions

View File

@@ -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"

View File

@@ -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<dyn Fn(ir::LibCall) -> String>,
) -> ModuleResult<Self> {
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<Vec<u8>, Error> {
pub fn emit(&self) -> Result<Vec<u8>, 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)
}
}

View File

@@ -16,6 +16,7 @@ cranelift-entity = { path = "../entity", version = "0.59.0" }
hashbrown = { version = "0.6", optional = true }
log = { version = "0.4.6", default-features = false }
thiserror = "1.0.4"
anyhow = "1.0"
[features]
default = ["std"]

View File

@@ -149,7 +149,7 @@ pub enum ModuleError {
Compilation(#[from] CodegenError),
/// Wraps a generic error from a backend
#[error("Backend error: {0}")]
Backend(String),
Backend(#[source] anyhow::Error),
}
/// A convenient alias for a `Result` that uses `ModuleError` as the error type.