alvinhochun added inline comments.

================
Comment at: lldb/source/Plugins/SymbolVendor/PECOFF/SymbolVendorPECOFF.cpp:119
+  };
+  for (SectionType section_type : g_sections) {
+    if (SectionSP section_sp =
----------------
mstorsjo wrote:
> alvinhochun wrote:
> > mstorsjo wrote:
> > > I'm curious - this adds new logic (copied from SymbolVendorELF afaik?) 
> > > for iterating over sections and finding the ones that contain the dwarf 
> > > debug info. Prior to this change, finding debug info within the 
> > > executable itself has worked just fine.
> > > 
> > > What codepath and where has handled that? Has it fallen back on 
> > > SymbolVendorELF so far?
> > > 
> > > (If that used to work, why is a specific plugin for PECOFF needed at this 
> > > point for debuglink?)
> > The SymbolVendorELF seems to only handle loading the external debug info 
> > specified by the `.gnu_debuglink` section. The dwarf debug info already 
> > embedded in the main executable should be handled somewhere else, which has 
> > worked fine for both ELF and PE/COFF. Though I don't know where 
> > specifically this was handled.
> > 
> > SymbolVendorELF tries to downcast the object file to `ObjectFileELF *`, so 
> > it could not have worked for PE/COFF.
> Ok, so what I misunderstood is that this function doesn't seem to handle 
> dwarf debug info in the main executable after all - this only tries to dig up 
> dwarf sections from `GetSymbolFileFileSpec()` or `GetDebugLink()`. So the 
> existing code that locates dwarf sections in the executables themselves still 
> runs as before.
> 
> So then this seems reasonable.
> 
> So essentially, if `GetDebugLink()` would be a virtual method, both 
> SymbolVendorELF and SymbolVendorPECOFF could theoretically be merged into one?
> So essentially, if GetDebugLink() would be a virtual method, both 
> SymbolVendorELF and SymbolVendorPECOFF could theoretically be merged into one?

Yes, they may very well be merged if no other platform-specific logic is 
needed. There are some small differences now: SymbolVendorELF checks that 
`obj_file->GetUUID()` is valid, but this fails the test I added so I removed 
this check in SymbolVendorPECOFF. I also removed a few entries (those that 
doesn't show up in `ObjectFilePECOFF`) from the `g_sections` list, but this 
change is probably not necessary.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D126367

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to