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:
Pat Hickey
2019-02-21 15:48:03 -08:00
committed by Dan Gohman
parent 6267e1ded9
commit d2894f9f45
2 changed files with 11 additions and 18 deletions

View File

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

View File

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