blob: 8f2957350484eabc9796ffee0db7f3d932556a11 [file] [log] [blame]
## Test that DWARFv5 DW_FORM_line_strp and corresponding .debug_line_str
## table are correctly recognized and copied into the result.
# RUN: yaml2obj %s -o %t.o
# RUN: llvm-dwarfutil %t.o %t1
# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s --check-prefix VERIFY-CHECK
# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s
#
# RUN: llvm-dwarfutil --no-garbage-collection %t.o %t1
# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s --check-prefix VERIFY-CHECK
# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s
#
# RUN: llvm-dwarfutil --no-garbage-collection --build-accelerator=DWARF %t.o %t1
# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s --check-prefix VERIFY-CHECK
# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s
#VERIFY-CHECK: No errors.
#CHECK: .debug_info
#CHECK: DW_TAG_compile_unit
#CHECK: DW_TAG_subprogram
#CHECK: DW_AT_name [DW_FORM_line_strp] ( .debug_line_str[0x00000000] = "foo1")
#CHECK: .debug_line
#CHECK: include_directories[ 0] = .debug_line_str[0x00000000] = "foo1"
#CHECK: include_directories[ 1] = .debug_line_str[0x00000000] = "foo1"
#CHECK: file_names[ 0]:
#CHECK: name: .debug_line_str[0x00000000] = "foo1"
#CHECK: file_names[ 1]:
#CHECK: name: .debug_line_str[0x00000000] = "foo1"
#CHECK: .debug_line_str
#CHECK: "foo1"
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
Address: 0x1130
Size: 0x60
- Name: .debug_line_str
Type: SHT_PROGBITS
Flags: [ ]
Content: "666f6f3100"
- Name: .debug_line
Type: SHT_PROGBITS
Flags: [ ]
Content: "2a00000005000801220000000102030405050102030401011f02000000000000000001011f020000000000000000"
DWARF:
debug_abbrev:
- Table:
- Tag: DW_TAG_compile_unit
Children: DW_CHILDREN_yes
Attributes:
- Attribute: DW_AT_producer
Form: DW_FORM_string
- Attribute: DW_AT_language
Form: DW_FORM_data2
- Attribute: DW_AT_name
Form: DW_FORM_string
- Attribute: DW_AT_low_pc
Form: DW_FORM_addrx
- Attribute: DW_AT_high_pc
Form: DW_FORM_data8
- Attribute: DW_AT_addr_base
Form: DW_FORM_sec_offset
- Attribute: DW_AT_stmt_list
Form: DW_FORM_sec_offset
- Tag: DW_TAG_subprogram
Children: DW_CHILDREN_yes
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_line_strp
- Attribute: DW_AT_low_pc
Form: DW_FORM_addrx
- Attribute: DW_AT_high_pc
Form: DW_FORM_data8
- Attribute: DW_AT_type
Form: DW_FORM_ref4
- Tag: DW_TAG_base_type
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_string
- Tag: DW_TAG_variable
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_string
- Attribute: DW_AT_const_value
Form: DW_FORM_implicit_const
Value: 33
- Attribute: DW_AT_type
Form: DW_FORM_ref4
debug_info:
- Version: 5
UnitType: DW_UT_compile
Entries:
- AbbrCode: 1
Values:
- CStr: by_hand
- Value: 0x04
- CStr: CU1
- Value: 0x0
- Value: 0x10
- Value: 0x8
- Value: 0x0
- AbbrCode: 2
Values:
- Value: 0x0
- Value: 0x0
- Value: 0x10
- Value: 0x3f
- AbbrCode: 0
- AbbrCode: 3
Values:
- CStr: int
- AbbrCode: 0
debug_addr:
- Version: 5
AddressSize: 0x08
Entries:
- Address: 0x1130
...