Yes, but because of a related but different issue. The same as here: http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/10026
I've been trying to figure it out but it's been hard without a Unix system available. I'll keep investigating and revert later tonight in case I can't guess it. On Mon, Feb 22, 2016 at 7:08 PM, Sean Silva <chisophu...@gmail.com> wrote: > The bot is still red: > http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast > > On Mon, Feb 22, 2016 at 6:48 PM, Bruno Cardoso Lopes > <bruno.card...@gmail.com> wrote: >> >> Hi Sean, >> >> This is hopefully fixed in r261556. >> >> On Mon, Feb 22, 2016 at 5:45 PM, Sean Silva <chisophu...@gmail.com> wrote: >> > This or r261551 seem to be causing a build failure: >> > >> > http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/527 >> > >> > -- Sean SIlva >> > >> > On Mon, Feb 22, 2016 at 10:41 AM, Bruno Cardoso Lopes via cfe-commits >> > <cfe-commits@lists.llvm.org> wrote: >> >> >> >> Author: bruno >> >> Date: Mon Feb 22 12:41:09 2016 >> >> New Revision: 261552 >> >> >> >> URL: http://llvm.org/viewvc/llvm-project?rev=261552&view=rev >> >> Log: >> >> [VFS] Add 'overlay-relative' field to YAML files >> >> >> >> The VFS overlay mapping between virtual paths and real paths is done >> >> through >> >> the 'external-contents' entries in YAML files, which contains hardcoded >> >> paths >> >> to the real files. >> >> >> >> When a module compilation crashes, headers are dumped into >> >> <name>.cache/vfs >> >> directory and are mapped via the <name>.cache/vfs/vfs.yaml. The script >> >> generated for reproduction uses -ivfsoverlay pointing to file to gather >> >> the >> >> mapping between virtual paths and files inside <name>.cache/vfs. >> >> Currently, we >> >> are only capable of reproducing such crashes in the same machine as >> >> they >> >> happen, because of the hardcoded paths in 'external-contents'. >> >> >> >> To be able to reproduce a crash in another machine, this patch >> >> introduces >> >> a new >> >> option in the VFS yaml file called 'overlay-relative'. When it's equal >> >> to >> >> 'true' it means that the provided path to the YAML file through the >> >> -ivfsoverlay option should also be used to prefix the final path for >> >> every >> >> 'external-contents'. >> >> >> >> Example, given the invocation snippet "... -ivfsoverlay >> >> <name>.cache/vfs/vfs.yaml" and the following entry in the yaml file: >> >> >> >> "overlay-relative": "true", >> >> "roots": [ >> >> ... >> >> "type": "directory", >> >> "name": "/usr/include", >> >> "contents": [ >> >> { >> >> "type": "file", >> >> "name": "stdio.h", >> >> "external-contents": "/usr/include/stdio.h" >> >> }, >> >> ... >> >> >> >> Here, a file manager request for virtual "/usr/include/stdio.h", that >> >> will >> >> map >> >> into real path >> >> "/<absolute_path_to>/<name>.cache/vfs/usr/include/stdio.h. >> >> >> >> This is a useful feature for debugging module crashes in machines other >> >> than >> >> the one where the error happened. >> >> >> >> Differential Revision: http://reviews.llvm.org/D17457 >> >> >> >> rdar://problem/24499339 >> >> >> >> Added: >> >> cfe/trunk/test/Modules/crash-vfs-relative-overlay.m >> >> - copied, changed from r261551, >> >> cfe/trunk/test/Modules/crash-vfs-path-traversal.m >> >> Modified: >> >> cfe/trunk/include/clang/Basic/VirtualFileSystem.h >> >> cfe/trunk/lib/Basic/VirtualFileSystem.cpp >> >> cfe/trunk/lib/Frontend/CompilerInvocation.cpp >> >> cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp >> >> cfe/trunk/test/Modules/crash-vfs-path-symlink-component.m >> >> cfe/trunk/test/Modules/crash-vfs-path-traversal.m >> >> >> >> Modified: cfe/trunk/include/clang/Basic/VirtualFileSystem.h >> >> URL: >> >> >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/VirtualFileSystem.h?rev=261552&r1=261551&r2=261552&view=diff >> >> >> >> >> >> ============================================================================== >> >> --- cfe/trunk/include/clang/Basic/VirtualFileSystem.h (original) >> >> +++ cfe/trunk/include/clang/Basic/VirtualFileSystem.h Mon Feb 22 >> >> 12:41:09 >> >> 2016 >> >> @@ -310,6 +310,7 @@ llvm::sys::fs::UniqueID getNextVirtualUn >> >> IntrusiveRefCntPtr<FileSystem> >> >> getVFSFromYAML(std::unique_ptr<llvm::MemoryBuffer> Buffer, >> >> llvm::SourceMgr::DiagHandlerTy DiagHandler, >> >> + StringRef YAMLFilePath, >> >> void *DiagContext = nullptr, >> >> IntrusiveRefCntPtr<FileSystem> ExternalFS = >> >> getRealFileSystem()); >> >> >> >> @@ -323,6 +324,8 @@ struct YAMLVFSEntry { >> >> class YAMLVFSWriter { >> >> std::vector<YAMLVFSEntry> Mappings; >> >> Optional<bool> IsCaseSensitive; >> >> + Optional<bool> IsOverlayRelative; >> >> + std::string OverlayDir; >> >> >> >> public: >> >> YAMLVFSWriter() {} >> >> @@ -330,6 +333,11 @@ public: >> >> void setCaseSensitivity(bool CaseSensitive) { >> >> IsCaseSensitive = CaseSensitive; >> >> } >> >> + void setOverlayDir(StringRef OverlayDirectory) { >> >> + IsOverlayRelative = true; >> >> + OverlayDir.assign(OverlayDirectory.str()); >> >> + } >> >> + >> >> void write(llvm::raw_ostream &OS); >> >> }; >> >> >> >> >> >> Modified: cfe/trunk/lib/Basic/VirtualFileSystem.cpp >> >> URL: >> >> >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/VirtualFileSystem.cpp?rev=261552&r1=261551&r2=261552&view=diff >> >> >> >> >> >> ============================================================================== >> >> --- cfe/trunk/lib/Basic/VirtualFileSystem.cpp (original) >> >> +++ cfe/trunk/lib/Basic/VirtualFileSystem.cpp Mon Feb 22 12:41:09 2016 >> >> @@ -790,6 +790,7 @@ public: >> >> /// All configuration options are optional. >> >> /// 'case-sensitive': <boolean, default=true> >> >> /// 'use-external-names': <boolean, default=true> >> >> +/// 'overlay-relative': <boolean, default=false> >> >> /// >> >> /// Virtual directories are represented as >> >> /// \verbatim >> >> @@ -832,6 +833,10 @@ class RedirectingFileSystem : public vfs >> >> std::vector<std::unique_ptr<Entry>> Roots; >> >> /// \brief The file system to use for external references. >> >> IntrusiveRefCntPtr<FileSystem> ExternalFS; >> >> + /// If IsRelativeOverlay is set, this represents the directory >> >> + /// path that should be prefixed to each 'external-contents' entry >> >> + /// when reading from YAML files. >> >> + std::string ExternalContentsPrefixDir; >> >> >> >> /// @name Configuration >> >> /// @{ >> >> @@ -841,6 +846,10 @@ class RedirectingFileSystem : public vfs >> >> /// Currently, case-insensitive matching only works correctly with >> >> ASCII. >> >> bool CaseSensitive; >> >> >> >> + /// IsRelativeOverlay marks whether a IsExternalContentsPrefixDir >> >> path >> >> must >> >> + /// be prefixed in every 'external-contents' when reading from YAML >> >> files. >> >> + bool IsRelativeOverlay = false; >> >> + >> >> /// \brief Whether to use to use the value of 'external-contents' >> >> for >> >> the >> >> /// names of files. This global value is overridable on a per-file >> >> basis. >> >> bool UseExternalNames; >> >> @@ -868,8 +877,8 @@ public: >> >> /// returns a virtual file system representing its contents. >> >> static RedirectingFileSystem * >> >> create(std::unique_ptr<MemoryBuffer> Buffer, >> >> - SourceMgr::DiagHandlerTy DiagHandler, void *DiagContext, >> >> - IntrusiveRefCntPtr<FileSystem> ExternalFS); >> >> + SourceMgr::DiagHandlerTy DiagHandler, StringRef YAMLFilePath, >> >> + void *DiagContext, IntrusiveRefCntPtr<FileSystem> >> >> ExternalFS); >> >> >> >> ErrorOr<Status> status(const Twine &Path) override; >> >> ErrorOr<std::unique_ptr<File>> openFileForRead(const Twine &Path) >> >> override; >> >> @@ -902,6 +911,15 @@ public: >> >> return >> >> directory_iterator(std::make_shared<VFSFromYamlDirIterImpl>(Dir, >> >> *this, D->contents_begin(), D->contents_end(), EC)); >> >> } >> >> + >> >> + void setExternalContentsPrefixDir(StringRef PrefixDir) { >> >> + ExternalContentsPrefixDir = PrefixDir.str(); >> >> + } >> >> + >> >> + StringRef getExternalContentsPrefixDir() const { >> >> + return ExternalContentsPrefixDir; >> >> + } >> >> + >> >> }; >> >> >> >> /// \brief A helper class to hold the common YAML parsing state. >> >> @@ -981,7 +999,7 @@ class RedirectingFileSystemParser { >> >> return true; >> >> } >> >> >> >> - std::unique_ptr<Entry> parseEntry(yaml::Node *N) { >> >> + std::unique_ptr<Entry> parseEntry(yaml::Node *N, >> >> RedirectingFileSystem >> >> *FS) { >> >> yaml::MappingNode *M = dyn_cast<yaml::MappingNode>(N); >> >> if (!M) { >> >> error(N, "expected mapping node for file or directory entry"); >> >> @@ -1057,7 +1075,7 @@ class RedirectingFileSystemParser { >> >> for (yaml::SequenceNode::iterator I = Contents->begin(), >> >> E = Contents->end(); >> >> I != E; ++I) { >> >> - if (std::unique_ptr<Entry> E = parseEntry(&*I)) >> >> + if (std::unique_ptr<Entry> E = parseEntry(&*I, FS)) >> >> EntryArrayContents.push_back(std::move(E)); >> >> else >> >> return nullptr; >> >> @@ -1071,12 +1089,22 @@ class RedirectingFileSystemParser { >> >> HasContents = true; >> >> if (!parseScalarString(I->getValue(), Value, Buffer)) >> >> return nullptr; >> >> - SmallString<256> Path(Value); >> >> + >> >> + SmallString<128> FullPath; >> >> + if (FS->IsRelativeOverlay) { >> >> + FullPath = FS->getExternalContentsPrefixDir(); >> >> + assert(!FullPath.empty() && >> >> + "External contents prefix directory must exist"); >> >> + llvm::sys::path::append(FullPath, Value); >> >> + } else { >> >> + FullPath = Value; >> >> + } >> >> + >> >> // Guarantee that old YAML files containing paths with ".." >> >> and >> >> "." are >> >> // properly canonicalized before read into the VFS. >> >> - Path = sys::path::remove_leading_dotslash(Path); >> >> - sys::path::remove_dots(Path, /*remove_dot_dot=*/true); >> >> - ExternalContentsPath = Path.str(); >> >> + FullPath = sys::path::remove_leading_dotslash(FullPath); >> >> + sys::path::remove_dots(FullPath, /*remove_dot_dot=*/true); >> >> + ExternalContentsPath = FullPath.str(); >> >> } else if (Key == "use-external-name") { >> >> bool Val; >> >> if (!parseScalarBool(I->getValue(), Val)) >> >> @@ -1162,6 +1190,7 @@ public: >> >> KeyStatusPair("version", true), >> >> KeyStatusPair("case-sensitive", false), >> >> KeyStatusPair("use-external-names", false), >> >> + KeyStatusPair("overlay-relative", false), >> >> KeyStatusPair("roots", true), >> >> }; >> >> >> >> @@ -1187,7 +1216,7 @@ public: >> >> >> >> for (yaml::SequenceNode::iterator I = Roots->begin(), E = >> >> Roots->end(); >> >> I != E; ++I) { >> >> - if (std::unique_ptr<Entry> E = parseEntry(&*I)) >> >> + if (std::unique_ptr<Entry> E = parseEntry(&*I, FS)) >> >> FS->Roots.push_back(std::move(E)); >> >> else >> >> return false; >> >> @@ -1213,6 +1242,9 @@ public: >> >> } else if (Key == "case-sensitive") { >> >> if (!parseScalarBool(I->getValue(), FS->CaseSensitive)) >> >> return false; >> >> + } else if (Key == "overlay-relative") { >> >> + if (!parseScalarBool(I->getValue(), FS->IsRelativeOverlay)) >> >> + return false; >> >> } else if (Key == "use-external-names") { >> >> if (!parseScalarBool(I->getValue(), FS->UseExternalNames)) >> >> return false; >> >> @@ -1233,9 +1265,11 @@ public: >> >> >> >> Entry::~Entry() = default; >> >> >> >> -RedirectingFileSystem *RedirectingFileSystem::create( >> >> - std::unique_ptr<MemoryBuffer> Buffer, SourceMgr::DiagHandlerTy >> >> DiagHandler, >> >> - void *DiagContext, IntrusiveRefCntPtr<FileSystem> ExternalFS) { >> >> +RedirectingFileSystem * >> >> +RedirectingFileSystem::create(std::unique_ptr<MemoryBuffer> Buffer, >> >> + SourceMgr::DiagHandlerTy DiagHandler, >> >> + StringRef YAMLFilePath, void >> >> *DiagContext, >> >> + IntrusiveRefCntPtr<FileSystem> >> >> ExternalFS) >> >> { >> >> >> >> SourceMgr SM; >> >> yaml::Stream Stream(Buffer->getMemBufferRef(), SM); >> >> @@ -1252,6 +1286,23 @@ RedirectingFileSystem *RedirectingFileSy >> >> >> >> std::unique_ptr<RedirectingFileSystem> FS( >> >> new RedirectingFileSystem(ExternalFS)); >> >> + >> >> + if (!YAMLFilePath.empty()) { >> >> + // Use the YAML path from -ivfsoverlay to compute the dir to be >> >> prefixed >> >> + // to each 'external-contents' path. >> >> + // >> >> + // Example: >> >> + // -ivfsoverlay dummy.cache/vfs/vfs.yaml >> >> + // yields: >> >> + // FS->ExternalContentsPrefixDir => >> >> /<absolute_path_to>/dummy.cache/vfs >> >> + // >> >> + SmallString<256> OverlayAbsDir = >> >> sys::path::parent_path(YAMLFilePath); >> >> + std::error_code EC = llvm::sys::fs::make_absolute(OverlayAbsDir); >> >> + assert(!EC && "Overlay dir final path must be absolute"); >> >> + (void)EC; >> >> + FS->setExternalContentsPrefixDir(OverlayAbsDir); >> >> + } >> >> + >> >> if (!P.parse(Root, FS.get())) >> >> return nullptr; >> >> >> >> @@ -1396,10 +1447,12 @@ RedirectingFileSystem::openFileForRead(c >> >> >> >> IntrusiveRefCntPtr<FileSystem> >> >> vfs::getVFSFromYAML(std::unique_ptr<MemoryBuffer> Buffer, >> >> - SourceMgr::DiagHandlerTy DiagHandler, void >> >> *DiagContext, >> >> + SourceMgr::DiagHandlerTy DiagHandler, >> >> + StringRef YAMLFilePath, >> >> + void *DiagContext, >> >> IntrusiveRefCntPtr<FileSystem> ExternalFS) { >> >> return RedirectingFileSystem::create(std::move(Buffer), DiagHandler, >> >> - DiagContext, ExternalFS); >> >> + YAMLFilePath, DiagContext, >> >> ExternalFS); >> >> } >> >> >> >> UniqueID vfs::getNextVirtualUniqueID() { >> >> @@ -1431,7 +1484,8 @@ class JSONWriter { >> >> >> >> public: >> >> JSONWriter(llvm::raw_ostream &OS) : OS(OS) {} >> >> - void write(ArrayRef<YAMLVFSEntry> Entries, Optional<bool> >> >> IsCaseSensitive); >> >> + void write(ArrayRef<YAMLVFSEntry> Entries, Optional<bool> >> >> IsCaseSensitive, >> >> + Optional<bool> IsOverlayRelative, StringRef OverlayDir); >> >> }; >> >> } >> >> >> >> @@ -1484,7 +1538,9 @@ void JSONWriter::writeEntry(StringRef VP >> >> } >> >> >> >> void JSONWriter::write(ArrayRef<YAMLVFSEntry> Entries, >> >> - Optional<bool> IsCaseSensitive) { >> >> + Optional<bool> IsCaseSensitive, >> >> + Optional<bool> IsOverlayRelative, >> >> + StringRef OverlayDir) { >> >> using namespace llvm::sys; >> >> >> >> OS << "{\n" >> >> @@ -1492,12 +1548,27 @@ void JSONWriter::write(ArrayRef<YAMLVFSE >> >> if (IsCaseSensitive.hasValue()) >> >> OS << " 'case-sensitive': '" >> >> << (IsCaseSensitive.getValue() ? "true" : "false") << "',\n"; >> >> + bool UseOverlayRelative = false; >> >> + if (IsOverlayRelative.hasValue()) { >> >> + UseOverlayRelative = IsOverlayRelative.getValue(); >> >> + OS << " 'overlay-relative': '" >> >> + << (UseOverlayRelative ? "true" : "false") << "',\n"; >> >> + } >> >> OS << " 'roots': [\n"; >> >> >> >> if (!Entries.empty()) { >> >> const YAMLVFSEntry &Entry = Entries.front(); >> >> startDirectory(path::parent_path(Entry.VPath)); >> >> - writeEntry(path::filename(Entry.VPath), Entry.RPath); >> >> + >> >> + StringRef RPath = Entry.RPath; >> >> + if (UseOverlayRelative) { >> >> + unsigned OverlayDirLen = OverlayDir.size(); >> >> + assert(RPath.substr(0, OverlayDirLen) == OverlayDir && >> >> + "Overlay dir must be contained in RPath"); >> >> + RPath = RPath.slice(OverlayDirLen, RPath.size()); >> >> + } >> >> + >> >> + writeEntry(path::filename(Entry.VPath), RPath); >> >> >> >> for (const auto &Entry : Entries.slice(1)) { >> >> StringRef Dir = path::parent_path(Entry.VPath); >> >> @@ -1511,7 +1582,14 @@ void JSONWriter::write(ArrayRef<YAMLVFSE >> >> OS << ",\n"; >> >> startDirectory(Dir); >> >> } >> >> - writeEntry(path::filename(Entry.VPath), Entry.RPath); >> >> + StringRef RPath = Entry.RPath; >> >> + if (UseOverlayRelative) { >> >> + unsigned OverlayDirLen = OverlayDir.size(); >> >> + assert(RPath.substr(0, OverlayDirLen) == OverlayDir && >> >> + "Overlay dir must be contained in RPath"); >> >> + RPath = RPath.slice(OverlayDirLen, RPath.size()); >> >> + } >> >> + writeEntry(path::filename(Entry.VPath), RPath); >> >> } >> >> >> >> while (!DirStack.empty()) { >> >> @@ -1531,7 +1609,8 @@ void YAMLVFSWriter::write(llvm::raw_ostr >> >> return LHS.VPath < RHS.VPath; >> >> }); >> >> >> >> - JSONWriter(OS).write(Mappings, IsCaseSensitive); >> >> + JSONWriter(OS).write(Mappings, IsCaseSensitive, IsOverlayRelative, >> >> + OverlayDir); >> >> } >> >> >> >> VFSFromYamlDirIterImpl::VFSFromYamlDirIterImpl( >> >> >> >> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp >> >> URL: >> >> >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=261552&r1=261551&r2=261552&view=diff >> >> >> >> >> >> ============================================================================== >> >> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) >> >> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Mon Feb 22 12:41:09 >> >> 2016 >> >> @@ -2344,8 +2344,8 @@ createVFSFromCompilerInvocation(const Co >> >> return IntrusiveRefCntPtr<vfs::FileSystem>(); >> >> } >> >> >> >> - IntrusiveRefCntPtr<vfs::FileSystem> FS = >> >> - vfs::getVFSFromYAML(std::move(Buffer.get()), /*DiagHandler*/ >> >> nullptr); >> >> + IntrusiveRefCntPtr<vfs::FileSystem> FS = vfs::getVFSFromYAML( >> >> + std::move(Buffer.get()), /*DiagHandler*/ nullptr, File); >> >> if (!FS.get()) { >> >> Diags.Report(diag::err_invalid_vfs_overlay) << File; >> >> return IntrusiveRefCntPtr<vfs::FileSystem>(); >> >> >> >> Modified: cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp >> >> URL: >> >> >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp?rev=261552&r1=261551&r2=261552&view=diff >> >> >> >> >> >> ============================================================================== >> >> --- cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp (original) >> >> +++ cfe/trunk/lib/Frontend/ModuleDependencyCollector.cpp Mon Feb 22 >> >> 12:41:09 2016 >> >> @@ -51,6 +51,10 @@ void ModuleDependencyCollector::writeFil >> >> SmallString<256> Dest = getDest(); >> >> llvm::sys::path::append(Dest, "vfs.yaml"); >> >> >> >> + // Default to use relative overlay directories in the VFS yaml file. >> >> This >> >> + // allows crash reproducer scripts to work across machines. >> >> + VFSWriter.setOverlayDir(getDest()); >> >> + >> >> std::error_code EC; >> >> llvm::raw_fd_ostream OS(Dest, EC, llvm::sys::fs::F_Text); >> >> if (EC) { >> >> >> >> Modified: cfe/trunk/test/Modules/crash-vfs-path-symlink-component.m >> >> URL: >> >> >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/crash-vfs-path-symlink-component.m?rev=261552&r1=261551&r2=261552&view=diff >> >> >> >> >> >> ============================================================================== >> >> --- cfe/trunk/test/Modules/crash-vfs-path-symlink-component.m >> >> (original) >> >> +++ cfe/trunk/test/Modules/crash-vfs-path-symlink-component.m Mon Feb >> >> 22 >> >> 12:41:09 2016 >> >> @@ -40,21 +40,21 @@ >> >> // CHECKSH: "-ivfsoverlay" "crash-vfs-{{[^ ]*}}.cache/vfs/vfs.yaml" >> >> >> >> // CHECKYAML: 'type': 'directory' >> >> -// CHECKYAML: 'name': "{{[^ ]*}}/i/usr/include", >> >> +// CHECKYAML: 'name': "/[[PATH:.*]]/i/usr/include", >> >> // CHECKYAML-NEXT: 'contents': [ >> >> // CHECKYAML-NEXT: { >> >> // CHECKYAML-NEXT: 'type': 'file', >> >> // CHECKYAML-NEXT: 'name': "module.map", >> >> -// CHECKYAML-NEXT: 'external-contents': "{{[^ ]*}}.cache/vfs/{{[^ >> >> ]*}}/i/usr/include/module.map" >> >> +// CHECKYAML-NEXT: 'external-contents': >> >> "/[[PATH]]/i/usr/include/module.map" >> >> // CHECKYAML-NEXT: }, >> >> >> >> // CHECKYAML: 'type': 'directory' >> >> -// CHECKYAML: 'name': "{{[^ ]*}}/i/usr", >> >> +// CHECKYAML: 'name': "/[[PATH]]/i/usr", >> >> // CHECKYAML-NEXT: 'contents': [ >> >> // CHECKYAML-NEXT: { >> >> // CHECKYAML-NEXT: 'type': 'file', >> >> // CHECKYAML-NEXT: 'name': "module.map", >> >> -// CHECKYAML-NEXT: 'external-contents': "{{[^ ]*}}.cache/vfs/{{[^ >> >> ]*}}/i/usr/include/module.map" >> >> +// CHECKYAML-NEXT: 'external-contents': >> >> "/[[PATH]]/i/usr/include/module.map" >> >> // CHECKYAML-NEXT: }, >> >> >> >> // Test that by using the previous generated YAML file clang is able >> >> to >> >> find the >> >> >> >> Modified: cfe/trunk/test/Modules/crash-vfs-path-traversal.m >> >> URL: >> >> >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/crash-vfs-path-traversal.m?rev=261552&r1=261551&r2=261552&view=diff >> >> >> >> >> >> ============================================================================== >> >> --- cfe/trunk/test/Modules/crash-vfs-path-traversal.m (original) >> >> +++ cfe/trunk/test/Modules/crash-vfs-path-traversal.m Mon Feb 22 >> >> 12:41:09 >> >> 2016 >> >> @@ -35,12 +35,12 @@ >> >> // CHECKSH: "-ivfsoverlay" "crash-vfs-{{[^ ]*}}.cache/vfs/vfs.yaml" >> >> >> >> // CHECKYAML: 'type': 'directory' >> >> -// CHECKYAML: 'name': "{{[^ ]*}}/Inputs/System/usr/include", >> >> +// CHECKYAML: 'name': "/[[PATH:.*]]/Inputs/System/usr/include", >> >> // CHECKYAML-NEXT: 'contents': [ >> >> // CHECKYAML-NEXT: { >> >> // CHECKYAML-NEXT: 'type': 'file', >> >> // CHECKYAML-NEXT: 'name': "module.map", >> >> -// CHECKYAML-NEXT: 'external-contents': "{{[^ >> >> ]*}}/Inputs/System/usr/include/module.map" >> >> +// CHECKYAML-NEXT: 'external-contents': >> >> "/[[PATH]]/Inputs/System/usr/include/module.map" >> >> // CHECKYAML-NEXT: }, >> >> >> >> // Replace the paths in the YAML files with relative ".." traversals >> >> @@ -49,9 +49,10 @@ >> >> >> >> // RUN: sed -e "s@usr/include@usr/include/../include@g" \ >> >> // RUN: %t/crash-vfs-*.cache/vfs/vfs.yaml > %t/vfs.yaml >> >> +// RUN: cp %t/vfs.yaml %t/crash-vfs-*.cache/vfs/vfs.yaml >> >> // RUN: unset FORCE_CLANG_DIAGNOSTICS_CRASH >> >> // RUN: %clang -E %s -I %S/Inputs/System -isysroot %/t/i/ \ >> >> -// RUN: -ivfsoverlay %t/vfs.yaml -fmodules \ >> >> +// RUN: -ivfsoverlay %t/crash-vfs-*.cache/vfs/vfs.yaml -fmodules \ >> >> // RUN: -fmodules-cache-path=%t/m/ 2>&1 \ >> >> // RUN: | FileCheck %s --check-prefix=CHECKOVERLAY >> >> >> >> >> >> Copied: cfe/trunk/test/Modules/crash-vfs-relative-overlay.m (from >> >> r261551, >> >> cfe/trunk/test/Modules/crash-vfs-path-traversal.m) >> >> URL: >> >> >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/crash-vfs-relative-overlay.m?p2=cfe/trunk/test/Modules/crash-vfs-relative-overlay.m&p1=cfe/trunk/test/Modules/crash-vfs-path-traversal.m&r1=261551&r2=261552&rev=261552&view=diff >> >> >> >> >> >> ============================================================================== >> >> --- cfe/trunk/test/Modules/crash-vfs-path-traversal.m (original) >> >> +++ cfe/trunk/test/Modules/crash-vfs-relative-overlay.m Mon Feb 22 >> >> 12:41:09 2016 >> >> @@ -17,7 +17,7 @@ >> >> // RUN: find %t/crash-vfs-*.cache/vfs | \ >> >> // RUN: grep "Inputs/System/usr/include/stdio.h" | count 1 >> >> >> >> -#include "usr/././//////include/../include/./././../include/stdio.h" >> >> +#include "usr/include/stdio.h" >> >> >> >> // CHECK: Preprocessed source(s) and associated run script(s) are >> >> located >> >> at: >> >> // CHECK-NEXT: note: diagnostic msg: {{.*}}.m >> >> @@ -35,23 +35,21 @@ >> >> // CHECKSH: "-ivfsoverlay" "crash-vfs-{{[^ ]*}}.cache/vfs/vfs.yaml" >> >> >> >> // CHECKYAML: 'type': 'directory' >> >> -// CHECKYAML: 'name': "{{[^ ]*}}/Inputs/System/usr/include", >> >> +// CHECKYAML: 'name': "/[[PATH:.*]]/Inputs/System/usr/include", >> >> // CHECKYAML-NEXT: 'contents': [ >> >> // CHECKYAML-NEXT: { >> >> // CHECKYAML-NEXT: 'type': 'file', >> >> // CHECKYAML-NEXT: 'name': "module.map", >> >> -// CHECKYAML-NEXT: 'external-contents': "{{[^ >> >> ]*}}/Inputs/System/usr/include/module.map" >> >> +// CHECKYAML-NOT: 'external-contents': "{{[^ ]*}}.cache >> >> +// CHECKYAML-NEXT: 'external-contents': >> >> "/[[PATH]]/Inputs/System/usr/include/module.map" >> >> // CHECKYAML-NEXT: }, >> >> >> >> -// Replace the paths in the YAML files with relative ".." traversals >> >> -// and fed into clang to test whether we're correctly representing >> >> them >> >> -// in the VFS overlay. >> >> +// Test that reading the YAML file will yield the correct path after >> >> +// the overlay dir is prefixed to access headers in .cache/vfs >> >> directory. >> >> >> >> -// RUN: sed -e "s@usr/include@usr/include/../include@g" \ >> >> -// RUN: %t/crash-vfs-*.cache/vfs/vfs.yaml > %t/vfs.yaml >> >> // RUN: unset FORCE_CLANG_DIAGNOSTICS_CRASH >> >> // RUN: %clang -E %s -I %S/Inputs/System -isysroot %/t/i/ \ >> >> -// RUN: -ivfsoverlay %t/vfs.yaml -fmodules \ >> >> +// RUN: -ivfsoverlay %t/crash-vfs-*.cache/vfs/vfs.yaml -fmodules \ >> >> // RUN: -fmodules-cache-path=%t/m/ 2>&1 \ >> >> // RUN: | FileCheck %s --check-prefix=CHECKOVERLAY >> >> >> >> >> >> >> >> _______________________________________________ >> >> cfe-commits mailing list >> >> cfe-commits@lists.llvm.org >> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > >> > >> >> >> >> -- >> Bruno Cardoso Lopes >> http://www.brunocardoso.cc > > -- Bruno Cardoso Lopes http://www.brunocardoso.cc _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits