diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-08-17 03:55:43 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-08-17 03:55:43 +0000 |
| commit | 2683b4c0fdbd3c1e2320dd0ce8810f313dafe197 (patch) | |
| tree | 5b084565d530d83564b3919d3283ed9a2e610bee | |
| parent | 2fe6aab7881fb7701bd8ed45428e9748419585a5 (diff) | |
| download | bcm5719-llvm-2683b4c0fdbd3c1e2320dd0ce8810f313dafe197.tar.gz bcm5719-llvm-2683b4c0fdbd3c1e2320dd0ce8810f313dafe197.zip | |
Switch PTH format from a 7 byte magic number to an 8 byte one, to avoid
misaligned reads throughout the file. Bump PTH format version to 10.
llvm-svn: 162076
| -rw-r--r-- | clang/include/clang/Lex/PTHManager.h | 2 | ||||
| -rw-r--r-- | clang/lib/Frontend/CacheTokens.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Lex/PTHLexer.cpp | 6 |
3 files changed, 5 insertions, 5 deletions
diff --git a/clang/include/clang/Lex/PTHManager.h b/clang/include/clang/Lex/PTHManager.h index 25a49038a86..44f9ab39f32 100644 --- a/clang/include/clang/Lex/PTHManager.h +++ b/clang/include/clang/Lex/PTHManager.h @@ -101,7 +101,7 @@ class PTHManager : public IdentifierInfoLookup { public: // The current PTH version. - enum { Version = 9 }; + enum { Version = 10 }; ~PTHManager(); diff --git a/clang/lib/Frontend/CacheTokens.cpp b/clang/lib/Frontend/CacheTokens.cpp index 58a6b8d19e1..3e666132dc8 100644 --- a/clang/lib/Frontend/CacheTokens.cpp +++ b/clang/lib/Frontend/CacheTokens.cpp @@ -447,7 +447,7 @@ Offset PTHWriter::EmitCachedSpellings() { void PTHWriter::GeneratePTH(const std::string &MainFile) { // Generate the prologue. - Out << "cfe-pth"; + Out << "cfe-pth" << '\0'; Emit32(PTHManager::Version); // Leave 4 words for the prologue. diff --git a/clang/lib/Lex/PTHLexer.cpp b/clang/lib/Lex/PTHLexer.cpp index f104f967083..67738e90751 100644 --- a/clang/lib/Lex/PTHLexer.cpp +++ b/clang/lib/Lex/PTHLexer.cpp @@ -452,14 +452,14 @@ PTHManager *PTHManager::Create(const std::string &file, const unsigned char *BufEnd = (unsigned char*)File->getBufferEnd(); // Check the prologue of the file. - if ((BufEnd - BufBeg) < (signed)(sizeof("cfe-pth") + 3 + 4) || - memcmp(BufBeg, "cfe-pth", sizeof("cfe-pth") - 1) != 0) { + if ((BufEnd - BufBeg) < (signed)(sizeof("cfe-pth") + 4 + 4) || + memcmp(BufBeg, "cfe-pth", sizeof("cfe-pth")) != 0) { Diags.Report(diag::err_invalid_pth_file) << file; return 0; } // Read the PTH version. - const unsigned char *p = BufBeg + (sizeof("cfe-pth") - 1); + const unsigned char *p = BufBeg + (sizeof("cfe-pth")); unsigned Version = ReadLE32(p); if (Version < PTHManager::Version) { |

