[llvm-bugs] [Bug 28150] New: [DebugInfo] Extend vtable debug info metadata to handle MS ABI

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jun 15 17:11:27 PDT 2016


https://llvm.org/bugs/show_bug.cgi?id=28150

            Bug ID: 28150
           Summary: [DebugInfo] Extend vtable debug info metadata to
                    handle MS ABI
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: LLVM Codegen
          Assignee: unassignedclangbugs at nondot.org
          Reporter: rnk at google.com
                CC: amccarth at google.com, amjad.aboud at intel.com,
                    aprantl at apple.com, david.majnemer at gmail.com,
                    dblaikie at gmail.com, llvm-bugs at lists.llvm.org
            Blocks: 12283
    Classification: Unclassified

Currently DISubprograms have these vtable related fields:

- containingType: The parent class. Appears to be redundant with 'scope' for
virtual methods. We could repurpose this to point to the record that actually
contains the vfptr, since the vftable is very frequently not at offset 0 from
'this', and requires non-virtual and virtual adjustments.

- virtuality: Only has none, virtual, and pure_virtual. We might want to extend
this to include a notion of 'introducing', or we could encode that information
some other way.

- virtualIndex: Should be the vftable index obviously. For dwarf this is
relative to the address point, and we can make this the vftable index pretty
easily. CodeView only includes vftable offsets for introducing virtual methods,
so we could set this to a sentinel value (-1) to indicate that the virtual
method was not introduced in this class, and its offset can be found in the
DWARF describing the base class.

Another issue is that we can't assume that the frontend will provide complete
debug info type information for base classes unless we enable
-fstandalone-debug-info. This means we can't walk the entire class hierarchy in
order to generate this information. Each DICompositeType has to be
self-contained. This means we can't figure out which DICompositeType introduced
a virtual method by walking the class hierarchy.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160616/9968035a/attachment.html>


More information about the llvm-bugs mailing list