diff options
Diffstat (limited to 'compiler-rt')
3 files changed, 18 insertions, 29 deletions
| diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h index 11cce9dd21f..92332230f80 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h @@ -75,7 +75,7 @@ struct DataInfo {  class SymbolizerTool; -class Symbolizer { +class Symbolizer final {   public:    /// Initialize and return platform-specific implementation of symbolizer    /// (if it wasn't already initialized). @@ -146,8 +146,8 @@ class Symbolizer {    bool modules_fresh_;    // Platform-specific default demangler, must not return nullptr. -  virtual const char *PlatformDemangle(const char *name) { UNIMPLEMENTED(); } -  virtual void PlatformPrepareForSandboxing() { UNIMPLEMENTED(); } +  const char *PlatformDemangle(const char *name); +  void PlatformPrepareForSandboxing();    static Symbolizer *symbolizer_;    static StaticSpinMutex init_mu_; @@ -160,7 +160,6 @@ class Symbolizer {    typedef IntrusiveList<SymbolizerTool>::Iterator Iterator;    IntrusiveList<SymbolizerTool> tools_; - protected:    explicit Symbolizer(IntrusiveList<SymbolizerTool> tools);    static LowLevelAllocator symbolizer_allocator_; diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc index 39e8f84ff71..6e714c7c67c 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc @@ -349,23 +349,16 @@ class InternalSymbolizer : public SymbolizerTool {  #endif  // SANITIZER_SUPPORTS_WEAK_HOOKS -class POSIXSymbolizer : public Symbolizer { - public: -  explicit POSIXSymbolizer(IntrusiveList<SymbolizerTool> tools) -      : Symbolizer(tools) {} - - private: -  const char *PlatformDemangle(const char *name) override { -    return DemangleCXXABI(name); -  } +const char *Symbolizer::PlatformDemangle(const char *name) { +  return DemangleCXXABI(name); +} -  void PlatformPrepareForSandboxing() override { +void Symbolizer::PlatformPrepareForSandboxing() {  #if SANITIZER_LINUX && !SANITIZER_ANDROID -    // Cache /proc/self/exe on Linux. -    CacheBinaryName(); +  // Cache /proc/self/exe on Linux. +  CacheBinaryName();  #endif -  } -}; +}  static SymbolizerTool *ChooseExternalSymbolizer(LowLevelAllocator *allocator) {    const char *path = common_flags()->external_symbolizer_path; @@ -448,7 +441,7 @@ Symbolizer *Symbolizer::PlatformInit() {    IntrusiveList<SymbolizerTool> list;    list.clear();    ChooseSymbolizerTools(&list, &symbolizer_allocator_); -  return new(symbolizer_allocator_) POSIXSymbolizer(list); +  return new(symbolizer_allocator_) Symbolizer(list);  }  }  // namespace __sanitizer diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc index 5cf1200754b..31f374687e9 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc @@ -129,22 +129,19 @@ const char *WinSymbolizerTool::Demangle(const char *name) {      return name;  } -// TODO(kuba.brecka): To be merged with POSIXSymbolizer. -class WinSymbolizer : public Symbolizer { - public: -  explicit WinSymbolizer(IntrusiveList<SymbolizerTool> tools) -      : Symbolizer(tools) {} +const char *Symbolizer::PlatformDemangle(const char *name) { +  return name; +} - private: -  const char *PlatformDemangle(const char *name) override { return name; } -  void PlatformPrepareForSandboxing() override { } -}; +void Symbolizer::PlatformPrepareForSandboxing() { +  // Do nothing. +}  Symbolizer *Symbolizer::PlatformInit() {    IntrusiveList<SymbolizerTool> list;    list.clear();    list.push_back(new(symbolizer_allocator_) WinSymbolizerTool()); -  return new(symbolizer_allocator_) WinSymbolizer(list); +  return new(symbolizer_allocator_) Symbolizer(list);  }  }  // namespace __sanitizer | 

