| //===- BitcodeMunge.h - Subzero Bitcode Munger ------------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // Test harness for testing malformed bitcode files in Subzero. Uses NaCl's | |
| // bitcode munger to do this. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef SUBZERO_UNITTEST_BITCODEMUNGE_H | |
| #define SUBZERO_UNITTEST_BITCODEMUNGE_H | |
| #pragma clang diagnostic push | |
| #pragma clang diagnostic ignored "-Wunused-parameter" | |
| #include "llvm/Bitcode/NaCl/NaClBitcodeMunge.h" | |
| #pragma clang diagnostic pop | |
| #include "IceClFlags.h" | |
| #include "IceGlobalContext.h" | |
| namespace IceTest { | |
| // Class to run tests on Subzero's bitcode parser. Runs a Subzero | |
| // translation, using (possibly) edited bitcode record values. For | |
| // more details on how to represent the input arrays, see | |
| // NaClBitcodeMunge.h. | |
| class SubzeroBitcodeMunger : public llvm::NaClBitcodeMunger { | |
| public: | |
| SubzeroBitcodeMunger(const uint64_t Records[], size_t RecordSize, | |
| uint64_t RecordTerminator) | |
| : llvm::NaClBitcodeMunger(Records, RecordSize, RecordTerminator) { | |
| resetMungeFlags(); | |
| } | |
| /// Runs PNaClTranslator to parse and (optionally) translate bitcode records | |
| /// (with defined record Munges), and puts output into DumpResults. Returns | |
| /// true if parse is successful. | |
| bool runTest(const uint64_t Munges[], size_t MungeSize, | |
| bool DisableTranslation = false); | |
| /// Same as above, but without any edits. | |
| bool runTest(bool DisableTranslation = false) { | |
| uint64_t NoMunges[] = {0}; | |
| return runTest(NoMunges, 0, DisableTranslation); | |
| } | |
| private: | |
| void resetMungeFlags(); | |
| }; | |
| } // end of namespace IceTest | |
| #endif // SUBZERO_UNITTEST_BITCODEMUNGE_H |