blob: 364e69523da0b91e86a1450da889595cb2a247a8 [file] [edit]
## Test that llvm-dwarfdump --verify correctly handles DW_TAG_call_site
## nested inside a DW_TAG_lexical_block. Previously, the parent-walking
## loop in verifyDebugInfoCallSite() used Die.getParent() instead of
## Curr.getParent(), causing an infinite loop when the call_site's
## immediate parent was not a subprogram (e.g., a lexical_block).
# RUN: yaml2obj %s -o - | llvm-dwarfdump --verify - 2>&1 | FileCheck %s
# CHECK: No errors.
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
DWARF:
debug_str:
- "callee"
- "caller"
debug_abbrev:
- Table:
- Code: 0x00000001
Tag: DW_TAG_compile_unit
Children: DW_CHILDREN_yes
Attributes:
- Attribute: DW_AT_low_pc
Form: DW_FORM_addr
- Code: 0x00000002
Tag: DW_TAG_subprogram
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_strp
- Attribute: DW_AT_low_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_data4
- Code: 0x00000003
Tag: DW_TAG_subprogram
Children: DW_CHILDREN_yes
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_strp
- Attribute: DW_AT_low_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_data4
- Attribute: DW_AT_call_all_calls
Form: DW_FORM_flag_present
- Code: 0x00000004
Tag: DW_TAG_lexical_block
Children: DW_CHILDREN_yes
Attributes:
- Attribute: DW_AT_low_pc
Form: DW_FORM_addr
- Attribute: DW_AT_high_pc
Form: DW_FORM_data4
- Code: 0x00000005
Tag: DW_TAG_call_site
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_call_origin
Form: DW_FORM_ref4
debug_info:
- Version: 5
UnitType: DW_UT_compile
AbbrOffset: 0x00000000
AddrSize: 8
Entries:
# DW_TAG_compile_unit
- AbbrCode: 0x00000001
Values:
- Value: 0x0000000000000000 # DW_AT_low_pc
# DW_TAG_subprogram (callee) - offset will be 0x0c + some bytes
- AbbrCode: 0x00000002
Values:
- Value: 0x0000000000000000 # DW_AT_name -> "callee"
- Value: 0x0000000000003000 # DW_AT_low_pc
- Value: 0x0000000000000010 # DW_AT_high_pc
# DW_TAG_subprogram (caller, with DW_AT_call_all_calls)
- AbbrCode: 0x00000003
Values:
- Value: 0x0000000000000007 # DW_AT_name -> "caller"
- Value: 0x0000000000001000 # DW_AT_low_pc
- Value: 0x0000000000000100 # DW_AT_high_pc
# DW_TAG_lexical_block (child of caller)
- AbbrCode: 0x00000004
Values:
- Value: 0x0000000000001000 # DW_AT_low_pc
- Value: 0x0000000000000080 # DW_AT_high_pc
# DW_TAG_call_site (child of lexical_block)
- AbbrCode: 0x00000005
Values:
- Value: 0x0000000000000015 # DW_AT_call_origin -> callee subprogram
- AbbrCode: 0x00000000 # end lexical_block
Values: []
- AbbrCode: 0x00000000 # end caller subprogram
Values: []
- AbbrCode: 0x00000000 # end compile_unit
Values: []
...