Ahh, so I misinterpreted what you originally said. There is one Clang AST *per SymboFile*. In PDB land, compile units are often called "modules" so it's easy to get confused. So in my original response, what I actually meant was that there's no notion of a per compile-unit AST. But that also had nothing to do with your question, which was about LLDB modules :)
So anyway, yea the command already supports that as you noted, and specifying the module basename would also have worked here so that there would always only be 1 module dumped (turns out, there's only 1 module dumped anyway because we don't have PDBs for any of the system libraries, so DumpClangAST is a no-op in those cases). On Fri, Dec 14, 2018 at 11:00 AM Pavel Labath <pa...@labath.sk> wrote: > On 14/12/2018 19:52, Zachary Turner wrote: > > I don't know if there's a good way to do that. Because debuggers need > > to be able to see across multiple translation units, this is implemented > > internally as constructing one giant AST that contains everything for > > the entire program. LLDB has no notion of a per-module AST, so it would > > be hard to make this work. > > > > That's not how it's implemented now. The code actually iterates through > all the modules and dumps each one in turn. > > result.GetOutputStream().Printf("Dumping clang ast for %" PRIu64 > " modules.\n", > (uint64_t)num_modules); > for (size_t image_idx = 0; image_idx < num_modules; ++image_idx) { > if (m_interpreter.WasInterrupted()) > break; > Module *m = > target->GetImages().GetModulePointerAtIndex(image_idx); > SymbolFile *sf = m->GetSymbolVendor()->GetSymbolFile(); > sf->DumpClangAST(result.GetOutputStream()); > } > > > In fact, it looks like this command already supports specifying the > exact module to dump (either by basename or full path). >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits