Add x86_64-unknown-linux-ohos target
This complements the existing `aarch64-unknown-linux-ohos` and `armv7-unknown-linux-ohos` targets.
This commit is contained in:
parent
fe37f37e4b
commit
5d46bd995d
@ -3,9 +3,7 @@
|
||||
use super::SanitizerSet;
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::linux_musl_base::opts();
|
||||
base.env = "ohos".into();
|
||||
base.crt_static_default = false;
|
||||
let mut base = super::linux_ohos_base::opts();
|
||||
base.max_atomic_width = Some(128);
|
||||
|
||||
Target {
|
||||
@ -17,8 +15,6 @@ pub fn target() -> Target {
|
||||
options: TargetOptions {
|
||||
features: "+reserve-x18".into(),
|
||||
mcount: "\u{1}_mcount".into(),
|
||||
force_emulated_tls: true,
|
||||
has_thread_local: false,
|
||||
supported_sanitizers: SanitizerSet::ADDRESS
|
||||
| SanitizerSet::CFI
|
||||
| SanitizerSet::LEAK
|
||||
|
@ -17,12 +17,8 @@ pub fn target() -> Target {
|
||||
abi: "eabi".into(),
|
||||
features: "+v7,+thumb2,+soft-float,-neon".into(),
|
||||
max_atomic_width: Some(64),
|
||||
env: "ohos".into(),
|
||||
crt_static_default: false,
|
||||
mcount: "\u{1}mcount".into(),
|
||||
force_emulated_tls: true,
|
||||
has_thread_local: false,
|
||||
..super::linux_musl_base::opts()
|
||||
..super::linux_ohos_base::opts()
|
||||
},
|
||||
}
|
||||
}
|
||||
|
12
compiler/rustc_target/src/spec/linux_ohos_base.rs
Normal file
12
compiler/rustc_target/src/spec/linux_ohos_base.rs
Normal file
@ -0,0 +1,12 @@
|
||||
use crate::spec::TargetOptions;
|
||||
|
||||
pub fn opts() -> TargetOptions {
|
||||
let mut base = super::linux_base::opts();
|
||||
|
||||
base.env = "ohos".into();
|
||||
base.crt_static_default = false;
|
||||
base.force_emulated_tls = true;
|
||||
base.has_thread_local = false;
|
||||
|
||||
base
|
||||
}
|
@ -73,6 +73,7 @@
|
||||
mod linux_base;
|
||||
mod linux_gnu_base;
|
||||
mod linux_musl_base;
|
||||
mod linux_ohos_base;
|
||||
mod linux_uclibc_base;
|
||||
mod msvc_base;
|
||||
mod netbsd_base;
|
||||
@ -1365,6 +1366,7 @@ fn $module() {
|
||||
|
||||
("aarch64-unknown-linux-ohos", aarch64_unknown_linux_ohos),
|
||||
("armv7-unknown-linux-ohos", armv7_unknown_linux_ohos),
|
||||
("x86_64-unknown-linux-ohos", x86_64_unknown_linux_ohos),
|
||||
}
|
||||
|
||||
/// Cow-Vec-Str: Cow<'static, [Cow<'static, str>]>
|
||||
|
26
compiler/rustc_target/src/spec/x86_64_unknown_linux_ohos.rs
Normal file
26
compiler/rustc_target/src/spec/x86_64_unknown_linux_ohos.rs
Normal file
@ -0,0 +1,26 @@
|
||||
use crate::spec::{Cc, LinkerFlavor, Lld, SanitizerSet, StackProbeType, Target};
|
||||
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::linux_ohos_base::opts();
|
||||
base.cpu = "x86-64".into();
|
||||
base.max_atomic_width = Some(64);
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.stack_probes = StackProbeType::X86;
|
||||
base.static_position_independent_executables = true;
|
||||
base.supported_sanitizers = SanitizerSet::ADDRESS
|
||||
| SanitizerSet::CFI
|
||||
| SanitizerSet::LEAK
|
||||
| SanitizerSet::MEMORY
|
||||
| SanitizerSet::THREAD;
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
// LLVM 15 doesn't support OpenHarmony yet, use a linux target instead.
|
||||
llvm_target: "x86_64-unknown-linux-musl".into(),
|
||||
pointer_width: 64,
|
||||
data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
.into(),
|
||||
arch: "x86_64".into(),
|
||||
options: base,
|
||||
}
|
||||
}
|
@ -1053,6 +1053,9 @@ fn supported_sanitizers(
|
||||
"s390x-unknown-linux-musl" => {
|
||||
common_libs("linux", "s390x", &["asan", "lsan", "msan", "tsan"])
|
||||
}
|
||||
"x86_64-unknown-linux-ohos" => {
|
||||
common_libs("linux", "x86_64", &["asan", "lsan", "msan", "tsan"])
|
||||
}
|
||||
_ => Vec::new(),
|
||||
}
|
||||
}
|
||||
|
@ -326,6 +326,7 @@ target | std | host | notes
|
||||
`x86_64-unknown-haiku` | ✓ | ✓ | 64-bit Haiku
|
||||
`x86_64-unknown-hermit` | ✓ | | HermitCore
|
||||
`x86_64-unknown-l4re-uclibc` | ? | |
|
||||
[`x86_64-unknown-linux-ohos`](platform-support/openharmony.md) | ✓ | | x86_64 OpenHarmony |
|
||||
[`x86_64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 64-bit OpenBSD
|
||||
`x86_64-uwp-windows-gnu` | ✓ | |
|
||||
`x86_64-uwp-windows-msvc` | ✓ | |
|
||||
|
@ -71,6 +71,28 @@ exec /path/to/ohos-sdk/linux/native/llvm/bin/clang++ \
|
||||
"$@"
|
||||
```
|
||||
|
||||
`x86_64-unknown-linux-ohos-clang.sh`
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
exec /path/to/ohos-sdk/linux/native/llvm/bin/clang \
|
||||
-target x86_64-linux-ohos \
|
||||
--sysroot=/path/to/ohos-sdk/linux/native/sysroot \
|
||||
-D__MUSL__ \
|
||||
"$@"
|
||||
```
|
||||
|
||||
`x86_64-unknown-linux-ohos-clang++.sh`
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
exec /path/to/ohos-sdk/linux/native/llvm/bin/clang++ \
|
||||
-target x86_64-linux-ohos \
|
||||
--sysroot=/path/to/ohos-sdk/linux/native/sysroot \
|
||||
-D__MUSL__ \
|
||||
"$@"
|
||||
```
|
||||
|
||||
Future versions of the OpenHarmony SDK will avoid the need for this process.
|
||||
|
||||
## Building the target
|
||||
@ -98,6 +120,13 @@ cxx = "/path/to/armv7-unknown-linux-ohos-clang++.sh"
|
||||
ar = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ar"
|
||||
ranlib = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ranlib"
|
||||
linker = "/path/to/armv7-unknown-linux-ohos-clang.sh"
|
||||
|
||||
[target.x86_64-unknown-linux-ohos]
|
||||
cc = "/path/to/x86_64-unknown-linux-ohos-clang.sh"
|
||||
cxx = "/path/to/x86_64-unknown-linux-ohos-clang++.sh"
|
||||
ar = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ar"
|
||||
ranlib = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ranlib"
|
||||
linker = "/path/to/x86_64-unknown-linux-ohos-clang.sh"
|
||||
```
|
||||
|
||||
## Building Rust programs
|
||||
@ -116,6 +145,10 @@ linker = "/path/to/aarch64-unknown-linux-ohos-clang.sh"
|
||||
[target.armv7-unknown-linux-ohos]
|
||||
ar = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ar"
|
||||
linker = "/path/to/armv7-unknown-linux-ohos-clang.sh"
|
||||
|
||||
[target.x86_64-unknown-linux-ohos]
|
||||
ar = "/path/to/ohos-sdk/linux/native/llvm/bin/llvm-ar"
|
||||
linker = "/path/to/x86_64-unknown-linux-ohos-clang.sh"
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
Loading…
Reference in New Issue
Block a user