From d2894f9f45207ca02d3bda68eb46bdd870afc7a3 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 21 Feb 2019 15:48:03 -0800 Subject: [PATCH] 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 --- cranelift/faerie/Cargo.toml | 4 ++-- cranelift/faerie/src/backend.rs | 25 +++++++++---------------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/cranelift/faerie/Cargo.toml b/cranelift/faerie/Cargo.toml index d15ebf4aa9..c0f1f95bd1 100644 --- a/cranelift/faerie/Cargo.toml +++ b/cranelift/faerie/Cargo.toml @@ -12,8 +12,8 @@ edition = "2018" [dependencies] cranelift-codegen = { path = "../cranelift-codegen", version = "0.28.0" } cranelift-module = { path = "../cranelift-module", version = "0.28.0" } -faerie = "0.7.0" -goblin = "0.0.19" +faerie = "0.8.0" +goblin = "0.0.21" failure = "0.1.2" target-lexicon = "0.2.0" diff --git a/cranelift/faerie/src/backend.rs b/cranelift/faerie/src/backend.rs index 92cf1e4ba4..f413879ac2 100644 --- a/cranelift/faerie/src/backend.rs +++ b/cranelift/faerie/src/backend.rs @@ -334,26 +334,19 @@ impl FaerieProduct { fn translate_function_linkage(linkage: Linkage) -> faerie::Decl { match linkage { - Linkage::Import => faerie::Decl::FunctionImport, - Linkage::Local => faerie::Decl::Function { global: false }, - Linkage::Preemptible | Linkage::Export => faerie::Decl::Function { global: true }, + Linkage::Import => faerie::Decl::function_import().into(), + Linkage::Local => faerie::Decl::function().into(), + Linkage::Export => faerie::Decl::function().global().into(), + Linkage::Preemptible => faerie::Decl::function().weak().into(), } } fn translate_data_linkage(linkage: Linkage, writable: bool) -> faerie::Decl { match linkage { - Linkage::Import => faerie::Decl::DataImport, - Linkage::Local => faerie::Decl::Data { - global: false, - writable, - }, - Linkage::Export => faerie::Decl::Data { - global: true, - writable, - }, - Linkage::Preemptible => { - unimplemented!("faerie doesn't support preemptible globals yet"); - } + Linkage::Import => faerie::Decl::data_import().into(), + Linkage::Local => faerie::Decl::data().with_writable(writable).into(), + Linkage::Export => faerie::Decl::data().global().with_writable(writable).into(), + Linkage::Preemptible => faerie::Decl::data().weak().with_writable(writable).into(), } } @@ -388,7 +381,7 @@ impl<'a> RelocSink for FaerieRelocSink<'a> { ir::ExternalName::LibCall(ref libcall) => { let sym = (self.libcall_names)(*libcall); self.artifact - .declare(sym.clone(), faerie::Decl::FunctionImport) + .declare(sym.clone(), faerie::Decl::function_import()) .expect("faerie declaration of libcall"); sym }