File tree 8 files changed +16
-0
lines changed
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
96
96
97
97
session_sanitizer_cfi_requires_single_codegen_unit = `-Zsanitizer=cfi` with `-Clto` requires `-Ccodegen-units=1`
98
98
99
+ session_sanitizer_kcfi_requires_panic_abort = `-Z sanitizer=kcfi` requires `-C panic=abort`
100
+
99
101
session_sanitizer_not_supported = { $us } sanitizer is not supported for this target
100
102
101
103
session_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;
145
145
#[ diag( session_sanitizer_cfi_normalize_integers_requires_cfi) ]
146
146
pub ( crate ) struct SanitizerCfiNormalizeIntegersRequiresCfi ;
147
147
148
+ #[ derive( Diagnostic ) ]
149
+ #[ diag( session_sanitizer_kcfi_requires_panic_abort) ]
150
+ pub ( crate ) struct SanitizerKcfiRequiresPanicAbort ;
151
+
148
152
#[ derive( Diagnostic ) ]
149
153
#[ diag( session_split_lto_unit_requires_lto) ]
150
154
pub ( crate ) struct SplitLtoUnitRequiresLto ;
Original file line number Diff line number Diff line change @@ -1234,6 +1234,11 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
1234
1234
sess. dcx ( ) . emit_err ( errors:: SanitizerCfiRequiresLto ) ;
1235
1235
}
1236
1236
1237
+ // KCFI requires panic=abort
1238
+ if sess. is_sanitizer_kcfi_enabled ( ) && sess. panic_strategy ( ) != PanicStrategy :: Abort {
1239
+ sess. dcx ( ) . emit_err ( errors:: SanitizerKcfiRequiresPanicAbort ) ;
1240
+ }
1241
+
1237
1242
// LLVM CFI using rustc LTO requires a single codegen unit.
1238
1243
if sess. is_sanitizer_cfi_enabled ( )
1239
1244
&& sess. lto ( ) == config:: Lto :: Fat
Original file line number Diff line number Diff line change 11
11
//@[cfi]compile-flags: -Clto -Ccodegen-units=1
12
12
//@[kcfi]needs-llvm-components: x86
13
13
//@[kcfi]compile-flags: -Zsanitizer=kcfi --cfg kcfi --target x86_64-unknown-none
14
+ //@[kcfi]compile-flags: -C panic=abort
14
15
//@[leak]needs-sanitizer-leak
15
16
//@[leak]compile-flags: -Zsanitizer=leak --cfg leak
16
17
//@[memory]needs-sanitizer-memory
Original file line number Diff line number Diff line change 14
14
//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
15
15
//@ [cfi] compile-flags: -Z sanitizer=cfi
16
16
//@ [kcfi] compile-flags: -Z sanitizer=kcfi
17
+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
17
18
//@ run-pass
18
19
19
20
pub fn main ( ) {
Original file line number Diff line number Diff line change 11
11
//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
12
12
//@ [cfi] compile-flags: -Z sanitizer=cfi
13
13
//@ [kcfi] compile-flags: -Z sanitizer=kcfi
14
+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
14
15
//@ run-pass
15
16
16
17
use std:: sync:: Arc ;
Original file line number Diff line number Diff line change 9
9
//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
10
10
//@ [cfi] compile-flags: -Z sanitizer=cfi
11
11
//@ [kcfi] compile-flags: -Z sanitizer=kcfi
12
+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
12
13
//@ run-pass
13
14
14
15
use std:: marker:: PhantomData ;
Original file line number Diff line number Diff line change 9
9
//@ [cfi] compile-flags: -C codegen-units=1 -C lto -C prefer-dynamic=off -C opt-level=0
10
10
//@ [cfi] compile-flags: -Z sanitizer=cfi
11
11
//@ [kcfi] compile-flags: -Z sanitizer=kcfi
12
+ //@ [kcfi] compile-flags: -C panic=abort -C prefer-dynamic=off
12
13
//@ run-pass
13
14
14
15
trait Foo {
You can’t perform that action at this time.
0 commit comments