charles-zablit wrote: > There is a "AtFunctionEntry" unwindplan that the ABI plugin can specify but > that's about it. Is that the situation?
Yes, I matched what we do here: https://github.com/llvm/llvm-project/blob/a9e5bb572703780e3eea4a2759104a141ea73466/lldb/source/Plugins/ABI/X86/ABISysV_x86_64.cpp#L859-L862. This effectively makes Windows equal to the AtFunctionEntry unwindplan. I could not find any source that Windows is `omit-frame-pointer` by default, however, Windows x64 does not guarantee that RBP is a frame pointer: https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions?view=msvc-170#prolog-and-epilog > Register volatility and preservation > ... > RBP | Nonvolatile | May be used as a frame pointer; must be preserved by > callee My understanding is that [`RegisterContextUnwind::GetFullUnwindPlanForFrame`](https://github.com/llvm/llvm-project/blob/4f76a4c5a3f8711fe13b05c0f93ac78349396292/lldb/source/Target/RegisterContextUnwind.cpp#L825) only falls back to the default when there is no unwinding data for the function. On Windows, that's a function which does not edit `rsp`, so `rsp+8` is valid for the whole body and the current `rbp+16` is wrong even in that case. https://github.com/llvm/llvm-project/pull/210076 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
