From c0744e1e0c35b1083733fd5c74fc3fb5a6cd04f7 Mon Sep 17 00:00:00 2001 From: Andrew Paverd Date: Mon, 13 Jan 2020 13:25:39 +0000 Subject: Add support for Control Flow Guard on Windows. This patch enables rustc to emit the required LLVM module flags to enable Control Flow Guard metadata (cfguard=1) or metadata and checks (cfguard=2). The LLVM module flags are ignored on unsupported targets and operating systems. --- src/test/codegen/cfguard_checks.rs | 10 ++++++++++ src/test/codegen/cfguard_disabled.rs | 10 ++++++++++ src/test/codegen/cfguard_nochecks.rs | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 src/test/codegen/cfguard_checks.rs create mode 100644 src/test/codegen/cfguard_disabled.rs create mode 100644 src/test/codegen/cfguard_nochecks.rs (limited to 'src/test/codegen') diff --git a/src/test/codegen/cfguard_checks.rs b/src/test/codegen/cfguard_checks.rs new file mode 100644 index 00000000000..40a7353eac0 --- /dev/null +++ b/src/test/codegen/cfguard_checks.rs @@ -0,0 +1,10 @@ +// compile-flags: -Z control_flow_guard=checks + +#![crate_type = "lib"] + +// A basic test function. +pub fn test() { +} + +// Ensure the module flag cfguard=2 is present +// CHECK: !"cfguard", i32 2 diff --git a/src/test/codegen/cfguard_disabled.rs b/src/test/codegen/cfguard_disabled.rs new file mode 100644 index 00000000000..d1747931e15 --- /dev/null +++ b/src/test/codegen/cfguard_disabled.rs @@ -0,0 +1,10 @@ +// compile-flags: -Z control_flow_guard=disabled + +#![crate_type = "lib"] + +// A basic test function. +pub fn test() { +} + +// Ensure the module flag cfguard is not present +// CHECK-NOT: !"cfguard" diff --git a/src/test/codegen/cfguard_nochecks.rs b/src/test/codegen/cfguard_nochecks.rs new file mode 100644 index 00000000000..c5d7afbae25 --- /dev/null +++ b/src/test/codegen/cfguard_nochecks.rs @@ -0,0 +1,10 @@ +// compile-flags: -Z control_flow_guard=nochecks + +#![crate_type = "lib"] + +// A basic test function. +pub fn test() { +} + +// Ensure the module flag cfguard=1 is present +// CHECK: !"cfguard", i32 1 -- cgit 1.4.1-3-g733a5