[Lldb-commits] [lldb] [lldb][NativePDB] Handle `S_DEFRANGE_REGISTER_REL_INDIR` (PR #190336)

via lldb-commits lldb-commits at lists.llvm.org
Sat Apr 4 08:52:18 PDT 2026


================
@@ -229,6 +230,31 @@ DWARFExpression lldb_private::npdb::MakeVFrameRelLocationExpression(
       });
 }
 
+DWARFExpression lldb_private::npdb::MakeVFrameRelIndirLocationExpression(
----------------
Nerixyz wrote:

We can't parse some of the VFRAME programs. Specifically, we don't support `.raSearch` in the FPO program. LLVM generates it here: https://github.com/llvm/llvm-project/blob/fb3fada084c100bbba711a259cc795f110fa8bff/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFTargetStreamer.cpp#L349-L353

My testcase was
```cpp
// clang-cl --target=i386-windows-msvc /std:c++17 -Os -GS- -Z7 -c /Fotest.obj -- test.cpp
// lld-link -debug:full -nodefaultlib -entry:main test.obj -out:test.exe

struct Foo { int a; int b; };

int __attribute__((optnone)) __declspec(noinline) user(Foo &f) {
    auto&[a, b] = f;
    __debugbreak();
    return a + b;
}

int main() {
    Foo f{1, 2};
    return user(f);
}
```
For `user` we get the FPO program `$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =`.

https://github.com/llvm/llvm-project/pull/190336


More information about the lldb-commits mailing list