Index: unittests/Bitcode/NaClMungeWriteErrorTests.cpp |
diff --git a/unittests/Bitcode/NaClMungeWriteErrorTests.cpp b/unittests/Bitcode/NaClMungeWriteErrorTests.cpp |
index 7bf3d6342f988495e89aa0b9b8c6f2268f43f723..f48e2801dea0d5e4d24a9b9e57e12e8d72aaf3a0 100644 |
--- a/unittests/Bitcode/NaClMungeWriteErrorTests.cpp |
+++ b/unittests/Bitcode/NaClMungeWriteErrorTests.cpp |
@@ -10,8 +10,8 @@ |
// Tests write errors for munged bitcode. |
-#include "llvm/ADT/STLExtras.h" |
-#include "llvm/Bitcode/NaCl/NaClBitcodeMunge.h" |
+#include "NaClMungeTest.h" |
+ |
#include "llvm/Bitcode/NaCl/NaClBitcodeParser.h" |
#include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h" |
@@ -19,24 +19,23 @@ |
using namespace llvm; |
-namespace { |
+namespace naclmungetest { |
// Test list of bitcode records. |
-static const uint64_t Terminator = 0x5768798008978675LL; |
- const uint64_t BitcodeRecords[] = { |
- 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, |
- 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 3, Terminator, |
- 3, naclbitc::TYPE_CODE_NUMENTRY, 2, Terminator, |
- 3, naclbitc::TYPE_CODE_VOID, Terminator, |
- 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, Terminator, |
- 0, naclbitc::BLK_CODE_EXIT, Terminator, |
- 3, naclbitc::MODULE_CODE_FUNCTION, 1, 0, 0, 0, Terminator, |
- 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, |
- 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, |
- 3, naclbitc::FUNC_CODE_INST_RET, Terminator, |
- 0, naclbitc::BLK_CODE_EXIT, Terminator, |
- 0, naclbitc::BLK_CODE_EXIT, Terminator |
- }; |
+const uint64_t BitcodeRecords[] = { |
+ 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, |
+ 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 3, Terminator, |
+ 3, naclbitc::TYPE_CODE_NUMENTRY, 2, Terminator, |
+ 3, naclbitc::TYPE_CODE_VOID, Terminator, |
+ 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, Terminator, |
+ 0, naclbitc::BLK_CODE_EXIT, Terminator, |
+ 3, naclbitc::MODULE_CODE_FUNCTION, 1, 0, 0, 0, Terminator, |
+ 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, |
+ 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, |
+ 3, naclbitc::FUNC_CODE_INST_RET, Terminator, |
+ 0, naclbitc::BLK_CODE_EXIT, Terminator, |
+ 0, naclbitc::BLK_CODE_EXIT, Terminator |
+}; |
// Expected output when bitcode records are dumped. |
const char* ExpectedDump = |
@@ -79,28 +78,17 @@ const uint64_t UseLocalRetVoidAbbrevEdits[] = { |
4, naclbitc::FUNC_CODE_INST_RET, Terminator |
}; |
-#define ARRAY_ARGS(Records) Records, array_lengthof(Records) |
- |
-#define ARRAY_ARGS_TERM(Records) ARRAY_ARGS(Records), Terminator |
- |
-std::string stringify(NaClBitcodeMunger &Munger) { |
- std::string Buffer; |
- raw_string_ostream StrBuf(Buffer); |
- Munger.getMungedBitcode().print(StrBuf); |
- return StrBuf.str(); |
-} |
- |
// Show that we can dump the bitcode records |
TEST(NaClMungeWriteErrorTests, DumpBitcodeRecords) { |
- NaClObjDumpMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClObjDumpMunger Munger(ARRAY_TERM(BitcodeRecords)); |
EXPECT_TRUE(Munger.runTest()); |
EXPECT_EQ(ExpectedDump, Munger.getTestResults()); |
} |
// Show that by default, one can't write a bad abbreviation index. |
TEST(NaClMungeWriteErrorTests, CantWriteBadAbbrevIndex) { |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
- EXPECT_FALSE(Munger.runTest(ARRAY_ARGS(AbbrevIndex4VoidTypeEdit))); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
+ EXPECT_FALSE(Munger.runTest(ARRAY(AbbrevIndex4VoidTypeEdit))); |
EXPECT_EQ( |
"Error (Block 17): Uses illegal abbreviation index: 4: [2]\n" |
"Error: Unable to generate bitcode file due to write errors\n", |
@@ -110,8 +98,8 @@ TEST(NaClMungeWriteErrorTests, CantWriteBadAbbrevIndex) { |
// Show that we can't write more local abbreviations than specified in |
// the corresponding enclosing block. |
TEST(NaClMungeWriteErrorTests, CantWriteTooManyLocalAbbreviations) { |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
- Munger.munge(ARRAY_ARGS(UseLocalRetVoidAbbrevEdits)); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
+ Munger.munge(ARRAY(UseLocalRetVoidAbbrevEdits)); |
EXPECT_EQ( |
" 1: [65535, 8, 2]\n" |
" 1: [65535, 17, 3]\n" |
@@ -138,7 +126,7 @@ TEST(NaClMungeWriteErrorTests, CantWriteTooManyLocalAbbreviations) { |
// Show what happens when there are more enter blocks then exit blocks. |
TEST(NaClMungeWriteErrorTests, CantWriteTooManyEnterBlocks) { |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
// Remove all but first two records (i.e. two enter blocks). |
NaClMungedBitcode &MungedBitcode = Munger.getMungedBitcode(); |
for (size_t i = 2; i < MungedBitcode.getBaseRecords().size(); ++i) { |
@@ -156,7 +144,7 @@ TEST(NaClMungeWriteErrorTests, CantWriteTooManyEnterBlocks) { |
// Show what happens when there are fewer enter blocks than exit |
// blocks. |
TEST(NaClMungeWriteErrorTests, CantWriteTooManyExitBlocks) { |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
// Add two exit blocks. |
NaClMungedBitcode &MungedBitcode = Munger.getMungedBitcode(); |
NaClRecordVector Values; |
@@ -174,7 +162,7 @@ TEST(NaClMungeWriteErrorTests, CantWriteTooManyExitBlocks) { |
// Show that an error occurs when writing a bitcode record that isn't |
// in any block. |
TEST(NaClMungeWriteErrorTests, CantWriteRecordOutsideBlock) { |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
NaClMungedBitcode &MungedBitcode = Munger.getMungedBitcode(); |
NaClRecordVector Values; |
Values.push_back(4); |
@@ -199,8 +187,8 @@ TEST(NaClMungerWriteErrorTests, CanWriteBlockWithMaxLimit) { |
1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, |
naclbitc::MaxAbbrevWidth, Terminator |
}; |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
- EXPECT_TRUE(Munger.runTest(ARRAY_ARGS(Edit))); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
+ EXPECT_TRUE(Munger.runTest(ARRAY(Edit))); |
EXPECT_EQ( |
" 1: [65535, 8, 32]\n" |
" 1: [65535, 17, 3]\n" |
@@ -226,8 +214,8 @@ TEST(NaClMungerWriteErrorTests, CantWriteBlockWithBadBitLimit) { |
1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, |
naclbitc::MaxAbbrevWidth + 1, Terminator |
}; |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
- EXPECT_FALSE(Munger.runTest(ARRAY_ARGS(Edit))); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
+ EXPECT_FALSE(Munger.runTest(ARRAY(Edit))); |
EXPECT_EQ( |
"Error (Block unknown): Block index bit limit 33 invalid. Must be in" |
" [2..32]: 1: [65535, 8, 33]\n" |
@@ -242,8 +230,8 @@ TEST(NaClMungerWriteErrorTests, CantWriteBlockWithLargeBlockID) { |
0, NaClMungedBitcode::Replace, |
1, naclbitc::BLK_CODE_ENTER, (uint64_t)1 << 33, 2, Terminator |
}; |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
- EXPECT_FALSE(Munger.runTest(ARRAY_ARGS(Edit))); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
+ EXPECT_FALSE(Munger.runTest(ARRAY(Edit))); |
EXPECT_EQ( |
"Error (Block unknown): Block id must be <= 4294967295: 1:" |
" [65535, 8589934592, 2]\n" |
@@ -254,11 +242,11 @@ TEST(NaClMungerWriteErrorTests, CantWriteBlockWithLargeBlockID) { |
// Show that writing successfully writes out an illegal abbreviation |
// index, and then the parser fails to parse that illegal abbreviation. |
TEST(MyNaClMungerWriteErrorTests, DieOnWriteBadAbbreviationIndex) { |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
Munger.setWriteBadAbbrevIndex(true); |
Munger.setRunAsDeathTest(true); |
EXPECT_DEATH( |
- Munger.runTest(ARRAY_ARGS(AbbrevIndex4VoidTypeEdit)), |
+ Munger.runTest(ARRAY(AbbrevIndex4VoidTypeEdit)), |
".*" |
// Report problem while writing. |
"Error \\(Block 17\\)\\: Uses illegal abbreviation index\\: 4\\: \\[2\\]" |
@@ -274,10 +262,10 @@ TEST(MyNaClMungerWriteErrorTests, DieOnWriteBadAbbreviationIndex) { |
// Show that error recovery works when writing an illegal abbreviation |
// index. Show success by parsing fixed bitcode. |
TEST(NaClMungeWriteErrorTests, RecoverWhenParsingBadAbbrevIndex) { |
- NaClParseBitcodeMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClParseBitcodeMunger Munger(ARRAY_TERM(BitcodeRecords)); |
Munger.setTryToRecoverOnWrite(true); |
EXPECT_TRUE( |
- Munger.runTest(ARRAY_ARGS(AbbrevIndex4VoidTypeEdit), true)); |
+ Munger.runTest(ARRAY(AbbrevIndex4VoidTypeEdit), true)); |
EXPECT_EQ( |
"Error (Block 17): Uses illegal abbreviation index: 4: [2]\n" |
"Successful parse!\n", |
@@ -287,9 +275,9 @@ TEST(NaClMungeWriteErrorTests, RecoverWhenParsingBadAbbrevIndex) { |
// Show that error recovery works when writing an illegal abbreviation |
// index. Show success by Dumping fixed bitcode. |
TEST(NaClMungeWriteErrorTests, RecoverWhenParsingBadAbbreviationIndex) { |
- NaClObjDumpMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClObjDumpMunger Munger(ARRAY_TERM(BitcodeRecords)); |
Munger.setTryToRecoverOnWrite(true); |
- EXPECT_TRUE(Munger.runTest(ARRAY_ARGS(AbbrevIndex4VoidTypeEdit))); |
+ EXPECT_TRUE(Munger.runTest(ARRAY(AbbrevIndex4VoidTypeEdit))); |
std::string Results( |
"Error (Block 17): Uses illegal abbreviation index: 4: [2]\n"); |
Results.append(ExpectedDump); |
@@ -301,9 +289,9 @@ TEST(NaClMungeWriteErrorTests, RecoverWhenParsingBadAbbreviationIndex) { |
// in the corresponding enter block. Show success by dumping the fixed |
// bitcode. |
TEST(NaClMungeWriteErrorTests, RecoverTooManyLocalAbbreviations) { |
- NaClObjDumpMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClObjDumpMunger Munger(ARRAY_TERM(BitcodeRecords)); |
Munger.setTryToRecoverOnWrite(true); |
- Munger.munge(ARRAY_ARGS(UseLocalRetVoidAbbrevEdits)); |
+ Munger.munge(ARRAY(UseLocalRetVoidAbbrevEdits)); |
EXPECT_TRUE(Munger.runTest()); |
std::string Results( |
@@ -320,7 +308,7 @@ TEST(NaClMungeWriteErrorTests, RecoverTooManyLocalAbbreviations) { |
// enter blocks than exit blocks. Show success by dumping fixed |
// bitcode. |
TEST(NaClMungeWriteErrorTests, RecoverTooManyEnterBlocks) { |
- NaClObjDumpMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClObjDumpMunger Munger(ARRAY_TERM(BitcodeRecords)); |
// Remove all but first two records (i.e. two enter blocks). |
NaClMungedBitcode &MungedBitcode = Munger.getMungedBitcode(); |
for (size_t i = 2; i < MungedBitcode.getBaseRecords().size(); ++i) { |
@@ -347,7 +335,7 @@ TEST(NaClMungeWriteErrorTests, RecoverTooManyEnterBlocks) { |
// enter blocks than exit blocks. Show success by dumping the fixed |
// bitcode. |
TEST(NaClMungeWriteErrorTests, RecoverTooManyExitBlocks) { |
- NaClObjDumpMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClObjDumpMunger Munger(ARRAY_TERM(BitcodeRecords)); |
// Add two exit blocks. |
NaClMungedBitcode &MungedBitcode = Munger.getMungedBitcode(); |
NaClRecordVector Values; |
@@ -369,7 +357,7 @@ TEST(NaClMungeWriteErrorTests, RecoverTooManyExitBlocks) { |
// Show that error recovery works when writing a bitcode record that |
// isn't in any block. Show success by showing fixed bitcode records. |
TEST(NaClMungeWriteErrorTests, RecoverWriteRecordOutsideBlock) { |
- NaClWriteMunger Munger(ARRAY_ARGS_TERM(BitcodeRecords)); |
+ NaClWriteMunger Munger(ARRAY_TERM(BitcodeRecords)); |
NaClMungedBitcode &MungedBitcode = Munger.getMungedBitcode(); |
NaClRecordVector Values; |
Values.push_back(4); |
@@ -401,4 +389,4 @@ TEST(NaClMungeWriteErrorTests, RecoverWriteRecordOutsideBlock) { |
Munger.getTestResults()); |
} |
-} // end of anonymous namespace. |
+} // end of namespace naclmungetest |