Index: lib/asan/asan_flags.cc =================================================================== --- lib/asan/asan_flags.cc +++ lib/asan/asan_flags.cc @@ -34,9 +34,7 @@ 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 Index: lib/sanitizer_common/sanitizer_internal_defs.h =================================================================== --- lib/sanitizer_common/sanitizer_internal_defs.h +++ 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 Index: lib/scudo/scudo_flags.cpp =================================================================== --- lib/scudo/scudo_flags.cpp +++ lib/scudo/scudo_flags.cpp @@ -35,6 +35,14 @@ #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 @@ RegisterScudoFlags(&ScudoParser, f); RegisterCommonFlags(&ScudoParser); + // Override from compile definition. + ScudoParser.ParseString(getCompileDefinitionScudoDefaultOptions()); + // Override from user-specified string. ScudoParser.ParseString(getScudoDefaultOptions()); Index: lib/xray/xray_flags.cc =================================================================== --- lib/xray/xray_flags.cc +++ lib/xray/xray_flags.cc @@ -48,9 +48,7 @@ // 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