Initial commit of AArch64 support for the llvm backend.

This commit is contained in:
Nick Lewycky
2019-12-06 12:06:18 -08:00
parent a180721eb9
commit 7162906297
5 changed files with 28 additions and 3 deletions

View File

@ -17,12 +17,18 @@ goblin = "0.0.24"
libc = "0.2.60"
byteorder = "1"
[dependencies.inkwell]
[target.'cfg(target_arch = "x86_64")'.dependencies.inkwell]
git = "https://github.com/TheDan64/inkwell"
rev = "781620e9fa30e51a6e03bd0d49b5f5bb7a782520"
default-features = false
features = ["llvm8-0", "target-x86"]
[target.'cfg(target_arch = "aarch64")'.dependencies.inkwell]
git = "https://github.com/TheDan64/inkwell"
rev = "781620e9fa30e51a6e03bd0d49b5f5bb7a782520"
default-features = false
features = ["llvm8-0", "target-aarch64"]
[target.'cfg(unix)'.dependencies]
nix = "0.15"

View File

@ -8472,7 +8472,17 @@ impl<'ctx> ModuleCodeGenerator<LLVMFunctionCodeGenerator<'ctx>, LLVMBackend, Cod
info: true,
machine_code: true,
}),
_ => unimplemented!("compile to target other than x86-64 is not supported"),
_ if triple.starts_with("aarch64") => {
Target::initialize_aarch64(&InitializationConfig {
asm_parser: true,
asm_printer: true,
base: true,
disassembler: true,
info: true,
machine_code: true,
})
}
_ => unimplemented!("target {} not supported", triple),
}
let target = Target::from_triple(&triple).unwrap();

View File

@ -6,7 +6,10 @@
unused_unsafe,
unreachable_patterns
)]
#![cfg_attr(not(target_os = "windows"), deny(dead_code))]
#![cfg_attr(
all(not(target_os = "windows"), not(target_arch = "aarch64")),
deny(dead_code)
)]
#![cfg_attr(nightly, feature(unwind_attributes))]
#![doc(html_favicon_url = "https://wasmer.io/static/icons/favicon.ico")]
#![doc(html_logo_url = "https://avatars3.githubusercontent.com/u/44205449?s=200&v=4")]