40f1d9d154
Set the cfi-normalize-integers and kcfi-offset module flags when Control-Flow Integrity sanitizers are used, so functions generated by the LLVM backend use the same CFI/KCFI options as rustc. cfi-normalize-integers tells LLVM to also use integer normalization for generated functions when -Zsanitizer-cfi-normalize-integers is used. kcfi-offset specifies the number of prefix nops between the KCFI type hash and the function entry when -Z patchable-function-entry is used. Note that LLVM assumes all indirectly callable functions use the same number of prefix NOPs with -Zsanitizer=kcfi.
22 lines
617 B
Rust
22 lines
617 B
Rust
// Verifies that "cfi-normalize-integers" module flag is added.
|
|
//
|
|
//@ revisions: aarch64 x86_64
|
|
//@ [aarch64] compile-flags: --target aarch64-unknown-none
|
|
//@ [aarch64] needs-llvm-components: aarch64
|
|
//@ [x86_64] compile-flags: --target x86_64-unknown-none
|
|
//@ [x86_64] needs-llvm-components: x86
|
|
//@ compile-flags: -Ctarget-feature=-crt-static -Zsanitizer=kcfi -Zsanitizer-cfi-normalize-integers
|
|
|
|
#![feature(no_core, lang_items)]
|
|
#![crate_type = "lib"]
|
|
#![no_core]
|
|
|
|
#[lang = "sized"]
|
|
trait Sized {}
|
|
#[lang = "copy"]
|
|
trait Copy {}
|
|
|
|
pub fn foo() {}
|
|
|
|
// CHECK: !{{[0-9]+}} = !{i32 4, !"cfi-normalize-integers", i32 1}
|