-
Notifications
You must be signed in to change notification settings - Fork 12.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add
kernel-address
sanitizer support for freestanding targets
- Loading branch information
Showing
18 changed files
with
142 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// Verifies that `-Zsanitizer=kernel-address` emits sanitizer instrumentation. | ||
|
||
// compile-flags: -Zsanitizer=kernel-address | ||
// revisions: aarch64 riscv64imac riscv64gc x86_64 | ||
//[aarch64] compile-flags: --target aarch64-unknown-none | ||
//[aarch64] needs-llvm-components: aarch64 | ||
//[riscv64imac] compile-flags: --target riscv64imac-unknown-none-elf | ||
//[riscv64imac] needs-llvm-components: riscv | ||
//[riscv64imac] min-llvm-version: 16 | ||
//[riscv64gc] compile-flags: --target riscv64gc-unknown-none-elf | ||
//[riscv64gc] needs-llvm-components: riscv | ||
//[riscv64gc] min-llvm-version: 16 | ||
//[x86_64] compile-flags: --target x86_64-unknown-none | ||
//[x86_64] needs-llvm-components: x86 | ||
|
||
#![crate_type = "rlib"] | ||
#![feature(no_core, no_sanitize, lang_items)] | ||
#![no_core] | ||
|
||
#[lang = "sized"] | ||
trait Sized {} | ||
|
||
#[lang = "copy"] | ||
trait Copy {} | ||
|
||
impl Copy for u8 {} | ||
|
||
// CHECK-LABEL: ; sanitizer_kasan_emits_instrumentation::unsanitized | ||
// CHECK-NEXT: ; Function Attrs: | ||
// CHECK-NOT: sanitize_address | ||
// CHECK: start: | ||
// CHECK-NOT: call void @__asan_report_load | ||
// CHECK: } | ||
#[no_sanitize(address)] | ||
pub fn unsanitized(b: &mut u8) -> u8 { | ||
*b | ||
} | ||
|
||
// CHECK-LABEL: ; sanitizer_kasan_emits_instrumentation::sanitized | ||
// CHECK-NEXT: ; Function Attrs: | ||
// CHECK: sanitize_address | ||
// CHECK: start: | ||
// CHECK: call void @__asan_report_load | ||
// CHECK: } | ||
pub fn sanitized(b: &mut u8) -> u8 { | ||
*b | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Verifies that when compiling with -Zsanitizer=kernel-address, | ||
// the `#[cfg(sanitize = "address")]` attribute is configured. | ||
|
||
// check-pass | ||
// compile-flags: -Zsanitizer=kernel-address --cfg kernel_address | ||
// revisions: aarch64 riscv64imac riscv64gc x86_64 | ||
//[aarch64] compile-flags: --target aarch64-unknown-none | ||
//[aarch64] needs-llvm-components: aarch64 | ||
//[riscv64imac] compile-flags: --target riscv64imac-unknown-none-elf | ||
//[riscv64imac] needs-llvm-components: riscv | ||
//[riscv64imac] min-llvm-version: 16 | ||
//[riscv64gc] compile-flags: --target riscv64gc-unknown-none-elf | ||
//[riscv64gc] needs-llvm-components: riscv | ||
//[riscv64gc] min-llvm-version: 16 | ||
//[x86_64] compile-flags: --target x86_64-unknown-none | ||
//[x86_64] needs-llvm-components: x86 | ||
|
||
#![crate_type = "rlib"] | ||
#![feature(cfg_sanitize, no_core, lang_items)] | ||
#![no_core] | ||
|
||
#[lang = "sized"] | ||
trait Sized {} | ||
|
||
const _: fn() -> () = main; | ||
|
||
#[cfg(all(sanitize = "address", kernel_address))] | ||
fn main() {} |