OLD | NEW |
(Empty) | |
| 1 //===- subzero/src/IceASanInstrumentation.h - AddressSanitizer --*- C++ -*-===// |
| 2 // |
| 3 // The Subzero Code Generator |
| 4 // |
| 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. |
| 7 // |
| 8 //===----------------------------------------------------------------------===// |
| 9 /// |
| 10 /// \file |
| 11 /// \brief Declares the AddressSanitizer instrumentation class. |
| 12 /// |
| 13 /// This class is responsible for inserting redzones around global and stack |
| 14 /// variables, inserting code responsible for poisoning those redzones, and |
| 15 /// performing any other instrumentation necessary to implement |
| 16 /// AddressSanitizer. |
| 17 /// |
| 18 //===----------------------------------------------------------------------===// |
| 19 |
| 20 #ifndef SUBZERO_SRC_ICEASANINSTRUMENTATION_H |
| 21 #define SUBZERO_SRC_ICEASANINSTRUMENTATION_H |
| 22 |
| 23 #include "IceGlobalInits.h" |
| 24 #include "IceInstrumentation.h" |
| 25 |
| 26 namespace Ice { |
| 27 |
| 28 class ASanInstrumentation : public Instrumentation { |
| 29 ASanInstrumentation() = delete; |
| 30 ASanInstrumentation(const ASanInstrumentation &) = delete; |
| 31 ASanInstrumentation &operator=(const ASanInstrumentation &) = delete; |
| 32 |
| 33 public: |
| 34 ASanInstrumentation(GlobalContext *Ctx) : Instrumentation(Ctx) {} |
| 35 void instrumentGlobals(VariableDeclarationList &Globals) override; |
| 36 |
| 37 private: |
| 38 std::string nextRzName(); |
| 39 VariableDeclaration *createRz(VariableDeclarationList *List, |
| 40 VariableDeclaration *RzArray, |
| 41 SizeT &RzArraySize, |
| 42 VariableDeclaration *Global); |
| 43 bool DidInsertRedZones = false; |
| 44 uint32_t RzNum = 0; |
| 45 }; |
| 46 } // end of namespace Ice |
| 47 |
| 48 #endif // SUBZERO_SRC_ICEASANINSTRUMENTATION_H |
OLD | NEW |