[Lldb-commits] [PATCH] D46318: lldb-test symbols: Add ability to do name-based lookup

Pavel Labath via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue May 1 08:43:02 PDT 2018


labath created this revision.
labath added reviewers: davide, zturner, asmith, JDevlieghere, clayborg.
Herald added subscribers: aprantl, mgorny.
Herald added a reviewer: alexshap.

lldb-test already had the ability to dump all symbol information in a
module. This is interesting, but it can be too verbose, and it also does
not use the same APIs that lldb uses to query symbol information. The
last part is interesting to me now, because I am about to add DWARF v5
debug_names support, which needs to implement these APIs.

This patch adds a set of arguments to lldb-test, which modify it's
behavior from dumping all symbols to dumping only the requested
information:

- --lookup={function,namespace,type,variable} - search for the given kind of objects.

- --name - the name to search for.

- --regex - whether to treat the "name" as a regular expression. This is not available for all lookup types (we do not have the required APIs for namespaces and types).

- --context - specifies the context, which can be used to restrict the search. This argument takes a variable name (which must be defined and be unique), and we then use the context that this variable is defined in as the search context.

- --function-flags={auto,full,base,method,selector} - a set of flags to further restrict the search for function symbols.

Together, these flags and their combinations cover the main SymbolFile
entry points which I will need to modify for the accelerator table
support, and so I plan to do most of the regression testing this way.
(I've also found this a useful tool for exploration of what the given
APIs are supposed to do.)

I add a couple of tests to demonstrate the usage of the usage of the
various options, and also an xfailed test which demonstrates a bug I
found while playing with this. The only requirement for these tests is
the presence of lld -- the should run on any platform which is able to
build lldb.

These tests use c++ code as input, but this isn't a requirement. It is also
possible to use IR, assembly or json to create the test module.


https://reviews.llvm.org/D46318

Files:
  lit/CMakeLists.txt
  lit/SymbolFile/DWARF/basic-function-lookup.cpp
  lit/SymbolFile/DWARF/basic-namespace-lookup.cpp
  lit/SymbolFile/DWARF/basic-type-lookup.cpp
  lit/SymbolFile/DWARF/basic-variable-lookup.cpp
  lit/SymbolFile/DWARF/type-in-function-lookup.cpp
  lit/lit.cfg
  lit/lit.site.cfg.in
  tools/lldb-test/lldb-test.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D46318.144731.patch
Type: text/x-patch
Size: 18788 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180501/c8dceb1d/attachment-0001.bin>


More information about the lldb-commits mailing list