diff options
Diffstat (limited to 'lib/esan')
-rw-r--r-- | lib/esan/cache_frag.cpp | 24 | ||||
-rw-r--r-- | lib/esan/esan.cpp | 6 |
2 files changed, 28 insertions, 2 deletions
diff --git a/lib/esan/cache_frag.cpp b/lib/esan/cache_frag.cpp index 1ab8699b9..da168dc0c 100644 --- a/lib/esan/cache_frag.cpp +++ b/lib/esan/cache_frag.cpp @@ -16,14 +16,34 @@ namespace __esan { +// This should be kept consistent with LLVM's EfficiencySanitizer StructInfo. +struct StructInfo { + const char *StructName; + u32 NumOfFields; + u64 *FieldCounters; + const char **FieldTypeNames; +}; + +// This should be kept consistent with LLVM's EfficiencySanitizer CacheFragInfo. +// The tool-specific information per compilation unit (module). +struct CacheFragInfo { + const char *UnitName; + u32 NumOfStructs; + StructInfo *Structs; +}; + //===-- Init/exit functions -----------------------------------------------===// void processCacheFragCompilationUnitInit(void *Ptr) { - VPrintf(2, "in esan::%s\n", __FUNCTION__); + CacheFragInfo *CacheFrag = (CacheFragInfo *)Ptr; + VPrintf(2, "in esan::%s: %s with %u class(es)/struct(s)\n", + __FUNCTION__, CacheFrag->UnitName, CacheFrag->NumOfStructs); } void processCacheFragCompilationUnitExit(void *Ptr) { - VPrintf(2, "in esan::%s\n", __FUNCTION__); + CacheFragInfo *CacheFrag = (CacheFragInfo *)Ptr; + VPrintf(2, "in esan::%s: %s with %u class(es)/struct(s)\n", + __FUNCTION__, CacheFrag->UnitName, CacheFrag->NumOfStructs); } void initializeCacheFrag() { diff --git a/lib/esan/esan.cpp b/lib/esan/esan.cpp index f0a496518..1f116da08 100644 --- a/lib/esan/esan.cpp +++ b/lib/esan/esan.cpp @@ -219,7 +219,10 @@ int finalizeLibrary() { void processCompilationUnitInit(void *Ptr) { VPrintf(2, "in esan::%s\n", __FUNCTION__); if (WhichTool == ESAN_CacheFrag) { + DCHECK(Ptr != nullptr); processCacheFragCompilationUnitInit(Ptr); + } else { + DCHECK(Ptr == nullptr); } } @@ -228,7 +231,10 @@ void processCompilationUnitInit(void *Ptr) { void processCompilationUnitExit(void *Ptr) { VPrintf(2, "in esan::%s\n", __FUNCTION__); if (WhichTool == ESAN_CacheFrag) { + DCHECK(Ptr != nullptr); processCacheFragCompilationUnitExit(Ptr); + } else { + DCHECK(Ptr == nullptr); } } |