summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/Initialization/SystemInitializerCommon.cpp7
-rw-r--r--test/Shell/Reproducer/TestWorkingDir.test10
2 files changed, 14 insertions, 3 deletions
diff --git a/source/Initialization/SystemInitializerCommon.cpp b/source/Initialization/SystemInitializerCommon.cpp
index e17dc65f6..5b8bd8926 100644
--- a/source/Initialization/SystemInitializerCommon.cpp
+++ b/source/Initialization/SystemInitializerCommon.cpp
@@ -78,6 +78,13 @@ llvm::Error SystemInitializerCommon::Initialize() {
} else {
FileSystem::Initialize();
}
+ if (llvm::Expected<std::string> cwd =
+ loader->LoadBuffer<WorkingDirectoryProvider>()) {
+ FileSystem::Instance().GetVirtualFileSystem()->setCurrentWorkingDirectory(
+ *cwd);
+ } else {
+ return cwd.takeError();
+ }
} else if (repro::Generator *g = r.GetGenerator()) {
repro::VersionProvider &vp = g->GetOrCreate<repro::VersionProvider>();
vp.SetVersion(lldb_private::GetVersion());
diff --git a/test/Shell/Reproducer/TestWorkingDir.test b/test/Shell/Reproducer/TestWorkingDir.test
index cef57e865..c2f012447 100644
--- a/test/Shell/Reproducer/TestWorkingDir.test
+++ b/test/Shell/Reproducer/TestWorkingDir.test
@@ -1,13 +1,17 @@
-# This tests relative capture paths.
+# This tests that the reproducer can deal with relative files. We create a
+# binary in a subdirectory and pass its relative path to LLDB. The subdirectory
+# is removed before replay so that it only exists in the reproducer's VFS.
# RUN: echo "CHECK: %t" > %t.check
# RUN: rm -rf %t.repro
# RUN: mkdir -p %t.repro
# RUN: mkdir -p %t
+# RUN: mkdir -p %t/binary
# RUN: cd %t
-# RUN: %clang %S/Inputs/simple.c -g -o %t/reproducer.out
-# RUN: %lldb -x -b -s %S/Inputs/WorkingDir.in --capture --capture-path %t.repro %t/reproducer.out
+# RUN: %clang %S/Inputs/simple.c -g -o binary/reproducer.out
+# RUN: %lldb -x -b -s %S/Inputs/WorkingDir.in --capture --capture-path %t.repro binary/reproducer.out
+# RUN: rm -rf %t/binary
# RUN: cat %t.repro/cwd.txt | FileCheck %t.check
# RUN: %lldb --replay %t.repro | FileCheck %t.check