[all-commits] [llvm/llvm-project] 8aa313: [LLDB] Do not dereference promise pointer in `coro...
Adrian Vogelsgesang via All-commits
all-commits at lists.llvm.org
Tue Jan 31 07:47:35 PST 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 8aa313755118bf43c6042fb316b6c243b2c59be2
https://github.com/llvm/llvm-project/commit/8aa313755118bf43c6042fb316b6c243b2c59be2
Author: Adrian Vogelsgesang <avogelsgesang at salesforce.com>
Date: 2023-01-31 (Tue, 31 Jan 2023)
Changed paths:
M lldb/packages/Python/lldbsuite/test/lldbtest.py
M lldb/source/Plugins/Language/CPlusPlus/Coroutines.cpp
M lldb/source/Plugins/Language/CPlusPlus/Coroutines.h
M lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/coroutine_handle/TestCoroutineHandle.py
Log Message:
-----------
[LLDB] Do not dereference promise pointer in `coroutine_handle` pretty printer
So far, the pretty printer for `std::coroutine_handle` internally
dereferenced the contained frame pointer displayed the `promise`
as a sub-value. As noticed in https://reviews.llvm.org/D132624
by @labath, this can lead to an endless loop in lldb during printing
if the coroutine frame pointers form a cycle.
This commit breaks the cycle by exposing the `promise` as a pointer
type instead of a value type. The depth to which the `frame variable`
and the `expression` commands dereference those pointers can be
controlled using the `--ptr-depth` argument.
Differential Revision: https://reviews.llvm.org/D132815
More information about the All-commits
mailing list