[CrashReproducer] Setup 'use-external-names' in YAML files.
Hide the real paths when rebuilding from VFS by setting up the crash reproducer to use 'use-external-names' = false. This way we avoid module redifinition errors and consistently use the same paths against all modules. With this change on Darwin we are able to simulate a crash for a simple application using "Foundation/Foundation.h" (which relies on a bunch of different frameworks and headers) and successfully rebuild all the modules by relying solely at the VFS overlay. llvm-svn: 266234
This commit is contained in:
@@ -1504,8 +1504,9 @@ class JSONWriter {
|
||||
|
||||
public:
|
||||
JSONWriter(llvm::raw_ostream &OS) : OS(OS) {}
|
||||
void write(ArrayRef<YAMLVFSEntry> Entries, Optional<bool> IsCaseSensitive,
|
||||
Optional<bool> IsOverlayRelative, StringRef OverlayDir);
|
||||
void write(ArrayRef<YAMLVFSEntry> Entries, Optional<bool> UseExternalNames,
|
||||
Optional<bool> IsCaseSensitive, Optional<bool> IsOverlayRelative,
|
||||
StringRef OverlayDir);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1558,6 +1559,7 @@ void JSONWriter::writeEntry(StringRef VPath, StringRef RPath) {
|
||||
}
|
||||
|
||||
void JSONWriter::write(ArrayRef<YAMLVFSEntry> Entries,
|
||||
Optional<bool> UseExternalNames,
|
||||
Optional<bool> IsCaseSensitive,
|
||||
Optional<bool> IsOverlayRelative,
|
||||
StringRef OverlayDir) {
|
||||
@@ -1568,6 +1570,9 @@ void JSONWriter::write(ArrayRef<YAMLVFSEntry> Entries,
|
||||
if (IsCaseSensitive.hasValue())
|
||||
OS << " 'case-sensitive': '"
|
||||
<< (IsCaseSensitive.getValue() ? "true" : "false") << "',\n";
|
||||
if (UseExternalNames.hasValue())
|
||||
OS << " 'use-external-names': '"
|
||||
<< (UseExternalNames.getValue() ? "true" : "false") << "',\n";
|
||||
bool UseOverlayRelative = false;
|
||||
if (IsOverlayRelative.hasValue()) {
|
||||
UseOverlayRelative = IsOverlayRelative.getValue();
|
||||
@@ -1629,8 +1634,8 @@ void YAMLVFSWriter::write(llvm::raw_ostream &OS) {
|
||||
return LHS.VPath < RHS.VPath;
|
||||
});
|
||||
|
||||
JSONWriter(OS).write(Mappings, IsCaseSensitive, IsOverlayRelative,
|
||||
OverlayDir);
|
||||
JSONWriter(OS).write(Mappings, UseExternalNames, IsCaseSensitive,
|
||||
IsOverlayRelative, OverlayDir);
|
||||
}
|
||||
|
||||
VFSFromYamlDirIterImpl::VFSFromYamlDirIterImpl(
|
||||
|
||||
Reference in New Issue
Block a user