forked from OSchip/llvm-project
[lldb/Reproducers] Always record the current working directory
Setting the current working directory in the VFS will fail if the given path doesn't exist in the YAML mapping or on disk.
This commit is contained in:
parent
3f16114ddb
commit
f8df2e1a19
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "lldb/Utility/FileSpec.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
#include "llvm/Support/FileCollector.h"
|
||||
#include "llvm/Support/YAMLTraits.h"
|
||||
|
@ -149,6 +150,7 @@ public:
|
|||
}
|
||||
|
||||
void Update(llvm::StringRef path) { m_cwd = std::string(path); }
|
||||
llvm::StringRef GetWorkingDirectory() { return m_cwd; }
|
||||
|
||||
struct Info {
|
||||
static const char *name;
|
||||
|
|
|
@ -234,7 +234,10 @@ const char *SBReproducer::GetPath() {
|
|||
|
||||
void SBReproducer::SetWorkingDirectory(const char *path) {
|
||||
if (auto *g = lldb_private::repro::Reproducer::Instance().GetGenerator()) {
|
||||
g->GetOrCreate<WorkingDirectoryProvider>().Update(path);
|
||||
auto &wp = g->GetOrCreate<repro::WorkingDirectoryProvider>();
|
||||
wp.Update(path);
|
||||
auto &fp = g->GetOrCreate<repro::FileProvider>();
|
||||
fp.RecordInterestingDirectory(wp.GetWorkingDirectory());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -94,6 +94,8 @@ llvm::Error SystemInitializerCommon::Initialize() {
|
|||
vp.SetVersion(lldb_private::GetVersion());
|
||||
repro::FileProvider &fp = g->GetOrCreate<repro::FileProvider>();
|
||||
FileSystem::Initialize(fp.GetFileCollector());
|
||||
repro::WorkingDirectoryProvider &wp = g->GetOrCreate<repro::WorkingDirectoryProvider>();
|
||||
fp.RecordInterestingDirectory(wp.GetWorkingDirectory());
|
||||
} else {
|
||||
FileSystem::Initialize();
|
||||
}
|
||||
|
|
|
@ -15,3 +15,13 @@
|
|||
|
||||
# RUN: cat %t.repro/cwd.txt | FileCheck %t.check
|
||||
# RUN: %lldb --replay %t.repro | FileCheck %t.check
|
||||
|
||||
# Make sure the current working directory is recorded even when it's not
|
||||
# referenced.
|
||||
|
||||
# RUN: rm -rf %t.repro
|
||||
# RUN: mkdir -p %t/probably_unique
|
||||
# RUN: cd %t/probably_unique
|
||||
# RUN: %lldb -x -b -o 'reproducer generate' --capture --capture-path %t.repro
|
||||
# RUN: cat %t.repro/cwd.txt | FileCheck %s
|
||||
# CHECK: probably_unique
|
||||
|
|
Loading…
Reference in New Issue