[PATCH] D65252: [sanitizer_common] Allow customization of StartSymbolizerSubprocess

Julian Lettner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 24 16:08:54 PDT 2019


yln created this revision.
Herald added subscribers: llvm-commits, Sanitizers, kubamracek.
Herald added projects: Sanitizers, LLVM.

Make SymbolizerProcess::StartSymbolizerSubprocess virtual and protected
to allow subclasses to customize it via "override and call".


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D65252

Files:
  compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h
  compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc


Index: compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
===================================================================
--- compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
+++ compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
@@ -57,6 +57,11 @@
   }
 
  private:
+  virtual bool StartSymbolizerSubprocess() override {
+    // Configure sandbox before starting atos process.
+    return SymbolizerProcess::StartSymbolizerSubprocess();
+  }
+
   bool ReachedEndOfOutput(const char *buffer, uptr length) const override {
     return (length >= 1 && buffer[length - 1] == '\n');
   }
Index: compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h
===================================================================
--- compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h
+++ compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h
@@ -80,26 +80,27 @@
   const char *SendCommand(const char *command);
 
  protected:
+  /// The maximum number of arguments required to invoke a tool process.
+  static const unsigned kArgVMax = 6;
+
+  // Customizable by subclasses.
+  virtual bool StartSymbolizerSubprocess();
+  virtual bool ReadFromSymbolizer(char *buffer, uptr max_length);
+
+ private:
   virtual bool ReachedEndOfOutput(const char *buffer, uptr length) const {
     UNIMPLEMENTED();
   }
 
-  /// The maximum number of arguments required to invoke a tool process.
-  enum { kArgVMax = 6 };
-
   /// Fill in an argv array to invoke the child process.
   virtual void GetArgV(const char *path_to_binary,
                        const char *(&argv)[kArgVMax]) const {
     UNIMPLEMENTED();
   }
 
-  virtual bool ReadFromSymbolizer(char *buffer, uptr max_length);
-
- private:
   bool Restart();
   const char *SendCommandImpl(const char *command);
   bool WriteToSymbolizer(const char *buffer, uptr length);
-  bool StartSymbolizerSubprocess();
 
   const char *path_;
   fd_t input_fd_;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65252.211629.patch
Type: text/x-patch
Size: 1957 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190724/0fd01626/attachment.bin>


More information about the llvm-commits mailing list