This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 8 files changed +16
-0
lines changed Expand file tree Collapse file tree 8 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -96,6 +96,8 @@ session_sanitizer_cfi_requires_lto = `-Zsanitizer=cfi` requires `-Clto` or `-Cli
9696
9797session_sanitizer_cfi_requires_single_codegen_unit = `-Zsanitizer=cfi` with `-Clto` requires `-Ccodegen-units=1`
9898
99+ session_sanitizer_kcfi_requires_panic_abort = `-Z sanitizer=kcfi` requires `-C panic=abort`
100+
99101session_sanitizer_not_supported = { $us } sanitizer is not supported for this target
100102
101103session_sanitizers_not_supported = { $us } sanitizers are not supported for this target
Original file line number Diff line number Diff line change @@ -145,6 +145,10 @@ pub(crate) struct SanitizerCfiGeneralizePointersRequiresCfi;
145145#[ diag( session_sanitizer_cfi_normalize_integers_requires_cfi) ]
146146pub ( crate ) struct SanitizerCfiNormalizeIntegersRequiresCfi ;
147147
148+ #[ derive( Diagnostic ) ]
149+ #[ diag( session_sanitizer_kcfi_requires_panic_abort) ]
150+ pub ( crate ) struct SanitizerKcfiRequiresPanicAbort ;
151+
148152#[ derive( Diagnostic ) ]
149153#[ diag( session_split_lto_unit_requires_lto) ]
150154pub ( crate ) struct SplitLtoUnitRequiresLto ;
Original file line number Diff line number Diff line change @@ -1211,6 +1211,11 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
12111211 sess. dcx ( ) . emit_err ( errors:: SanitizerCfiRequiresLto ) ;
12121212 }
12131213
1214+ // KCFI requires panic=abort
1215+ if sess. is_sanitizer_kcfi_enabled ( ) && sess. panic_strategy ( ) != PanicStrategy :: Abort {
1216+ sess. dcx ( ) . emit_err ( errors:: SanitizerKcfiRequiresPanicAbort ) ;
1217+ }
1218+
12141219 // LLVM CFI using rustc LTO requires a single codegen unit.
12151220 if sess. is_sanitizer_cfi_enabled ( )
12161221 && sess. lto ( ) == config:: Lto :: Fat
Original file line number Diff line number Diff line change 1111//@[cfi]compile-flags: -Clto -Ccodegen-units=1
1212//@[kcfi]needs-llvm-components: x86
1313//@[kcfi]compile-flags: -Zsanitizer=kcfi --cfg kcfi --target x86_64-unknown-none
14+ //@[kcfi]compile-flags: -C panic=abort
1415//@[leak]needs-sanitizer-leak
1516//@[leak]compile-flags: -Zsanitizer=leak --cfg leak
1617//@[memory]needs-sanitizer-memory
Original file line number Diff line number Diff line change 1414//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
1515//@ [cfi] compile-flags: -Z sanitizer=cfi
1616//@ [kcfi] compile-flags: -Z sanitizer=kcfi
17+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
1718//@ run-pass
1819
1920pub fn main ( ) {
Original file line number Diff line number Diff line change 1111//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
1212//@ [cfi] compile-flags: -Z sanitizer=cfi
1313//@ [kcfi] compile-flags: -Z sanitizer=kcfi
14+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
1415//@ run-pass
1516
1617use std:: sync:: Arc ;
Original file line number Diff line number Diff line change 99//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
1010//@ [cfi] compile-flags: -Z sanitizer=cfi
1111//@ [kcfi] compile-flags: -Z sanitizer=kcfi
12+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
1213//@ run-pass
1314
1415use std:: marker:: PhantomData ;
Original file line number Diff line number Diff line change 99//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
1010//@ [cfi] compile-flags: -Z sanitizer=cfi
1111//@ [kcfi] compile-flags: -Z sanitizer=kcfi
12+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
1213//@ run-pass
1314
1415trait Foo {
You can’t perform that action at this time.
0 commit comments