[PATCH] D79447: [Debug][CodeView] Emit fully qualified names for globals

Alexandre Ganea via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 6 05:52:45 PDT 2020


aganea marked an inline comment as done.
aganea added a comment.

Thanks!

I have a backlog of issues I'm noting along the way, I will only fix them if they have an impact in regards to debugging in Visual Studio.

1. The list of namespaces, ie.`S_NAMESPACE` isn't emitted in the first module.
2. `extern int A;` doesn't emit anything in the debug stream (of a .OBJ). MSVC emits `S_GDATA32`, but maybe this doesn't matter as it will be emitted probably by the TU that defines it.
3. `S_OBJNAME` is not emitted (see D43002 <https://reviews.llvm.org/D43002>, I will get back to this soon).
4. `LF_BUILDINFO` does not contain the full repro for rebuilding the .OBJ. I will fix this soon as well, this is blocking us.
5. `LF_NESTTYPE` emits empty names for inner types (at least not a unnamed enum).
6. Negative enumerations are emitted as U64, not signed. I need to check if this has an impact in the VS debugger.
7. `S_UDT` isn't emitted for a global enum.



================
Comment at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp:3125-3126
   } else {
     // FIXME: Currently this only emits the global variables in the IR metadata.
     // This should also emit enums and static data members.
     const DIExpression *DIE = CVGV.GVInfo.get<const DIExpression *>();
----------------
akhuang wrote:
> rnk wrote:
> > @akhuang, can we remove this FIXME? I think we addressed this simply by changing clang to emit this metadata.
> Yep- thanks for catching that!
Can I leave the comment for 'enum'? There are still a few things missing in the debug stream, in regards to enums (see other comment).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79447/new/

https://reviews.llvm.org/D79447





More information about the llvm-commits mailing list