[Lldb-commits] [lldb] f8df2e1 - [lldb/Reproducers] Always record the current working directory

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Tue Jul 21 09:03:46 PDT 2020


On Tue, Jul 21, 2020 at 5:06 AM Pavel Labath <pavel at labath.sk> wrote:

> On 20/07/2020 20:54, Jonas Devlieghere via lldb-commits wrote:
> >
> > Author: Jonas Devlieghere
> > Date: 2020-07-20T11:54:11-07:00
> > New Revision: f8df2e1a19913e997d8d6dbe573de977406e736e
> >
> > URL:
> https://github.com/llvm/llvm-project/commit/f8df2e1a19913e997d8d6dbe573de977406e736e
> > DIFF:
> https://github.com/llvm/llvm-project/commit/f8df2e1a19913e997d8d6dbe573de977406e736e.diff
> >
> > LOG: [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.
> >
> > Added:
> >
> >
> > Modified:
> >     lldb/include/lldb/Utility/Reproducer.h
> >     lldb/source/API/SBReproducer.cpp
> >     lldb/source/Initialization/SystemInitializerCommon.cpp
> >     lldb/test/Shell/Reproducer/TestWorkingDir.test
> >
> > Removed:
> >
> >
> >
> >
> ################################################################################
> > diff  --git a/lldb/include/lldb/Utility/Reproducer.h
> b/lldb/include/lldb/Utility/Reproducer.h
> > index 2714db8d2932..6fcb839684dc 100644
> > --- a/lldb/include/lldb/Utility/Reproducer.h
> > +++ b/lldb/include/lldb/Utility/Reproducer.h
> > @@ -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 @@ class WorkingDirectoryProvider : public
> Provider<WorkingDirectoryProvider> {
> >    }
> >
> >    void Update(llvm::StringRef path) { m_cwd = std::string(path); }
> > +  llvm::StringRef GetWorkingDirectory() { return m_cwd; }
> >
> >    struct Info {
> >      static const char *name;
> >
> > diff  --git a/lldb/source/API/SBReproducer.cpp
> b/lldb/source/API/SBReproducer.cpp
> > index 0eb3429c4fef..9815bf11263c 100644
> > --- a/lldb/source/API/SBReproducer.cpp
> > +++ b/lldb/source/API/SBReproducer.cpp
> > @@ -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());
>
>
> If I'm not mistaken, this will (recursively) record the entire contents
> of the CWD. That could be a _lot_. Are you that's what you wanted?
>

Most certainly not. Thanks for pointing that out. Fixed with a test case
in 9f8d481d6816d620fc0a1f1c510f662c01fdacec.


>
> pl
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200721/1be17cb2/attachment.html>


More information about the lldb-commits mailing list