XRay support flag in TargetOptions
Specify where XRay is supported. I only test ARM64 and x86_64, but hey those others should work too, right? LLVM documentation says that MIPS and PPC are also supported, but I don't have the hardware, so I won't pretend. Naturally, more targets can be added later with more testing.
This commit is contained in:
parent
0fef658ffe
commit
8e49c84740
@ -19,6 +19,7 @@ pub fn target() -> Target {
|
||||
| SanitizerSet::MEMTAG
|
||||
| SanitizerSet::SHADOWCALLSTACK
|
||||
| SanitizerSet::ADDRESS,
|
||||
supports_xray: true,
|
||||
..super::android_base::opts()
|
||||
},
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ pub fn target() -> Target {
|
||||
| SanitizerSet::MEMTAG
|
||||
| SanitizerSet::THREAD
|
||||
| SanitizerSet::HWADDRESS,
|
||||
supports_xray: true,
|
||||
..super::linux_gnu_base::opts()
|
||||
},
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
pub fn target() -> Target {
|
||||
let mut base = super::linux_musl_base::opts();
|
||||
base.max_atomic_width = Some(128);
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
llvm_target: "aarch64-unknown-linux-musl".into(),
|
||||
|
@ -1718,6 +1718,9 @@ pub struct TargetOptions {
|
||||
/// The ABI of entry function.
|
||||
/// Default value is `Conv::C`, i.e. C call convention
|
||||
pub entry_abi: Conv,
|
||||
|
||||
/// Whether the target supports XRay instrumentation.
|
||||
pub supports_xray: bool,
|
||||
}
|
||||
|
||||
/// Add arguments for the given flavor and also for its "twin" flavors
|
||||
@ -1937,6 +1940,7 @@ fn default() -> TargetOptions {
|
||||
supports_stack_protector: true,
|
||||
entry_name: "main".into(),
|
||||
entry_abi: Conv::C,
|
||||
supports_xray: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2592,6 +2596,7 @@ macro_rules! key {
|
||||
key!(supports_stack_protector, bool);
|
||||
key!(entry_name);
|
||||
key!(entry_abi, Conv)?;
|
||||
key!(supports_xray, bool);
|
||||
|
||||
if base.is_builtin {
|
||||
// This can cause unfortunate ICEs later down the line.
|
||||
@ -2845,6 +2850,7 @@ macro_rules! target_option_val {
|
||||
target_option_val!(supports_stack_protector);
|
||||
target_option_val!(entry_name);
|
||||
target_option_val!(entry_abi);
|
||||
target_option_val!(supports_xray);
|
||||
|
||||
if let Some(abi) = self.default_adjusted_cabi {
|
||||
d.insert("default-adjusted-cabi".into(), Abi::name(abi).to_json());
|
||||
|
@ -8,6 +8,7 @@ pub fn target() -> Target {
|
||||
base.max_atomic_width = Some(64);
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.stack_probes = StackProbeType::X86;
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
llvm_target: "x86_64-linux-android".into(),
|
||||
|
@ -8,6 +8,7 @@ pub fn target() -> Target {
|
||||
base.stack_probes = StackProbeType::X86;
|
||||
base.supported_sanitizers =
|
||||
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::MEMORY | SanitizerSet::THREAD;
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
llvm_target: "x86_64-unknown-freebsd".into(),
|
||||
|
@ -12,6 +12,7 @@ pub fn target() -> Target {
|
||||
| SanitizerSet::LEAK
|
||||
| SanitizerSet::MEMORY
|
||||
| SanitizerSet::THREAD;
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
llvm_target: "x86_64-unknown-linux-gnu".into(),
|
||||
|
@ -12,6 +12,7 @@ pub fn target() -> Target {
|
||||
| SanitizerSet::LEAK
|
||||
| SanitizerSet::MEMORY
|
||||
| SanitizerSet::THREAD;
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
llvm_target: "x86_64-unknown-linux-musl".into(),
|
||||
|
@ -11,6 +11,7 @@ pub fn target() -> Target {
|
||||
| SanitizerSet::LEAK
|
||||
| SanitizerSet::MEMORY
|
||||
| SanitizerSet::THREAD;
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
llvm_target: "x86_64-unknown-netbsd".into(),
|
||||
|
@ -6,6 +6,7 @@ pub fn target() -> Target {
|
||||
base.max_atomic_width = Some(64);
|
||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||
base.stack_probes = StackProbeType::X86;
|
||||
base.supports_xray = true;
|
||||
|
||||
Target {
|
||||
llvm_target: "x86_64-unknown-openbsd".into(),
|
||||
|
Loading…
Reference in New Issue
Block a user