[compiler-rt] r177388 - tsan: symbolizer "flush caches" functinality
Dmitry Vyukov
dvyukov at google.com
Tue Mar 19 03:23:17 PDT 2013
Author: dvyukov
Date: Tue Mar 19 05:23:17 2013
New Revision: 177388
URL: http://llvm.org/viewvc/llvm-project?rev=177388&view=rev
Log:
tsan: symbolizer "flush caches" functinality
Modified:
compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc
compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc?rev=177388&r1=177387&r2=177388&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc Tue Mar 19 05:23:17 2013
@@ -128,6 +128,9 @@ class ExternalSymbolizer {
return StartSymbolizerSubprocess(path_, &input_fd_, &output_fd_);
}
+ void Flush() {
+ }
+
private:
bool readFromSymbolizer(char *buffer, uptr max_length) {
if (max_length == 0)
@@ -184,11 +187,14 @@ bool __sanitizer_symbolize_code(const ch
SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE
bool __sanitizer_symbolize_data(const char *ModuleName, u64 ModuleOffset,
char *Buffer, int MaxLength);
+SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE
+void __sanitizer_symbolize_flush();
} // extern "C"
class InternalSymbolizer {
public:
typedef bool (*SanitizerSymbolizeFn)(const char*, u64, char*, int);
+
static InternalSymbolizer *get() {
if (__sanitizer_symbolize_code != 0 &&
__sanitizer_symbolize_data != 0) {
@@ -197,6 +203,7 @@ class InternalSymbolizer {
}
return 0;
}
+
char *SendCommand(bool is_data, const char *module_name, uptr module_offset) {
SanitizerSymbolizeFn symbolize_fn = is_data ? __sanitizer_symbolize_data
: __sanitizer_symbolize_code;
@@ -205,6 +212,11 @@ class InternalSymbolizer {
return 0;
}
+ void Flush() {
+ if (__sanitizer_symbolize_flush)
+ __sanitizer_symbolize_flush();
+ }
+
private:
InternalSymbolizer() { }
@@ -321,6 +333,13 @@ class Symbolizer {
return internal_symbolizer_ || external_symbolizer_;
}
+ void Flush() {
+ if (internal_symbolizer_)
+ internal_symbolizer_->Flush();
+ if (external_symbolizer_)
+ external_symbolizer_->Flush();
+ }
+
private:
char *SendCommand(bool is_data, const char *module_name, uptr module_offset) {
// First, try to use internal symbolizer.
@@ -408,4 +427,8 @@ bool IsSymbolizerAvailable() {
return symbolizer.IsSymbolizerAvailable();
}
+void FlushSymbolizer() {
+ symbolizer.Flush();
+}
+
} // namespace __sanitizer
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h?rev=177388&r1=177387&r2=177388&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h Tue Mar 19 05:23:17 2013
@@ -70,6 +70,7 @@ uptr SymbolizeCode(uptr address, Address
bool SymbolizeData(uptr address, DataInfo *info);
bool IsSymbolizerAvailable();
+void FlushSymbolizer(); // releases internal caches (if any)
// Attempts to demangle the provided C++ mangled name.
const char *Demangle(const char *Name);
More information about the llvm-commits
mailing list