llvm-project
9044b0f1 - [DebugInfo][CodeView] Support `S_DEFRANGE_REGISTER_REL_INDIR` (#186410)

Commit
124 days ago
[DebugInfo][CodeView] Support `S_DEFRANGE_REGISTER_REL_INDIR` (#186410) This adds support for `S_DEFRANGE_REGISTER_REL_INDIR` (as `DefRangeRegisterRelIndirSym`). It's to `S_REGREL32_INDIR` what `S_DEFRANGE_REGISTER_REL` is to `S_REGREL32`. `S_REGREL32_INDIR` was added in #183172. LLVM only generates `S_LOCAL` for variables and parameters, so we need this record to specify a range where a variable is indirectly accessed. I didn't find any PDB where this record is in, so I guessed the layout based on `S_DEFRANGE_REGISTER_REL` and `S_REGREL32_INDIR`. Locally, I updated LLVM to generate this where possible, and tested it with the VS debugger and WinDBG. Both handled the record correctly. This PR doesn't include the change to debug info generation yet - you can find the current WIP in https://github.com/Nerixyz/llvm-project/commit/884072fa17e0361e2e493419a975f2b67c04982a. The name `OffsetInUdt` comes from DIA ([`get_offsetInUdt`](https://learn.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/idiasymbol-get-offsetinudt?view=visualstudio)). Given that this symbol also has a `offsetInParent`, I find the name a bit confusing. When generating the record in the commit above, I used the name `DerefOffset`. If we change it here, it should be changed in `RegRelativeIndirSym` as well.
Author
Parents
Loading