Use the target-lexicon crate.

This switches from a custom list of architectures to use the
target-lexicon crate.

 - "set is_64bit=1; isa x86" is replaced with "target x86_64", and
   similar for other architectures, and the `is_64bit` flag is removed
   entirely.

 - The `is_compressed` flag is removed too; it's no longer being used to
   control REX prefixes on x86-64, ARM and Thumb are separate
   architectures in target-lexicon, and we can figure out how to
   select RISC-V compressed encodings when we're ready.
This commit is contained in:
Dan Gohman
2018-05-25 11:41:14 -07:00
parent 2f3008aa40
commit 4e67e08efd
131 changed files with 487 additions and 499 deletions

View File

@@ -15,6 +15,7 @@ cretonne-native = { path = "../native", version = "0.8.0", default-features = fa
region = "0.2.0"
libc = { version = "0.2.40", default-features = false }
errno = "0.2.3"
target-lexicon = { version = "0.0.0", default-features = false }
[target.'cfg(target_os = "windows")'.dependencies]
winapi = { version = "0.3", features = ["winbase", "memoryapi"] }

View File

@@ -10,6 +10,7 @@ use libc;
use memory::Memory;
use std::ffi::CString;
use std::ptr;
use target_lexicon::PointerWidth;
#[cfg(windows)]
use winapi;
@@ -173,10 +174,10 @@ impl<'simple_jit_backend> Backend for SimpleJITBackend {
}
}
let reloc = if self.isa.flags().is_64bit() {
Reloc::Abs8
} else {
Reloc::Abs4
let reloc = match self.isa.triple().pointer_width().unwrap() {
PointerWidth::U16 => panic!(),
PointerWidth::U32 => Reloc::Abs4,
PointerWidth::U64 => Reloc::Abs8,
};
let mut relocs = Vec::new();
for &(offset, id) in function_relocs {

View File

@@ -18,6 +18,7 @@ extern crate cretonne_native;
extern crate errno;
extern crate libc;
extern crate region;
extern crate target_lexicon;
#[cfg(target_os = "windows")]
extern crate winapi;