mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-27 22:09:09 +00:00
[clang-cl] Make all sanitizer flags available in clang-cl
Summary: Use a tablegen let {} block so that new sanitizer flags are available by default in all driver modes. This should cut down on time wasted with bugs like http://crbug.com/710928. Reviewers: vitalybuka, hans Subscribers: kcc, llvm-commits Differential Revision: https://reviews.llvm.org/D31988 llvm-svn: 300122
This commit is contained in:
parent
34e38caa2f
commit
a13ffe119a
@ -778,65 +778,71 @@ def fno_signaling_math : Flag<["-"], "fno-signaling-math">, Group<f_Group>;
|
||||
def fjump_tables : Flag<["-"], "fjump-tables">, Group<f_Group>;
|
||||
def fno_jump_tables : Flag<["-"], "fno-jump-tables">, Group<f_Group>, Flags<[CC1Option]>,
|
||||
HelpText<"Do not use jump tables for lowering switches">;
|
||||
|
||||
// Begin sanitizer flags. These should all be core options exposed in all driver
|
||||
// modes.
|
||||
let Flags = [CC1Option, CoreOption] in {
|
||||
|
||||
def fsanitize_EQ : CommaJoined<["-"], "fsanitize=">, Group<f_clang_Group>,
|
||||
Flags<[CC1Option, CoreOption]>, MetaVarName<"<check>">,
|
||||
MetaVarName<"<check>">,
|
||||
HelpText<"Turn on runtime checks for various forms of undefined "
|
||||
"or suspicious behavior. See user manual for available checks">;
|
||||
def fno_sanitize_EQ : CommaJoined<["-"], "fno-sanitize=">, Group<f_clang_Group>,
|
||||
Flags<[CoreOption]>;
|
||||
Flags<[CoreOption, DriverOption]>;
|
||||
def fsanitize_blacklist : Joined<["-"], "fsanitize-blacklist=">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option, CoreOption]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Path to blacklist file for sanitizers">;
|
||||
def fno_sanitize_blacklist : Flag<["-"], "fno-sanitize-blacklist">,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Don't use blacklist file for sanitizers">;
|
||||
def fsanitize_coverage
|
||||
: CommaJoined<["-"], "fsanitize-coverage=">,
|
||||
Group<f_clang_Group>, Flags<[CoreOption]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Specify the type of coverage instrumentation for Sanitizers">;
|
||||
def fno_sanitize_coverage
|
||||
: CommaJoined<["-"], "fno-sanitize-coverage=">,
|
||||
Group<f_clang_Group>, Flags<[CoreOption]>,
|
||||
Group<f_clang_Group>, Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable specified features of coverage instrumentation for "
|
||||
"Sanitizers">;
|
||||
def fsanitize_memory_track_origins_EQ : Joined<["-"], "fsanitize-memory-track-origins=">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable origins tracking in MemorySanitizer">;
|
||||
def fsanitize_memory_track_origins : Flag<["-"], "fsanitize-memory-track-origins">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable origins tracking in MemorySanitizer">;
|
||||
def fno_sanitize_memory_track_origins : Flag<["-"], "fno-sanitize-memory-track-origins">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable origins tracking in MemorySanitizer">;
|
||||
def fsanitize_memory_use_after_dtor : Flag<["-"], "fsanitize-memory-use-after-dtor">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable use-after-destroy detection in MemorySanitizer">;
|
||||
def fsanitize_address_field_padding : Joined<["-"], "fsanitize-address-field-padding=">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Level of field padding for AddressSanitizer">;
|
||||
def fsanitize_address_use_after_scope : Flag<["-"], "fsanitize-address-use-after-scope">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable use-after-scope detection in AddressSanitizer">;
|
||||
def fno_sanitize_address_use_after_scope : Flag<["-"], "fno-sanitize-address-use-after-scope">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable use-after-scope detection in AddressSanitizer">;
|
||||
def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group<f_clang_Group>,
|
||||
Flags<[CoreOption]>;
|
||||
def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group<f_clang_Group>;
|
||||
def fno_sanitize_recover : Flag<["-"], "fno-sanitize-recover">,
|
||||
Group<f_clang_Group>, Flags<[CoreOption]>;
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
Group<f_clang_Group>;
|
||||
def fsanitize_recover_EQ : CommaJoined<["-"], "fsanitize-recover=">,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CC1Option, CoreOption]>,
|
||||
HelpText<"Enable recovery for specified sanitizers">;
|
||||
def fno_sanitize_recover_EQ
|
||||
: CommaJoined<["-"], "fno-sanitize-recover=">,
|
||||
Group<f_clang_Group>, Flags<[CoreOption]>,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable recovery for specified sanitizers">;
|
||||
def fsanitize_trap_EQ : CommaJoined<["-"], "fsanitize-trap=">, Group<f_clang_Group>,
|
||||
Flags<[CC1Option, CoreOption]>,
|
||||
HelpText<"Enable trapping for specified sanitizers">;
|
||||
def fno_sanitize_trap_EQ : CommaJoined<["-"], "fno-sanitize-trap=">, Group<f_clang_Group>,
|
||||
Flags<[CoreOption]>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable trapping for specified sanitizers">;
|
||||
def fsanitize_undefined_trap_on_error : Flag<["-"], "fsanitize-undefined-trap-on-error">,
|
||||
Group<f_clang_Group>;
|
||||
@ -845,39 +851,47 @@ def fno_sanitize_undefined_trap_on_error : Flag<["-"], "fno-sanitize-undefined-t
|
||||
def fsanitize_link_cxx_runtime : Flag<["-"], "fsanitize-link-c++-runtime">,
|
||||
Group<f_clang_Group>;
|
||||
def fsanitize_cfi_cross_dso : Flag<["-"], "fsanitize-cfi-cross-dso">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable control flow integrity (CFI) checks for cross-DSO calls.">;
|
||||
def fno_sanitize_cfi_cross_dso : Flag<["-"], "fno-sanitize-cfi-cross-dso">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Disable control flow integrity (CFI) checks for cross-DSO calls.">;
|
||||
def fsanitize_stats : Flag<["-"], "fsanitize-stats">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable sanitizer statistics gathering.">;
|
||||
def fno_sanitize_stats : Flag<["-"], "fno-sanitize-stats">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable sanitizer statistics gathering.">;
|
||||
def fsanitize_thread_memory_access : Flag<["-"], "fsanitize-thread-memory-access">,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable memory access instrumentation in ThreadSanitizer (default)">;
|
||||
def fno_sanitize_thread_memory_access : Flag<["-"], "fno-sanitize-thread-memory-access">,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable memory access instrumentation in ThreadSanitizer">;
|
||||
def fsanitize_thread_func_entry_exit : Flag<["-"], "fsanitize-thread-func-entry-exit">,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable function entry/exit instrumentation in ThreadSanitizer (default)">;
|
||||
def fno_sanitize_thread_func_entry_exit : Flag<["-"], "fno-sanitize-thread-func-entry-exit">,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable function entry/exit instrumentation in ThreadSanitizer">;
|
||||
def fsanitize_thread_atomics : Flag<["-"], "fsanitize-thread-atomics">,
|
||||
Group<f_clang_Group>,
|
||||
HelpText<"Enable atomic operations instrumentation in ThreadSanitizer (default)">;
|
||||
def fno_sanitize_thread_atomics : Flag<["-"], "fno-sanitize-thread-atomics">,
|
||||
Group<f_clang_Group>,
|
||||
Flags<[CoreOption, DriverOption]>,
|
||||
HelpText<"Disable atomic operations instrumentation in ThreadSanitizer">;
|
||||
def fsanitize_undefined_strip_path_components_EQ : Joined<["-"], "fsanitize-undefined-strip-path-components=">,
|
||||
Group<f_clang_Group>, Flags<[CC1Option]>, MetaVarName<"<number>">,
|
||||
Group<f_clang_Group>, MetaVarName<"<number>">,
|
||||
HelpText<"Strip (or keep only, if negative) a given number of path components "
|
||||
"when emitting check metadata.">;
|
||||
|
||||
} // end -f[no-]sanitize* flags
|
||||
|
||||
def funsafe_math_optimizations : Flag<["-"], "funsafe-math-optimizations">,
|
||||
Group<f_Group>;
|
||||
def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">,
|
||||
|
@ -109,12 +109,15 @@
|
||||
// CHECK-SANE-SANKA: '-fsanitize=efficiency-{{.*}}' not allowed with '-fsanitize=kernel-address'
|
||||
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE
|
||||
// RUN: %clang_cl -target x86_64-windows -fsanitize=address -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE
|
||||
// CHECK-USE-AFTER-SCOPE: -cc1{{.*}}-fsanitize-address-use-after-scope
|
||||
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-OFF
|
||||
// RUN: %clang_cl -target x86_64-windows -fsanitize=address -fno-sanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-OFF
|
||||
// CHECK-USE-AFTER-SCOPE-OFF-NOT: -cc1{{.*}}address-use-after-scope
|
||||
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize-address-use-after-scope -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-BOTH
|
||||
// RUN: %clang_cl -target x86_64-windows -fsanitize=address -fno-sanitize-address-use-after-scope -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-BOTH
|
||||
// CHECK-USE-AFTER-SCOPE-BOTH: -cc1{{.*}}-fsanitize-address-use-after-scope
|
||||
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-use-after-scope -fno-sanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-BOTH-OFF
|
||||
|
Loading…
x
Reference in New Issue
Block a user