[compiler-rt] r366967 - [sanitizer_common] Allow customization of StartSymbolizerSubprocess

Julian Lettner via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 24 17:19:03 PDT 2019


Author: yln
Date: Wed Jul 24 17:19:02 2019
New Revision: 366967

URL: http://llvm.org/viewvc/llvm-project?rev=366967&view=rev
Log:
[sanitizer_common] Allow customization of StartSymbolizerSubprocess

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

Subscribers: kubamracek, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D65252

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

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_internal.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_internal.h?rev=366967&r1=366966&r2=366967&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_internal.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_internal.h Wed Jul 24 17:19:02 2019
@@ -80,26 +80,27 @@ class SymbolizerProcess {
   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_;

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc?rev=366967&r1=366966&r2=366967&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc Wed Jul 24 17:19:02 2019
@@ -57,6 +57,11 @@ class AtosSymbolizerProcess : public Sym
   }
 
  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');
   }




More information about the llvm-commits mailing list