Эх сурвалжийг харах

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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162076 91177308-0d34-0410-b5e6-96231b3b80d8

Richard Smith 13 жил өмнө
parent
commit
c141b51d78

+ 1 - 1
include/clang/Lex/PTHManager.h

@@ -101,7 +101,7 @@ class PTHManager : public IdentifierInfoLookup {
 
 
 public:
 public:
   // The current PTH version.
   // The current PTH version.
-  enum { Version = 9 };
+  enum { Version = 10 };
 
 
   ~PTHManager();
   ~PTHManager();
 
 

+ 1 - 1
lib/Frontend/CacheTokens.cpp

@@ -447,7 +447,7 @@ Offset PTHWriter::EmitCachedSpellings() {
 
 
 void PTHWriter::GeneratePTH(const std::string &MainFile) {
 void PTHWriter::GeneratePTH(const std::string &MainFile) {
   // Generate the prologue.
   // Generate the prologue.
-  Out << "cfe-pth";
+  Out << "cfe-pth" << '\0';
   Emit32(PTHManager::Version);
   Emit32(PTHManager::Version);
 
 
   // Leave 4 words for the prologue.
   // Leave 4 words for the prologue.

+ 3 - 3
lib/Lex/PTHLexer.cpp

@@ -452,14 +452,14 @@ PTHManager *PTHManager::Create(const std::string &file,
   const unsigned char *BufEnd = (unsigned char*)File->getBufferEnd();
   const unsigned char *BufEnd = (unsigned char*)File->getBufferEnd();
 
 
   // Check the prologue of the file.
   // 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;
     Diags.Report(diag::err_invalid_pth_file) << file;
     return 0;
     return 0;
   }
   }
 
 
   // Read the PTH version.
   // 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);
   unsigned Version = ReadLE32(p);
 
 
   if (Version < PTHManager::Version) {
   if (Version < PTHManager::Version) {