| Index: src/IceASanInstrumentation.h
|
| diff --git a/src/IceASanInstrumentation.h b/src/IceASanInstrumentation.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..35b97bc8151c87c90cf579673ebaa8c8b70c75e8
|
| --- /dev/null
|
| +++ b/src/IceASanInstrumentation.h
|
| @@ -0,0 +1,50 @@
|
| +//===- subzero/src/IceASanInstrumentation.h - AddressSanitizer --*- C++ -*-===//
|
| +//
|
| +// The Subzero Code Generator
|
| +//
|
| +// This file is distributed under the University of Illinois Open Source
|
| +// License. See LICENSE.TXT for details.
|
| +//
|
| +//===----------------------------------------------------------------------===//
|
| +///
|
| +/// \file
|
| +/// \brief Declares the AddressSanitizer instrumentation class.
|
| +///
|
| +/// This class is responsible for inserting redzones around global and stack
|
| +/// variables, inserting code responsible for poisoning those redzones, and
|
| +/// performing any other instrumentation necessary to implement
|
| +/// AddressSanitizer.
|
| +///
|
| +//===----------------------------------------------------------------------===//
|
| +
|
| +#ifndef SUBZERO_SRC_ICEASANINSTRUMENTATION_H
|
| +#define SUBZERO_SRC_ICEASANINSTRUMENTATION_H
|
| +
|
| +#include "IceInstrumentation.h"
|
| +
|
| +namespace Ice {
|
| +
|
| +class ASanInstrumentation : public Instrumentation {
|
| + ASanInstrumentation() = delete;
|
| + ASanInstrumentation(const ASanInstrumentation &) = delete;
|
| + ASanInstrumentation &operator=(const ASanInstrumentation &) = delete;
|
| +
|
| +public:
|
| + ASanInstrumentation(GlobalContext *Ctx)
|
| + : Instrumentation(Ctx), DidInsertRedZones(false), RzNum(0) {}
|
| + void instrumentGlobals(VariableDeclarationList &Globals) override;
|
| +
|
| +private:
|
| + std::string nextRzName();
|
| + VariableDeclaration *createRz(VariableDeclarationList *List,
|
| + VariableDeclaration *RzArray,
|
| + SizeT &RzArraySize,
|
| + VariableDeclaration *Global);
|
| + static constexpr uint32_t RzSize = 32;
|
| + static const std::string RzPrefix;
|
| + bool DidInsertRedZones;
|
| + uint32_t RzNum;
|
| +};
|
| +} // end of namespace Ice
|
| +
|
| +#endif // SUBZERO_SRC_ICEASANINSTRUMENTATION_H
|
|
|