diff options
| author | Alexey Samsonov <samsonov@google.com> | 2013-01-24 14:01:59 +0000 |
|---|---|---|
| committer | Alexey Samsonov <samsonov@google.com> | 2013-01-24 14:01:59 +0000 |
| commit | 971b0cd26f1ad74a6dcac8d6ee824d502da65751 (patch) | |
| tree | c2cbb4e46ad04bf6d3e481882f8d7333c366ed8c | |
| parent | f4f76b1c107b66be6d9e53a97cd7c43f0f85f422 (diff) | |
| download | bcm5719-llvm-971b0cd26f1ad74a6dcac8d6ee824d502da65751.tar.gz bcm5719-llvm-971b0cd26f1ad74a6dcac8d6ee824d502da65751.zip | |
[Sanitizer] use stub InternalSymbolizer on platforms where we don't have weak hooks
llvm-svn: 173347
| -rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc index 40d8d7db9b2..59f914dc58e 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc @@ -185,28 +185,23 @@ SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE bool __sanitizer_symbolize_data(const char *ModuleName, u64 ModuleOffset, char *Buffer, int MaxLength); } // extern "C" -#endif // SANITIZER_SUPPORTS_WEAK_HOOKS class InternalSymbolizer { public: typedef bool (*SanitizerSymbolizeFn)(const char*, u64, char*, int); static InternalSymbolizer *get() { -#if SANITIZER_SUPPORTS_WEAK_HOOKS if (__sanitizer_symbolize_code != 0 && __sanitizer_symbolize_data != 0) { void *mem = symbolizer_allocator.Allocate(sizeof(InternalSymbolizer)); return new(mem) InternalSymbolizer(); } -#endif // SANITIZER_SUPPORTS_WEAK_HOOKS return 0; } char *SendCommand(bool is_data, const char *module_name, uptr module_offset) { -#if SANITIZER_SUPPORTS_WEAK_HOOKS SanitizerSymbolizeFn symbolize_fn = is_data ? __sanitizer_symbolize_data : __sanitizer_symbolize_code; if (symbolize_fn(module_name, module_offset, buffer_, kBufferSize)) return buffer_; -#endif // SANITIZER_SUPPORTS_WEAK_HOOKS return 0; } @@ -216,6 +211,17 @@ class InternalSymbolizer { static const int kBufferSize = 16 * 1024; char buffer_[kBufferSize]; }; +#else // SANITIZER_SUPPORTS_WEAK_HOOKS + +class InternalSymbolizer { + public: + static InternalSymbolizer *get() { return 0; } + char *SendCommand(bool is_data, const char *module_name, uptr module_offset) { + return 0; + } +}; + +#endif // SANITIZER_SUPPORTS_WEAK_HOOKS class Symbolizer { public: |

