diff options
author | Kostya Kortchinsky <kostyak@google.com> | 2018-02-08 16:29:48 +0000 |
---|---|---|
committer | Kostya Kortchinsky <kostyak@google.com> | 2018-02-08 16:29:48 +0000 |
commit | 2833383cd4d8a2b653f4888d576c9cf2d8ae33ec (patch) | |
tree | 9085f5a51daac8ab3a4f923efe4ae561b5f7ae79 | |
parent | 2a81d30471a8a39accf969d6277aeb1d5f37032a (diff) | |
download | bcm5719-llvm-2833383cd4d8a2b653f4888d576c9cf2d8ae33ec.tar.gz bcm5719-llvm-2833383cd4d8a2b653f4888d576c9cf2d8ae33ec.zip |
[scudo] Allow options to be defined at compile time
Summary:
Allow for options to be defined at compile time, like is already the case for
other sanitizers, via `SCUDO_DEFAULT_OPTIONS`.
Reviewers: alekseyshl, dberris
Reviewed By: alekseyshl, dberris
Subscribers: kubamracek, delcypher, llvm-commits, #sanitizers
Differential Revision: https://reviews.llvm.org/D42980
llvm-svn: 324620
-rw-r--r-- | compiler-rt/lib/asan/asan_flags.cc | 5 | ||||
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h | 3 | ||||
-rw-r--r-- | compiler-rt/lib/scudo/scudo_flags.cpp | 11 | ||||
-rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_interceptors.cc | 6 | ||||
-rw-r--r-- | compiler-rt/lib/xray/xray_flags.cc | 4 |
5 files changed, 18 insertions, 11 deletions
diff --git a/compiler-rt/lib/asan/asan_flags.cc b/compiler-rt/lib/asan/asan_flags.cc index 562168e6d42..1c672886f43 100644 --- a/compiler-rt/lib/asan/asan_flags.cc +++ b/compiler-rt/lib/asan/asan_flags.cc @@ -33,10 +33,7 @@ static const char *MaybeCallAsanDefaultOptions() { static const char *MaybeUseAsanDefaultOptionsCompileDefinition() { #ifdef ASAN_DEFAULT_OPTIONS -// Stringize the macro value. -# define ASAN_STRINGIZE(x) #x -# define ASAN_STRINGIZE_OPTIONS(options) ASAN_STRINGIZE(options) - return ASAN_STRINGIZE_OPTIONS(ASAN_DEFAULT_OPTIONS); + return SANITIZER_STRINGIFY(ASAN_DEFAULT_OPTIONS); #else return ""; #endif diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h index 2d68ed1bff0..e031f50d73a 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h @@ -19,6 +19,9 @@ # define SANITIZER_DEBUG 0 #endif +#define SANITIZER_STRINGIFY_(S) #S +#define SANITIZER_STRINGIFY(S) SANITIZER_STRINGIFY_(S) + // Only use SANITIZER_*ATTRIBUTE* before the function return type! #if SANITIZER_WINDOWS #if SANITIZER_IMPORT_INTERFACE diff --git a/compiler-rt/lib/scudo/scudo_flags.cpp b/compiler-rt/lib/scudo/scudo_flags.cpp index ad50800c473..c012471a836 100644 --- a/compiler-rt/lib/scudo/scudo_flags.cpp +++ b/compiler-rt/lib/scudo/scudo_flags.cpp @@ -35,6 +35,14 @@ static void RegisterScudoFlags(FlagParser *parser, Flags *f) { #undef SCUDO_FLAG } +static const char *getCompileDefinitionScudoDefaultOptions() { +#ifdef SCUDO_DEFAULT_OPTIONS + return SANITIZER_STRINGIFY(SCUDO_DEFAULT_OPTIONS); +#else + return ""; +#endif +} + static const char *getScudoDefaultOptions() { return (&__scudo_default_options) ? __scudo_default_options() : ""; } @@ -54,6 +62,9 @@ void initFlags() { RegisterScudoFlags(&ScudoParser, f); RegisterCommonFlags(&ScudoParser); + // Override from compile definition. + ScudoParser.ParseString(getCompileDefinitionScudoDefaultOptions()); + // Override from user-specified string. ScudoParser.ParseString(getScudoDefaultOptions()); diff --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc index 73fa2af4859..618514f945a 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc @@ -569,10 +569,8 @@ TSAN_INTERCEPTOR(int, sigsetjmp, void *env); #define TSAN_INTERCEPTOR_SETJMP TSAN_INTERCEPTOR_SETJMP__(setjmp_symname) #define TSAN_INTERCEPTOR_SIGSETJMP TSAN_INTERCEPTOR_SETJMP__(sigsetjmp_symname) -#define TSAN_STRING_SETJMP_(x) # x -#define TSAN_STRING_SETJMP__(x) TSAN_STRING_SETJMP_(x) -#define TSAN_STRING_SETJMP TSAN_STRING_SETJMP__(setjmp_symname) -#define TSAN_STRING_SIGSETJMP TSAN_STRING_SETJMP__(sigsetjmp_symname) +#define TSAN_STRING_SETJMP SANITIZER_STRINGIFY(setjmp_symname) +#define TSAN_STRING_SIGSETJMP SANITIZER_STRINGIFY(sigsetjmp_symname) // Not called. Merely to satisfy TSAN_INTERCEPT(). extern "C" SANITIZER_INTERFACE_ATTRIBUTE diff --git a/compiler-rt/lib/xray/xray_flags.cc b/compiler-rt/lib/xray/xray_flags.cc index 1ee4d10d753..ced1a52143c 100644 --- a/compiler-rt/lib/xray/xray_flags.cc +++ b/compiler-rt/lib/xray/xray_flags.cc @@ -48,9 +48,7 @@ static const char *useCompilerDefinedFlags() XRAY_NEVER_INSTRUMENT { // provided through the XRAY_DEFAULT_OPTIONS from causing compilation issues (or // changing the semantics of the implementation through the macro). This ensures // that we convert whatever XRAY_DEFAULT_OPTIONS is defined as a string literal. -#define XRAY_STRINGIZE(x) #x -#define XRAY_STRINGIZE_OPTIONS(options) XRAY_STRINGIZE(options) - return XRAY_STRINGIZE_OPTIONS(XRAY_DEFAULT_OPTIONS); + return SANITIZER_STRINGIFY(XRAY_DEFAULT_OPTIONS); #else return ""; #endif |