Index: lib/esan/cache_frag.cpp =================================================================== --- lib/esan/cache_frag.cpp +++ lib/esan/cache_frag.cpp @@ -16,14 +16,27 @@ namespace __esan { +// This should be kept consistent with LLVM's EfficiencySanitizer CacheFragType. +// The tool-specific information per compilation unit (module). +struct CacheFragType { + ToolType WhichTool; + const char *UnitName; +}; + //===-- Init/exit functions -----------------------------------------------===// void processCacheFragCompilationUnitInit(void *Ptr) { - VPrintf(2, "in esan::%s\n", __FUNCTION__); + CacheFragType *CacheFrag = (CacheFragType *)Ptr; + if (CacheFrag->WhichTool != WhichTool) + return; + VPrintf(2, "in esan::%s: %s\n", __FUNCTION__, CacheFrag->UnitName); } void processCacheFragCompilationUnitExit(void *Ptr) { - VPrintf(2, "in esan::%s\n", __FUNCTION__); + CacheFragType *CacheFrag = (CacheFragType *)Ptr; + if (CacheFrag->WhichTool != WhichTool) + return; + VPrintf(2, "in esan::%s: %s\n", __FUNCTION__, CacheFrag->UnitName); } void initializeCacheFrag() { Index: test/esan/TestCases/struct-simple.cpp =================================================================== --- test/esan/TestCases/struct-simple.cpp +++ test/esan/TestCases/struct-simple.cpp @@ -28,17 +28,17 @@ // CHECK: in esan::initializeLibrary // CHECK-NEXT: in esan::initializeCacheFrag // CHECK: in esan::processCompilationUnitInit - // CHECK-NEXT: in esan::processCacheFragCompilationUnitInit + // CHECK-NEXT: in esan::processCacheFragCompilationUnitInit: {{.*}}struct-simple.cpp // CHECK-NEXT: in esan::processCompilationUnitInit - // CHECK-NEXT: in esan::processCacheFragCompilationUnitInit + // CHECK-NEXT: in esan::processCacheFragCompilationUnitInit: {{.*}}struct-simple.cpp part(); return 0; // CHECK: in esan::finalizeLibrary // CHECK-NEXT: in esan::finalizeCacheFrag // CHECK-NEXT: {{.*}}EfficiencySanitizer is not finished: nothing yet to report // CHECK-NEXT: in esan::processCompilationUnitExit - // CHECK-NEXT: in esan::processCacheFragCompilationUnitExit + // CHECK-NEXT: in esan::processCacheFragCompilationUnitExit: {{.*}}struct-simple.cpp // CHECK-NEXT: in esan::processCompilationUnitExit - // CHECK-NEXT: in esan::processCacheFragCompilationUnitExit + // CHECK-NEXT: in esan::processCacheFragCompilationUnitExit: {{.*}}struct-simple.cpp } #endif // MAIN