Skip to content
  • Mark Mentovai's avatar
    Initial support for dumping DWARF corresponding to Swift code · 7398ce15
    Mark Mentovai authored
    The DWARF data for Swift code has a top-level DW_TAG_module DIE as the
    child of the DW_TAG_compile_unit DIE and the parent of the
    DW_TAG_subprogram DIEs that dump_syms uses to locate functions.
    dump_syms needs to process DW_TAG_module DIEs as introducing nested
    scopes to make it work with Swift.
    
    This also reworks demangling to be language-specific, so that the C++
    demangler isn't invoked when processing Swift code. The DWARF data for
    Swift code presents its mangled names in the same form as used for C++
    (DW_AT_MIPS_linkage_name or DW_AT_linkage_name) but the mangling is
    Swift-specific (beginning with _T instead of _Z). There is no
    programmatic interface to a Swift name demangler as an analogue to C++'s
    __cxa_demangle(), so mangled Swift names are exposed as-is. Xcode's
    "xcrun swift-demangle" can be used to post-process these mangled Swift
    names on macOS.
    
    Support for mangled names presented in a DW_AT_linkage_name attribute,
    as used by DWARF 4...
    7398ce15