summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2013-01-24 14:01:59 +0000
committerAlexey Samsonov <samsonov@google.com>2013-01-24 14:01:59 +0000
commit971b0cd26f1ad74a6dcac8d6ee824d502da65751 (patch)
treec2cbb4e46ad04bf6d3e481882f8d7333c366ed8c
parentf4f76b1c107b66be6d9e53a97cd7c43f0f85f422 (diff)
downloadbcm5719-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.cc16
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:
OpenPOWER on IntegriCloud