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:
Ulrich Weigand
2020-11-09 18:19:33 +01:00
committed by GitHub
parent b326f29885
commit 0568f4fb02
2 changed files with 4 additions and 9 deletions

View File

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