Move alignment config from declare_data to define_data

This commit is contained in:
bjorn3
2020-09-30 19:23:23 +02:00
parent b44c5bb2be
commit 84c6ec3214
6 changed files with 30 additions and 23 deletions

View File

@@ -50,6 +50,8 @@ pub struct DataDescription {
pub data_relocs: Vec<(CodeOffset, ir::GlobalValue, Addend)>,
/// Object file section
pub custom_segment_section: Option<(String, String)>,
/// Alignment
pub align: Option<u64>,
}
/// This is to data objects what cranelift_codegen::Context is to functions.
@@ -68,6 +70,7 @@ impl DataContext {
function_relocs: vec![],
data_relocs: vec![],
custom_segment_section: None,
align: None,
},
}
}
@@ -79,6 +82,8 @@ impl DataContext {
self.description.data_decls.clear();
self.description.function_relocs.clear();
self.description.data_relocs.clear();
self.description.custom_segment_section = None;
self.description.align = None;
}
/// Define a zero-initialized object with the given size.
@@ -100,6 +105,12 @@ impl DataContext {
self.description.custom_segment_section = Some((seg.to_owned(), sec.to_owned()))
}
/// Set the alignment for data. The alignment must be a power of two.
pub fn set_align(&mut self, align: u64) {
assert!(align.is_power_of_two());
self.description.align = Some(align);
}
/// Declare an external function import.
///
/// Users of the `Module` API generally should call