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.
This commit is contained in:
Andrew Paverd 2020-01-13 13:25:39 +00:00
parent b181835a6b
commit c0744e1e0c
8 changed files with 98 additions and 5 deletions

View file

@ -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

View file

@ -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"

View file

@ -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