[compiler-rt] r270624 - [esan] Add compilation unit init/exit routines.
Derek Bruening via llvm-commits
llvm-commits at lists.llvm.org
Tue May 24 15:22:21 PDT 2016
Author: bruening
Date: Tue May 24 17:22:20 2016
New Revision: 270624
URL: http://llvm.org/viewvc/llvm-project?rev=270624&view=rev
Log:
[esan] Add compilation unit init/exit routines.
Summary:
Adds processCompilationUnitInit and processCompilationUnitExit
for compilation unit init/exit.
Adds a tool-specific argument passed to esan_init.
Adds the dtor and esan_exit called from the dtor.
A test will be added separately (adding it here results in failure until
the corresponding compilation patch is in place).
Reviewers: aizatsky
Subscribers: kubabrecka, bruening, kcc, vitalybuka, eugenis, llvm-commits
Differential Revision: http://reviews.llvm.org/D20486
Modified:
compiler-rt/trunk/lib/esan/esan.cpp
compiler-rt/trunk/lib/esan/esan.h
compiler-rt/trunk/lib/esan/esan.syms.extra
compiler-rt/trunk/lib/esan/esan_interface.cpp
compiler-rt/trunk/lib/esan/esan_interface_internal.h
Modified: compiler-rt/trunk/lib/esan/esan.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/esan/esan.cpp?rev=270624&r1=270623&r2=270624&view=diff
==============================================================================
--- compiler-rt/trunk/lib/esan/esan.cpp (original)
+++ compiler-rt/trunk/lib/esan/esan.cpp Tue May 24 17:22:20 2016
@@ -179,4 +179,14 @@ int finalizeLibrary() {
return 0;
}
+void processCompilationUnitInit(void *Ptr) {
+ VPrintf(2, "in esan::%s\n", __FUNCTION__);
+}
+
+// This is called when the containing module is unloaded.
+// For the main executable module, this is called after finalizeLibrary.
+void processCompilationUnitExit(void *Ptr) {
+ VPrintf(2, "in esan::%s\n", __FUNCTION__);
+}
+
} // namespace __esan
Modified: compiler-rt/trunk/lib/esan/esan.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/esan/esan.h?rev=270624&r1=270623&r2=270624&view=diff
==============================================================================
--- compiler-rt/trunk/lib/esan/esan.h (original)
+++ compiler-rt/trunk/lib/esan/esan.h Tue May 24 17:22:20 2016
@@ -37,6 +37,10 @@ extern ToolType WhichTool;
void initializeLibrary(ToolType Tool);
int finalizeLibrary();
+// Esan creates the variable per tool per compilation unit at compile time
+// and passes its pointer Ptr to the runtime library.
+void processCompilationUnitInit(void *Ptr);
+void processCompilationUnitExit(void *Ptr);
void processRangeAccess(uptr PC, uptr Addr, int Size, bool IsWrite);
void initializeInterceptors();
Modified: compiler-rt/trunk/lib/esan/esan.syms.extra
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/esan/esan.syms.extra?rev=270624&r1=270623&r2=270624&view=diff
==============================================================================
--- compiler-rt/trunk/lib/esan/esan.syms.extra (original)
+++ compiler-rt/trunk/lib/esan/esan.syms.extra Tue May 24 17:22:20 2016
@@ -1,3 +1,4 @@
__esan_init
+__esan_exit
__esan_aligned*
__esan_unaligned*
Modified: compiler-rt/trunk/lib/esan/esan_interface.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/esan/esan_interface.cpp?rev=270624&r1=270623&r2=270624&view=diff
==============================================================================
--- compiler-rt/trunk/lib/esan/esan_interface.cpp (original)
+++ compiler-rt/trunk/lib/esan/esan_interface.cpp Tue May 24 17:22:20 2016
@@ -17,8 +17,14 @@
using namespace __esan; // NOLINT
-void __esan_init(ToolType Tool) {
+void __esan_init(ToolType Tool, void *Ptr) {
+ WhichTool = Tool;
initializeLibrary(Tool);
+ processCompilationUnitInit(Ptr);
+}
+
+void __esan_exit(void *Ptr) {
+ processCompilationUnitExit(Ptr);
}
void __esan_aligned_load1(void *Addr) {
Modified: compiler-rt/trunk/lib/esan/esan_interface_internal.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/esan/esan_interface_internal.h?rev=270624&r1=270623&r2=270624&view=diff
==============================================================================
--- compiler-rt/trunk/lib/esan/esan_interface_internal.h (original)
+++ compiler-rt/trunk/lib/esan/esan_interface_internal.h Tue May 24 17:22:20 2016
@@ -32,7 +32,8 @@ typedef enum Type : u32 {
// This function should be called at the very beginning of the process,
// before any instrumented code is executed and before any call to malloc.
-SANITIZER_INTERFACE_ATTRIBUTE void __esan_init(ToolType Tool);
+SANITIZER_INTERFACE_ATTRIBUTE void __esan_init(ToolType Tool, void *Ptr);
+SANITIZER_INTERFACE_ATTRIBUTE void __esan_exit(void *Ptr);
// The instrumentation module will insert a call to one of these routines prior
// to each load and store instruction for which we do not have "fastpath"
More information about the llvm-commits
mailing list