Index: lib/sanitizer_common/sanitizer_symbolizer.h =================================================================== --- lib/sanitizer_common/sanitizer_symbolizer.h +++ lib/sanitizer_common/sanitizer_symbolizer.h @@ -75,7 +75,7 @@ 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 @@ 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 @@ typedef IntrusiveList::Iterator Iterator; IntrusiveList tools_; - protected: explicit Symbolizer(IntrusiveList tools); static LowLevelAllocator symbolizer_allocator_; Index: lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc =================================================================== --- lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc +++ lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc @@ -349,23 +349,16 @@ #endif // SANITIZER_SUPPORTS_WEAK_HOOKS -class POSIXSymbolizer : public Symbolizer { - public: - explicit POSIXSymbolizer(IntrusiveList 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 @@ IntrusiveList list; list.clear(); ChooseSymbolizerTools(&list, &symbolizer_allocator_); - return new(symbolizer_allocator_) POSIXSymbolizer(list); + return new(symbolizer_allocator_) Symbolizer(list); } } // namespace __sanitizer Index: lib/sanitizer_common/sanitizer_symbolizer_win.cc =================================================================== --- lib/sanitizer_common/sanitizer_symbolizer_win.cc +++ lib/sanitizer_common/sanitizer_symbolizer_win.cc @@ -129,22 +129,19 @@ return name; } -// TODO(kuba.brecka): To be merged with POSIXSymbolizer. -class WinSymbolizer : public Symbolizer { - public: - explicit WinSymbolizer(IntrusiveList tools) - : Symbolizer(tools) {} - - private: - const char *PlatformDemangle(const char *name) override { return name; } - void PlatformPrepareForSandboxing() override { } -}; +const char *Symbolizer::PlatformDemangle(const char *name) { + return name; +} + +void Symbolizer::PlatformPrepareForSandboxing() { + // Do nothing. +} Symbolizer *Symbolizer::PlatformInit() { IntrusiveList list; list.clear(); list.push_back(new(symbolizer_allocator_) WinSymbolizerTool()); - return new(symbolizer_allocator_) WinSymbolizer(list); + return new(symbolizer_allocator_) Symbolizer(list); } } // namespace __sanitizer