diff options
-rw-r--r-- | source/Initialization/SystemInitializerCommon.cpp | 7 | ||||
-rw-r--r-- | test/Shell/Reproducer/TestWorkingDir.test | 10 |
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 |