[all-commits] [llvm/llvm-project] e93df7: [llvm/DWARF] Recursively resolve DW_AT_signature r...

Pavel Labath via All-commits all-commits at lists.llvm.org
Thu Jul 18 00:44:27 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e93df78bd46b585c0bdabdbdc95410e4c08b9d38
      https://github.com/llvm/llvm-project/commit/e93df78bd46b585c0bdabdbdc95410e4c08b9d38
  Author: Pavel Labath <pavel at labath.sk>
  Date:   2024-07-18 (Thu, 18 Jul 2024)

  Changed paths:
    M llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
    M llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
    M llvm/lib/DebugInfo/DWARF/DWARFTypePrinter.cpp
    M llvm/test/tools/llvm-dwarfdump/X86/prettyprint_type_units.s

  Log Message:
  -----------
  [llvm/DWARF] Recursively resolve DW_AT_signature references (#97423)

findRecursively follows DW_AT_specification and DW_AT_abstract_origin
references, but not DW_AT_signature. As far as I can tell, there is no
fundamental difference between these attributes that would make this
behavior desirable, and this just seems like a consequence of the fact
that this attribute is newer. This patch aims to change that.

The motivation is some code in lldb, which assumes that it can construct
a qualified name of a type by just walking the parent chain and looking
at the name attribute. This works for "regular" debug info, even when
some of the DIEs are just forward declarations, but it breaks in the
presence of type units, because of the need to explicitly resolve the
signature reference.

While LLDB does not use the llvm's DWARFDie class (yet?), this seems
like a very important change in the overall API, and any divergence here
would complicate eventual reunification, which is why I am making the
change in the llvm API first. However, putting lldb aside, I think this
change is beneficial in llvm on its own, as it allows us to remove the
explicit DW_AT_signature resolution in the DWARFTypePrinter.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list