[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
This commit is contained in:
Julian Lettner 2019-07-25 00:19:02 +00:00
parent eb1b4c5d4c
commit 758f6da687
2 changed files with 13 additions and 7 deletions

View File

@ -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_;

View File

@ -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');
}