Support building big-endian objects (#2382)
The JIT build_object routine currently rejects building object files for any big-endian platform. However, most of the object builder code works fine for either byte order, with the exception of a small change in the ObjectBuilderTarget::new routine. This patch adds that change and removes the assert in build_object.
This commit is contained in:
@@ -122,10 +122,6 @@ fn process_unwind_info(info: &UnwindInfo, obj: &mut Object, code_section: Sectio
|
||||
|
||||
/// Builds ELF image from the module `Compilation`.
|
||||
// const CODE_SECTION_ALIGNMENT: u64 = 0x1000;
|
||||
// assert_eq!(
|
||||
// isa.triple().architecture.endianness(),
|
||||
// Ok(target_lexicon::Endianness::Little)
|
||||
// );
|
||||
|
||||
/// Iterates through all `LibCall` members and all runtime exported functions.
|
||||
#[macro_export]
|
||||
@@ -223,7 +219,10 @@ impl ObjectBuilderTarget {
|
||||
Ok(Self {
|
||||
binary_format: BinaryFormat::Elf,
|
||||
architecture: to_object_architecture(arch)?,
|
||||
endianness: Endianness::Little,
|
||||
endianness: match arch.endianness().unwrap() {
|
||||
target_lexicon::Endianness::Little => object::Endianness::Little,
|
||||
target_lexicon::Endianness::Big => object::Endianness::Big,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user