@@ -1170,25 +1170,14 @@ pub mod parse {
1170
1170
}
1171
1171
1172
1172
pub ( crate ) fn parse_sanitizers ( slot : & mut SanitizerSet , v : Option < & str > ) -> bool {
1173
- if let Some ( v) = v {
1174
- for s in v. split ( ',' ) {
1175
- * slot |= match s {
1176
- "address" => SanitizerSet :: ADDRESS ,
1177
- "cfi" => SanitizerSet :: CFI ,
1178
- "dataflow" => SanitizerSet :: DATAFLOW ,
1179
- "kcfi" => SanitizerSet :: KCFI ,
1180
- "kernel-address" => SanitizerSet :: KERNELADDRESS ,
1181
- "leak" => SanitizerSet :: LEAK ,
1182
- "memory" => SanitizerSet :: MEMORY ,
1183
- "memtag" => SanitizerSet :: MEMTAG ,
1184
- "shadow-call-stack" => SanitizerSet :: SHADOWCALLSTACK ,
1185
- "thread" => SanitizerSet :: THREAD ,
1186
- "hwaddress" => SanitizerSet :: HWADDRESS ,
1187
- "safestack" => SanitizerSet :: SAFESTACK ,
1188
- _ => return false ,
1189
- }
1173
+ if let Some ( s) = v {
1174
+ let sanitizer_set = SanitizerSet :: from_comma_list ( s) ;
1175
+ if sanitizer_set. is_ok ( ) {
1176
+ * slot |= sanitizer_set. unwrap ( ) ;
1177
+ true
1178
+ } else {
1179
+ false
1190
1180
}
1191
- true
1192
1181
} else {
1193
1182
false
1194
1183
}
@@ -2066,6 +2055,8 @@ options! {
2066
2055
"output remarks for these optimization passes (space separated, or \" all\" )" ) ,
2067
2056
rpath: bool = ( false , parse_bool, [ UNTRACKED ] ,
2068
2057
"set rpath values in libs/exes (default: no)" ) ,
2058
+ sanitize: SanitizerSet = ( SanitizerSet :: empty( ) , parse_sanitizers, [ TRACKED ] ,
2059
+ "use one or multiple sanitizers" ) ,
2069
2060
save_temps: bool = ( false , parse_bool, [ UNTRACKED ] ,
2070
2061
"save all temporary output files during compilation (default: no)" ) ,
2071
2062
soft_float: bool = ( false , parse_bool, [ TRACKED ] ,
@@ -2476,8 +2467,6 @@ written to standard error output)"),
2476
2467
retpoline_external_thunk: bool = ( false , parse_bool, [ TRACKED TARGET_MODIFIER ] ,
2477
2468
"enables retpoline-external-thunk, retpoline-indirect-branches and retpoline-indirect-calls \
2478
2469
target features (default: no)") ,
2479
- sanitizer: SanitizerSet = ( SanitizerSet :: empty( ) , parse_sanitizers, [ TRACKED ] ,
2480
- "use a sanitizer" ) ,
2481
2470
sanitizer_cfi_canonical_jump_tables: Option <bool > = ( Some ( true ) , parse_opt_bool, [ TRACKED ] ,
2482
2471
"enable canonical jump tables (default: yes)" ) ,
2483
2472
sanitizer_cfi_generalize_pointers: Option <bool > = ( None , parse_opt_bool, [ TRACKED ] ,
0 commit comments