[PATCH] D132900: [DWARF] Fix infinite recursion in Type Printer.

Alexander Yermolovich via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 31 13:36:45 PDT 2022


ayermolo added a comment.

Working example:

  0x000002a3:   DW_TAG_ptr_to_member_type [15]   (0x0000000b)
                  DW_AT_type [DW_FORM_ref4] (cu + 0x0287 => {0x00000287} "ns::inner")
                  DW_AT_containing_type [DW_FORM_ref4]  (cu + 0x0287 => {0x00000287} "ns::inner")
  0x000002ac:   DW_TAG_ptr_to_member_type [15]   (0x0000000b)
                  DW_AT_type [DW_FORM_ref4] (cu + 0x02b5 => {0x000002b5} "ns::inner (ns::inner *, ns::inner)")
                  DW_AT_containing_type [DW_FORM_ref4]  (cu + 0x0287 => {0x00000287} "ns::inner")      
  0x000002b5:   DW_TAG_subroutine_type [29] * (0x0000000b)
                  DW_AT_type [DW_FORM_ref4] (cu + 0x0287 => {0x00000287} "ns::inner")
  0x00000287:     DW_TAG_structure_type [16]   (0x00000282)
                    DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "inner")
                    DW_AT_declaration [DW_FORM_flag_present]  (true)
  0x00000282:   DW_TAG_namespace [30] * (0x0000000b)
                  DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d3] = "ns")
                  
  0x000000e1:   DW_TAG_template_type_parameter [5]   (0x0000003c)
                  DW_AT_type [DW_FORM_ref4] (cu + 0x02a3 => {0x000002a3} "ns::inner ns::inner::*")
  0x000000e6:   DW_TAG_template_type_parameter [5]   (0x0000003c)
                  DW_AT_type [DW_FORM_ref4] (cu + 0x02ac => {0x000002ac} "ns::inner (ns::inner::*)()")

Couple traces through calls with DIE offsets printed.
0x000000e1: DW_TAG_template_type_parameter [5] (0x0000003c)
DW_AT_type [DW_FORM_ref4] (cu + 0x02a3 => {0x000002a3} “
appendQualifiedName: 2a3
appendUnqualifiedName: 2a3
appendUnqualifiedNameBefore: 2a3
appendQualifiedNameBefore: 287
appendScopes: 282
appendUnqualifiedName: 282
appendUnqualifiedNameBefore: 282
nsappendUnqualifiedNameAfter: 282
::appendUnqualifiedNameBefore: 287
innerappendTemplateParameters: 287

appendQualifiedName: 287
appendScopes: 282
appendUnqualifiedName: 282
appendUnqualifiedNameBefore: 282
nsappendUnqualifiedNameAfter: 282
::appendUnqualifiedName: 287
appendUnqualifiedNameBefore: 287
innerappendTemplateParameters: 287
appendUnqualifiedNameAfter: 287
::*appendUnqualifiedNameAfter: 2a3
appendUnqualifiedNameAfter: 287
")

0x000000e6: DW_TAG_template_type_parameter [5] (0x0000003c)
DW_AT_type [DW_FORM_ref4] (cu + 0x02ac => {0x000002ac} “
appendQualifiedName: 2ac
appendUnqualifiedName: 2ac
appendUnqualifiedNameBefore: 2ac
appendQualifiedNameBefore: 2b5
appendUnqualifiedNameBefore: 2b5
appendQualifiedNameBefore: 287
appendScopes: 282
appendUnqualifiedName: 282
appendUnqualifiedNameBefore: 282
nsappendUnqualifiedNameAfter: 282
::appendUnqualifiedNameBefore: 287
innerappendTemplateParameters: 287
(
appendQualifiedName: 287
appendScopes: 282
appendUnqualifiedName: 282
appendUnqualifiedNameBefore: 282
nsappendUnqualifiedNameAfter: 282
::appendUnqualifiedName: 287
appendUnqualifiedNameBefore: 287
innerappendTemplateParameters: 287
appendUnqualifiedNameAfter: 287
::*appendUnqualifiedNameAfter: 2ac
)appendUnqualifiedNameAfter: 2b5
appendUnqualifiedName: 2b5
(
appendQualifiedName: 287
appendScopes: 282
appendUnqualifiedName: 282
appendUnqualifiedNameBefore: 282
nsappendUnqualifiedNameAfter: 282
::appendUnqualifiedName: 287
appendUnqualifiedNameBefore: 287
innerappendTemplateParameters: 287
appendUnqualifiedNameAfter: 287
)appendUnqualifiedNameAfter: 287
")


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D132900



More information about the llvm-commits mailing list