diff options
author | Julian Lettner <jlettner@apple.com> | 2019-07-25 00:19:02 +0000 |
---|---|---|
committer | Julian Lettner <jlettner@apple.com> | 2019-07-25 00:19:02 +0000 |
commit | 758f6da687b825112f493e7f6086c9d6f1853daf (patch) | |
tree | 39fd9ce4c548a0cd67dceca48d84236876b26a48 /compiler-rt | |
parent | eb1b4c5d4c95e73bdf141d2bbc5d7afd1a7e0372 (diff) | |
download | bcm5719-llvm-758f6da687b825112f493e7f6086c9d6f1853daf.tar.gz bcm5719-llvm-758f6da687b825112f493e7f6086c9d6f1853daf.zip |
[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
llvm-svn: 366967
Diffstat (limited to 'compiler-rt')
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h | 15 | ||||
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc | 5 |
2 files changed, 13 insertions, 7 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h index 4611b7dfe1e..3031f28a20e 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h @@ -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_; diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc index d3566571948..0ece4cf4beb 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc @@ -57,6 +57,11 @@ class AtosSymbolizerProcess : public SymbolizerProcess { } 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'); } |