[all-commits] [llvm/llvm-project] bc2217: [lldb] Add synthetic variable support to Get*Varia...

Aman LaChapelle via All-commits all-commits at lists.llvm.org
Thu Apr 16 10:21:07 PDT 2026


  Branch: refs/heads/users/bzcheeseman/stack/9
  Home:   https://github.com/llvm/llvm-project
  Commit: bc2217c649f8b96e7d929e7c40e67419c70e6912
      https://github.com/llvm/llvm-project/commit/bc2217c649f8b96e7d929e7c40e67419c70e6912
  Author: bzcheeseman <aman.lachapelle at gmail.com>
  Date:   2026-02-14 (Sat, 14 Feb 2026)

  Changed paths:
    M lldb/include/lldb/Target/BorrowedStackFrame.h
    M lldb/include/lldb/Target/StackFrame.h
    M lldb/source/API/SBFrame.cpp
    M lldb/source/Commands/CommandObjectFrame.cpp
    M lldb/source/Core/IOHandlerCursesGUI.cpp
    M lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
    M lldb/source/Plugins/Process/scripted/ScriptedFrame.cpp
    M lldb/source/Plugins/Process/scripted/ScriptedFrame.h
    M lldb/source/Symbol/Variable.cpp
    M lldb/source/Target/BorrowedStackFrame.cpp
    M lldb/source/Target/StackFrame.cpp
    M lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
    M lldb/test/API/functionalities/scripted_frame_provider/test_frame_providers.py

  Log Message:
  -----------
  [lldb] Add synthetic variable support to Get*VariableList.

This patch adds a new flag to the lldb_private::StackFrame API to get variable lists: `include_synthetic_vars`.  This allows ScriptedFrame (and other future synthetic frames) to construct 'fake' variables and return them in the VariableList, so that commands like `fr v` and `SBFrame::GetVariables` can show them to the user as requested.

This patch includes all changes necessary to call the API the new way - I tried to use my best judgement on when to include synthetic variables or not and leave comments explaining the decision.

As a consequence of producing synthetic variables, this patch means that ScriptedFrame can produce Variable objects with ValueType that contains a ValueTypeExtendedMask in a high bit. This necessarily complicates some of the switch/case handling in places where we would expect to find such variables, and this patch makes best effort to address all such cases as well. From experience, they tend to show up whenever we're dealing with checking if a Variable is in a specified scope, which means we basically have to check the high bit against some user input saying "yes/no synthetic variables".

stack-info: PR: https://github.com/llvm/llvm-project/pull/181501, branch: users/bzcheeseman/stack/9



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