[all-commits] [llvm/llvm-project] 02916a: [lldb][Formatters] Add --pointer-match-depth optio...
Zequan Wu via All-commits
all-commits at lists.llvm.org
Wed May 28 13:04:45 PDT 2025
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 02916a432ca6465e2e45f67be94f1c89c9cd425d
https://github.com/llvm/llvm-project/commit/02916a432ca6465e2e45f67be94f1c89c9cd425d
Author: Zequan Wu <zequanwu at google.com>
Date: 2025-05-28 (Wed, 28 May 2025)
Changed paths:
M lldb/docs/use/variable.rst
M lldb/include/lldb/API/SBTypeSummary.h
M lldb/include/lldb/DataFormatters/FormatClasses.h
M lldb/include/lldb/DataFormatters/FormatManager.h
M lldb/include/lldb/DataFormatters/FormattersContainer.h
M lldb/include/lldb/DataFormatters/TypeFormat.h
M lldb/include/lldb/DataFormatters/TypeSummary.h
M lldb/include/lldb/DataFormatters/TypeSynthetic.h
M lldb/source/API/SBTypeSummary.cpp
M lldb/source/Commands/CommandObjectType.cpp
M lldb/source/Commands/Options.td
M lldb/source/DataFormatters/FormatManager.cpp
M lldb/source/DataFormatters/TypeCategoryMap.cpp
M lldb/source/DataFormatters/TypeSummary.cpp
A lldb/test/API/functionalities/data-formatter/data-formatter-ptr-matching/Makefile
A lldb/test/API/functionalities/data-formatter/data-formatter-ptr-matching/TestDataFormatterPtrMatching.py
A lldb/test/API/functionalities/data-formatter/data-formatter-ptr-matching/main.cpp
Log Message:
-----------
[lldb][Formatters] Add --pointer-match-depth option to `type summary add` command. (#138209)
Currently, the type `T`'s summary formatter will be matched for `T`,
`T*`, `T**` and so on. This is unexpected in many data formatters. Such
unhandled cases could cause the data formatter to crash. An example
would be the lldb's built-in data formatter for `std::optional`:
```
$ cat main.cpp
#include <optional>
int main() {
std::optional<int> o_null;
auto po_null = &o_null;
auto ppo_null = &po_null;
auto pppo_null = &ppo_null;
return 0;
}
$ clang++ -g main.cpp && lldb -o "b 8" -o "r" -o "v pppo_null"
[lldb crash]
```
This change adds an options `--pointer-match-depth` to `type summary
add` command to allow users to specify how many layer of pointers can be
dereferenced at most when matching a summary formatter of type `T`, as
Jim suggested
[here](https://github.com/llvm/llvm-project/pull/124048/#issuecomment-2611164133).
By default, this option has value 1 which means summary formatter for
`T` could also be used for `T*` but not `T**` nor beyond. This option is
no-op when `--skip-pointers` is set as well.
I didn't add such option for `type synthetic add`, `type format add`,
`type filter add`, because it useful for those command. Instead, they
all have the pointer match depth of 1. When printing a type `T*`, lldb
never print the children of `T` even if there is a synthetic formatter
registered for `T`.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list