Skip to content
Snippets Groups Projects
Commit 7c10f25f authored by Bruno Cardoso Lopes's avatar Bruno Cardoso Lopes
Browse files

[Modules] Remove darwin specific code to check for SystemVersion.plist

This isn't need anymore and modules options -fbuild-session-file and
-fmodules-validate-once-per-build-session already provide a sane
mechanism to validate the system headers.

rdar://problem/19767523

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300027 91177308-0d34-0410-b5e6-96231b3b80d8
parent d3992c55
No related branches found
No related tags found
No related merge requests found
...@@ -2660,29 +2660,6 @@ std::string CompilerInvocation::getModuleHash() const { ...@@ -2660,29 +2660,6 @@ std::string CompilerInvocation::getModuleHash() const {
code = ext->hashExtension(code); code = ext->hashExtension(code);
} }
// Darwin-specific hack: if we have a sysroot, use the contents and
// modification time of
// $sysroot/System/Library/CoreServices/SystemVersion.plist
// as part of the module hash.
if (!hsOpts.Sysroot.empty()) {
SmallString<128> systemVersionFile;
systemVersionFile += hsOpts.Sysroot;
llvm::sys::path::append(systemVersionFile, "System");
llvm::sys::path::append(systemVersionFile, "Library");
llvm::sys::path::append(systemVersionFile, "CoreServices");
llvm::sys::path::append(systemVersionFile, "SystemVersion.plist");
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> buffer =
llvm::MemoryBuffer::getFile(systemVersionFile);
if (buffer) {
code = hash_combine(code, buffer.get()->getBuffer());
struct stat statBuf;
if (stat(systemVersionFile.c_str(), &statBuf) == 0)
code = hash_combine(code, statBuf.st_mtime);
}
}
return llvm::APInt(64, code).toString(36, /*Signed=*/false); return llvm::APInt(64, code).toString(36, /*Signed=*/false);
} }
......
// Test checking that we're hashing a system version file in the
// module hash.
// First, build a system root.
// RUN: rm -rf %t
// RUN: mkdir -p %t/usr/include
// RUN: cp %S/Inputs/Modified/A.h %t/usr/include
// RUN: cp %S/Inputs/Modified/B.h %t/usr/include
// RUN: cp %S/Inputs/Modified/module.map %t/usr/include
// Run once with no system version file. We should end up with one module.
// RUN: %clang_cc1 -fmodules-cache-path=%t/cache -fmodules -fimplicit-module-maps -isysroot %t -I %t/usr/include %s -verify
// RUN: ls -R %t | grep -c "ModA.*pcm" | grep 1
// Add a system version file and run again. We should now have two
// module variants.
// RUN: mkdir -p %t/System/Library/CoreServices
// RUN: echo "hello" > %t/System/Library/CoreServices/SystemVersion.plist
// RUN: %clang_cc1 -fmodules-cache-path=%t/cache -fmodules -fimplicit-module-maps -isysroot %t -I %t/usr/include %s -verify
// RUN: ls -R %t | grep -c "ModA.*pcm" | grep 2
// Change the system version file and run again. We should now have three
// module variants.
// RUN: mkdir -p %t/System/Library/CoreServices
// RUN: echo "modules" > %t/System/Library/CoreServices/SystemVersion.plist
// RUN: %clang_cc1 -fmodules-cache-path=%t/cache -fmodules -fimplicit-module-maps -isysroot %t -I %t/usr/include %s -verify
// RUN: ls -R %t | grep -c "ModA.*pcm" | grep 3
// expected-no-diagnostics
@import ModA;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment