forked from OSchip/llvm-project
[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:
parent
eb1b4c5d4c
commit
758f6da687
|
|
@ -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_;
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue