Cranelift: Module data apis should allow specifying the object file section #1640

This commit is contained in:
Carlo Kok
2020-06-06 16:08:21 +02:00
parent 4bb58940c7
commit 6b47079884
2 changed files with 32 additions and 15 deletions

View File

@@ -46,6 +46,8 @@ pub struct DataDescription {
pub function_relocs: Vec<(CodeOffset, ir::FuncRef)>,
/// Data addresses to write at specified offsets.
pub data_relocs: Vec<(CodeOffset, ir::GlobalValue, Addend)>,
/// Object file section
pub section: Option<(std::string::String, std::string::String)>
}
/// This is to data objects what cranelift_codegen::Context is to functions.
@@ -63,6 +65,7 @@ impl DataContext {
data_decls: PrimaryMap::new(),
function_relocs: vec![],
data_relocs: vec![],
section: None
},
}
}
@@ -90,6 +93,11 @@ impl DataContext {
self.description.init = Init::Bytes { contents };
}
/// Override the segment/section for data, only supported on Object backend
pub fn set_section(&mut self, seg: &str, sec: &str) {
self.description.section = Some((std::string::String::from(seg), std::string::String::from(sec)))
}
/// Declare an external function import.
///
/// Users of the `Module` API generally should call