diff options
-rw-r--r-- | src/main.cpp | 4 | ||||
-rw-r--r-- | src/trans/target.cpp | 23 |
2 files changed, 25 insertions, 2 deletions
diff --git a/src/main.cpp b/src/main.cpp index 369c80de..212cdfd3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,7 +38,7 @@ # if defined(__amd64__) # define DEFAULT_TARGET_NAME "x86_64-linux-gnu" # elif defined(__aarch64__) -# define DEFAULT_TARGET_NAME "arm64-linux-gnu" +# define DEFAULT_TARGET_NAME "aarch64-linux-gnu" # elif defined(__arm__) # define DEFAULT_TARGET_NAME "arm-linux-gnu" # elif defined(__i386__) @@ -60,7 +60,7 @@ # if defined(__amd64__) # define DEFAULT_TARGET_NAME "x86_64-unknown-openbsd" # elif defined(__aarch64__) -# define DEFAULT_TARGET_NAME "arm64-unknown-openbsd" +# define DEFAULT_TARGET_NAME "aarch64-unknown-openbsd" # elif defined(__arm__) # define DEFAULT_TARGET_NAME "arm-unknown-openbsd" # elif defined(__i386__) diff --git a/src/trans/target.cpp b/src/trans/target.cpp index 1d683af9..2bf655a9 100644 --- a/src/trans/target.cpp +++ b/src/trans/target.cpp @@ -24,6 +24,11 @@ const TargetArch ARCH_X86 = { 32, false, { /*atomic(u8)=*/true, false, true, false, true } }; +const TargetArch ARCH_ARM64 = { + "aarch64", + 64, false, + { /*atomic(u8)=*/true, true, true, true, true } +}; const TargetArch ARCH_ARM32 = { "arm", 32, false, @@ -84,6 +89,10 @@ namespace { rv.m_arch = ARCH_ARM32; } + else if( key_val.value.as_string() == ARCH_ARM64.m_name ) + { + rv.m_arch = ARCH_ARM64; + } else if( key_val.value.as_string() == ARCH_X86.m_name ) { rv.m_arch = ARCH_X86; @@ -224,6 +233,13 @@ namespace ARCH_ARM32 }; } + else if(target_name == "aarch64-linux-gnu") + { + return TargetSpec { + "unix", "linux", "gnu", CodegenMode::Gnu11, "aarch64-linux-gnu", + ARCH_ARM64 + }; + } else if(target_name == "i586-windows-gnu") { return TargetSpec { @@ -280,6 +296,13 @@ namespace ARCH_ARM32 }; } + else if(target_name == "aarch64-unknown-openbsd") + { + return TargetSpec { + "unix", "openbsd", "gnu", CodegenMode::Gnu11, "aarch64-unknown-openbsd", + ARCH_ARM64 + }; + } else { ::std::cerr << "Unknown target name '" << target_name << "'" << ::std::endl; |