Skip to content

Commit a33a091

Browse files
MaskRayjrtc27
authored andcommitted
[sanitizers] Remove unneeded MaybeCall*DefaultOptions() and nullptr checks
D28596 added SANITIZER_INTERFACE_WEAK_DEF which can guarantee `*_default_options` are always defined. The weak attributes on the `__{asan,lsan,msan,ubsan}_default_options` declarations can thus be removed. `MaybeCall*DefaultOptions` no longer need nullptr checks, so their call sites can just be replaced by `__*_default_options`. Reviewed By: #sanitizers, vitalybuka Differential Revision: https://reviews.llvm.org/D87175
1 parent 8fa3c5e commit a33a091

11 files changed

+19
-38
lines changed

lib/asan/asan_flags.cpp

+3-7
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ namespace __asan {
2626

2727
Flags asan_flags_dont_use_directly; // use via flags().
2828

29-
static const char *MaybeCallAsanDefaultOptions() {
30-
return (&__asan_default_options) ? __asan_default_options() : "";
31-
}
32-
3329
static const char *MaybeUseAsanDefaultOptionsCompileDefinition() {
3430
#ifdef ASAN_DEFAULT_OPTIONS
3531
return SANITIZER_STRINGIFY(ASAN_DEFAULT_OPTIONS);
@@ -108,14 +104,14 @@ void InitializeFlags() {
108104
asan_parser.ParseString(asan_compile_def);
109105

110106
// Override from user-specified string.
111-
const char *asan_default_options = MaybeCallAsanDefaultOptions();
107+
const char *asan_default_options = __asan_default_options();
112108
asan_parser.ParseString(asan_default_options);
113109
#if CAN_SANITIZE_UB
114-
const char *ubsan_default_options = __ubsan::MaybeCallUbsanDefaultOptions();
110+
const char *ubsan_default_options = __ubsan_default_options();
115111
ubsan_parser.ParseString(ubsan_default_options);
116112
#endif
117113
#if CAN_SANITIZE_LEAKS
118-
const char *lsan_default_options = __lsan::MaybeCallLsanDefaultOptions();
114+
const char *lsan_default_options = __lsan_default_options();
119115
lsan_parser.ParseString(lsan_default_options);
120116
#endif
121117

lib/asan/asan_interface_internal.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ extern "C" {
174174

175175
SANITIZER_INTERFACE_ATTRIBUTE void __asan_print_accumulated_stats();
176176

177-
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
178-
const char* __asan_default_options();
177+
SANITIZER_INTERFACE_ATTRIBUTE
178+
const char *__asan_default_options();
179179

180180
SANITIZER_INTERFACE_ATTRIBUTE
181181
extern uptr __asan_shadow_memory_dynamic_address;

lib/cfi/cfi.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ void InitializeFlags() {
379379
__ubsan::RegisterUbsanFlags(&ubsan_parser, uf);
380380
RegisterCommonFlags(&ubsan_parser);
381381

382-
const char *ubsan_default_options = __ubsan::MaybeCallUbsanDefaultOptions();
382+
const char *ubsan_default_options = __ubsan_default_options();
383383
ubsan_parser.ParseString(ubsan_default_options);
384384
ubsan_parser.ParseStringFromEnv("UBSAN_OPTIONS");
385385
#endif

lib/hwasan/hwasan.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static void InitializeFlags() {
112112
if (__hwasan_default_options)
113113
parser.ParseString(__hwasan_default_options());
114114
#if HWASAN_CONTAINS_UBSAN
115-
const char *ubsan_default_options = __ubsan::MaybeCallUbsanDefaultOptions();
115+
const char *ubsan_default_options = __ubsan_default_options();
116116
ubsan_parser.ParseString(ubsan_default_options);
117117
#endif
118118

lib/lsan/lsan.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ static void InitializeFlags() {
7373
RegisterCommonFlags(&parser);
7474

7575
// Override from user-specified string.
76-
const char *lsan_default_options = MaybeCallLsanDefaultOptions();
76+
const char *lsan_default_options = __lsan_default_options();
7777
parser.ParseString(lsan_default_options);
7878
parser.ParseStringFromEnv("LSAN_OPTIONS");
7979

lib/lsan/lsan_common.cpp

+2-7
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ void InitializeRootRegions() {
110110
root_regions = new (placeholder) InternalMmapVector<RootRegion>();
111111
}
112112

113-
const char *MaybeCallLsanDefaultOptions() {
114-
return (&__lsan_default_options) ? __lsan_default_options() : "";
115-
}
116-
117113
void InitCommonLsan() {
118114
InitializeRootRegions();
119115
if (common_flags()->detect_leaks) {
@@ -900,12 +896,11 @@ int __lsan_do_recoverable_leak_check() {
900896
return 0;
901897
}
902898

903-
#if !SANITIZER_SUPPORTS_WEAK_HOOKS
904-
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
905-
const char * __lsan_default_options() {
899+
SANITIZER_INTERFACE_WEAK_DEF(const char *, __lsan_default_options, void) {
906900
return "";
907901
}
908902

903+
#if !SANITIZER_SUPPORTS_WEAK_HOOKS
909904
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
910905
int __lsan_is_turned_off() {
911906
return 0;

lib/msan/msan.cpp

+5-9
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,9 @@ static void InitializeFlags() {
172172
#endif
173173

174174
// Override from user-specified string.
175-
if (__msan_default_options)
176-
parser.ParseString(__msan_default_options());
175+
parser.ParseString(__msan_default_options());
177176
#if MSAN_CONTAINS_UBSAN
178-
const char *ubsan_default_options = __ubsan::MaybeCallUbsanDefaultOptions();
177+
const char *ubsan_default_options = __ubsan_default_options();
179178
ubsan_parser.ParseString(ubsan_default_options);
180179
#endif
181180

@@ -726,12 +725,9 @@ void __msan_finish_switch_fiber(const void **bottom_old, uptr *size_old) {
726725
}
727726
}
728727

729-
#if !SANITIZER_SUPPORTS_WEAK_HOOKS
730-
extern "C" {
731-
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
732-
const char* __msan_default_options() { return ""; }
733-
} // extern "C"
734-
#endif
728+
SANITIZER_INTERFACE_WEAK_DEF(const char *, __msan_default_options, void) {
729+
return "";
730+
}
735731

736732
extern "C" {
737733
SANITIZER_INTERFACE_ATTRIBUTE

lib/msan/msan_interface_internal.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ void __msan_set_keep_going(int keep_going);
130130
SANITIZER_INTERFACE_ATTRIBUTE
131131
int __msan_set_poison_in_malloc(int do_poison);
132132

133-
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
134-
/* OPTIONAL */ const char* __msan_default_options();
133+
SANITIZER_INTERFACE_ATTRIBUTE
134+
const char *__msan_default_options();
135135

136136
// For testing.
137137
SANITIZER_INTERFACE_ATTRIBUTE

lib/tsan/rtl/tsan_flags.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void InitializeFlags(Flags *f, const char *env, const char *env_option_name) {
8787
// Let a frontend override.
8888
parser.ParseString(__tsan_default_options());
8989
#if TSAN_CONTAINS_UBSAN
90-
const char *ubsan_default_options = __ubsan::MaybeCallUbsanDefaultOptions();
90+
const char *ubsan_default_options = __ubsan_default_options();
9191
ubsan_parser.ParseString(ubsan_default_options);
9292
#endif
9393
// Override from command line.

lib/ubsan/ubsan_flags.cpp

+1-5
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@
2121

2222
namespace __ubsan {
2323

24-
const char *MaybeCallUbsanDefaultOptions() {
25-
return (&__ubsan_default_options) ? __ubsan_default_options() : "";
26-
}
27-
2824
static const char *GetFlag(const char *flag) {
2925
// We cannot call getenv() from inside a preinit array initializer
3026
if (SANITIZER_CAN_USE_PREINIT_ARRAY) {
@@ -66,7 +62,7 @@ void InitializeFlags() {
6662
RegisterUbsanFlags(&parser, f);
6763

6864
// Override from user-specified string.
69-
parser.ParseString(MaybeCallUbsanDefaultOptions());
65+
parser.ParseString(__ubsan_default_options());
7066
// Override from environment variable.
7167
parser.ParseStringFromEnv("UBSAN_OPTIONS");
7268
InitializeCommonFlags();

lib/ubsan/ubsan_flags.h

-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ inline Flags *flags() { return &ubsan_flags; }
3434
void InitializeFlags();
3535
void RegisterUbsanFlags(FlagParser *parser, Flags *f);
3636

37-
const char *MaybeCallUbsanDefaultOptions();
38-
3937
} // namespace __ubsan
4038

4139
extern "C" {

0 commit comments

Comments
 (0)