summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt')
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h7
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc23
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc17
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
OpenPOWER on IntegriCloud