[PATCH] D42980: [scudo] Allow options to be defined at compile time

Kostya Kortchinsky via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 7 08:54:17 PST 2018


cryptoad updated this revision to Diff 133226.
cryptoad marked 3 inline comments as done.
cryptoad added a comment.
This revision is now accepted and ready to land.
Herald added a subscriber: kubamracek.

Introduce a `SANITIZER_STRINGIFY` macro in `sanitizer_internal_defs.h`, used
by the various flags parsers (ASan, Scudo, XRay).


Repository:
  rCRT Compiler Runtime

https://reviews.llvm.org/D42980

Files:
  lib/asan/asan_flags.cc
  lib/sanitizer_common/sanitizer_internal_defs.h
  lib/scudo/scudo_flags.cpp
  lib/xray/xray_flags.cc


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
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/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/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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42980.133226.patch
Type: text/x-patch
Size: 2496 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180207/c5dbe447/attachment.bin>


More information about the llvm-commits mailing list