cranelift-faerie: convert to use new extensible decl format
Bump faerie to 0.8.0 and goblin to 0.0.21. * Preemptible linkages are now weak symbols * Faerie will put read-only data in .rodata for elf
This commit is contained in:
@@ -12,8 +12,8 @@ edition = "2018"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
cranelift-codegen = { path = "../cranelift-codegen", version = "0.28.0" }
|
cranelift-codegen = { path = "../cranelift-codegen", version = "0.28.0" }
|
||||||
cranelift-module = { path = "../cranelift-module", version = "0.28.0" }
|
cranelift-module = { path = "../cranelift-module", version = "0.28.0" }
|
||||||
faerie = "0.7.0"
|
faerie = "0.8.0"
|
||||||
goblin = "0.0.19"
|
goblin = "0.0.21"
|
||||||
failure = "0.1.2"
|
failure = "0.1.2"
|
||||||
target-lexicon = "0.2.0"
|
target-lexicon = "0.2.0"
|
||||||
|
|
||||||
|
|||||||
@@ -334,26 +334,19 @@ impl FaerieProduct {
|
|||||||
|
|
||||||
fn translate_function_linkage(linkage: Linkage) -> faerie::Decl {
|
fn translate_function_linkage(linkage: Linkage) -> faerie::Decl {
|
||||||
match linkage {
|
match linkage {
|
||||||
Linkage::Import => faerie::Decl::FunctionImport,
|
Linkage::Import => faerie::Decl::function_import().into(),
|
||||||
Linkage::Local => faerie::Decl::Function { global: false },
|
Linkage::Local => faerie::Decl::function().into(),
|
||||||
Linkage::Preemptible | Linkage::Export => faerie::Decl::Function { global: true },
|
Linkage::Export => faerie::Decl::function().global().into(),
|
||||||
|
Linkage::Preemptible => faerie::Decl::function().weak().into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn translate_data_linkage(linkage: Linkage, writable: bool) -> faerie::Decl {
|
fn translate_data_linkage(linkage: Linkage, writable: bool) -> faerie::Decl {
|
||||||
match linkage {
|
match linkage {
|
||||||
Linkage::Import => faerie::Decl::DataImport,
|
Linkage::Import => faerie::Decl::data_import().into(),
|
||||||
Linkage::Local => faerie::Decl::Data {
|
Linkage::Local => faerie::Decl::data().with_writable(writable).into(),
|
||||||
global: false,
|
Linkage::Export => faerie::Decl::data().global().with_writable(writable).into(),
|
||||||
writable,
|
Linkage::Preemptible => faerie::Decl::data().weak().with_writable(writable).into(),
|
||||||
},
|
|
||||||
Linkage::Export => faerie::Decl::Data {
|
|
||||||
global: true,
|
|
||||||
writable,
|
|
||||||
},
|
|
||||||
Linkage::Preemptible => {
|
|
||||||
unimplemented!("faerie doesn't support preemptible globals yet");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,7 +381,7 @@ impl<'a> RelocSink for FaerieRelocSink<'a> {
|
|||||||
ir::ExternalName::LibCall(ref libcall) => {
|
ir::ExternalName::LibCall(ref libcall) => {
|
||||||
let sym = (self.libcall_names)(*libcall);
|
let sym = (self.libcall_names)(*libcall);
|
||||||
self.artifact
|
self.artifact
|
||||||
.declare(sym.clone(), faerie::Decl::FunctionImport)
|
.declare(sym.clone(), faerie::Decl::function_import())
|
||||||
.expect("faerie declaration of libcall");
|
.expect("faerie declaration of libcall");
|
||||||
sym
|
sym
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user