You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
5.2 KiB
141 lines
5.2 KiB
4 months ago
|
## This tests dumping a .debug_str_offsets.dwo section in a DWP file when it is
|
||
|
## referenced by units in different formats: one unit is DWARF32 and another
|
||
|
## is DWARF64, thus the .debug_str_offsets.dwo section has contributions with
|
||
|
## different sizes of offsets.
|
||
|
## This also checks that attributes in the units which use the DW_FORM_strx form
|
||
|
## are dumped correctly.
|
||
|
|
||
|
# RUN: llvm-mc -triple x86_64 %s -filetype=obj -o - | \
|
||
|
# RUN: llvm-dwarfdump -v - | \
|
||
|
# RUN: FileCheck %s
|
||
|
|
||
|
# CHECK: .debug_info.dwo contents:
|
||
|
# CHECK: Compile Unit:
|
||
|
# CHECK: DW_TAG_compile_unit [1]
|
||
|
# CHECK-NEXT: DW_AT_producer [DW_FORM_strx] (indexed (00000000) string = "CU0 Producer")
|
||
|
# CHECK-NEXT: DW_AT_name [DW_FORM_strx] (indexed (00000001) string = "CU0 Name")
|
||
|
# CHECK: Compile Unit:
|
||
|
# CHECK: DW_TAG_compile_unit [1]
|
||
|
# CHECK-NEXT: DW_AT_producer [DW_FORM_strx] (indexed (00000000) string = "CU1 Producer")
|
||
|
# CHECK-NEXT: DW_AT_name [DW_FORM_strx] (indexed (00000001) string = "CU1 Name")
|
||
|
|
||
|
# CHECK: .debug_str.dwo contents:
|
||
|
# CHECK-NEXT: 0x00000000: "CU0 Producer"
|
||
|
# CHECK-NEXT: 0x0000000d: "CU0 Name"
|
||
|
# CHECK-NEXT: 0x00000016: "CU1 Producer"
|
||
|
# CHECK-NEXT: 0x00000023: "CU1 Name"
|
||
|
|
||
|
# CHECK: .debug_str_offsets.dwo contents:
|
||
|
# CHECK-NEXT: 0x00000000: Contribution size = 8, Format = DWARF32, Version = 4
|
||
|
# CHECK-NEXT: 0x00000000: 00000000 "CU0 Producer"
|
||
|
# CHECK-NEXT: 0x00000004: 0000000d "CU0 Name"
|
||
|
# CHECK-NEXT: 0x00000008: Contribution size = 16, Format = DWARF64, Version = 4
|
||
|
# CHECK-NEXT: 0x00000008: 0000000000000016 "CU1 Producer"
|
||
|
# CHECK-NEXT: 0x00000010: 0000000000000023 "CU1 Name"
|
||
|
|
||
|
.section .debug_str.dwo, "MSe", @progbits, 1
|
||
|
.LStr0:
|
||
|
.asciz "CU0 Producer"
|
||
|
.LStr1:
|
||
|
.asciz "CU0 Name"
|
||
|
.LStr2:
|
||
|
.asciz "CU1 Producer"
|
||
|
.LStr3:
|
||
|
.asciz "CU1 Name"
|
||
|
|
||
|
.section .debug_str_offsets.dwo, "e", @progbits
|
||
|
## The contribution of CU0 (DWARF32)
|
||
|
.LSO0:
|
||
|
.long .LStr0-.debug_str.dwo # 0: "CU0 Producer"
|
||
|
.long .LStr1-.debug_str.dwo # 1: "CU0 Name"
|
||
|
.LSO0End:
|
||
|
## The contribution of CU1 (DWARF64)
|
||
|
.LSO1:
|
||
|
.quad .LStr2-.debug_str.dwo # 0: "CU1 Producer"
|
||
|
.quad .LStr3-.debug_str.dwo # 1: "CU1 Name"
|
||
|
.LSO1End:
|
||
|
|
||
|
.section .debug_abbrev.dwo, "e", @progbits
|
||
|
## For simplicity and to make the test shorter, both compilation units share
|
||
|
## the same abbreviations table.
|
||
|
.LAbbr:
|
||
|
.uleb128 0x01 # Abbrev code
|
||
|
.uleb128 0x11 # DW_TAG_compile_unit
|
||
|
.byte 0x00 # DW_CHILDREN_no
|
||
|
.uleb128 0x25 # DW_AT_producer
|
||
|
.uleb128 0x1a # DW_FORM_strx
|
||
|
.uleb128 0x03 # DW_AT_name
|
||
|
.uleb128 0x1a # DW_FORM_strx
|
||
|
.uleb128 0x2131 # DW_AT_GNU_dwo_id
|
||
|
.uleb128 0x07 # DW_FORM_data8
|
||
|
.byte 0x00 # EOM(1)
|
||
|
.byte 0x00 # EOM(2)
|
||
|
.byte 0x00 # EOM(3)
|
||
|
.LAbbrEnd:
|
||
|
|
||
|
.section .debug_info.dwo, "e", @progbits
|
||
|
## CU0 uses the 32-bit DWARF format.
|
||
|
.LCU0:
|
||
|
.long .LCU0End-.LCU0Ver # Length
|
||
|
.LCU0Ver:
|
||
|
.short 4 # Version
|
||
|
.long 0 # Abbrev. offset
|
||
|
.byte 8 # Address size
|
||
|
.uleb128 1 # Abbrev [1] DW_TAG_compile_unit
|
||
|
.uleb128 0 # DW_AT_producer ("CU0 Producer")
|
||
|
.uleb128 1 # DW_AT_name ("CU0 Name")
|
||
|
.quad 0x1100001122222222 # DW_AT_GNU_dwo_id
|
||
|
.LCU0End:
|
||
|
## CU1 uses the 64-bit DWARF format.
|
||
|
.LCU1:
|
||
|
.long 0xffffffff # DWARF64 mark
|
||
|
.quad .LCU1End-.LCU1Ver # Length
|
||
|
.LCU1Ver:
|
||
|
.short 4 # Version
|
||
|
.quad 0 # Abbrev. offset
|
||
|
.byte 8 # Address size
|
||
|
.uleb128 1 # Abbrev [1] DW_TAG_compile_unit
|
||
|
.uleb128 0 # DW_AT_producer ("CU1 Producer")
|
||
|
.uleb128 1 # DW_AT_name ("CU1 Name")
|
||
|
.quad 0x1100001133333333 # DW_AT_GNU_dwo_id
|
||
|
.LCU1End:
|
||
|
|
||
|
.section .debug_cu_index, "", @progbits
|
||
|
## Header:
|
||
|
.long 2 # Version
|
||
|
.long 3 # Section count
|
||
|
.long 2 # Unit count
|
||
|
.long 4 # Slot count
|
||
|
## Hash Table of Signatures:
|
||
|
.quad 0
|
||
|
.quad 0
|
||
|
.quad 0x1100001122222222 # DWO Id of CU0
|
||
|
.quad 0x1100001133333333 # DWO Id of CU1
|
||
|
## Parallel Table of Indexes:
|
||
|
.long 0
|
||
|
.long 0
|
||
|
.long 1
|
||
|
.long 2
|
||
|
## Table of Section Offsets:
|
||
|
## Row 0:
|
||
|
.long 1 # DW_SECT_INFO
|
||
|
.long 3 # DW_SECT_ABBREV
|
||
|
.long 6 # DW_SECT_STR_OFFSETS
|
||
|
## Row 1, offsets of contributions of CU0:
|
||
|
.long .LCU0-.debug_info.dwo
|
||
|
.long .LAbbr-.debug_abbrev.dwo
|
||
|
.long .LSO0-.debug_str_offsets.dwo
|
||
|
## Row 2, offsets of contributions of CU1:
|
||
|
.long .LCU1-.debug_info.dwo
|
||
|
.long .LAbbr-.debug_abbrev.dwo
|
||
|
.long .LSO1-.debug_str_offsets.dwo
|
||
|
## Table of Section Sizes:
|
||
|
## Row 1, sizes of contributions of CU0:
|
||
|
.long .LCU0End-.LCU0
|
||
|
.long .LAbbrEnd-.LAbbr
|
||
|
.long .LSO0End-.LSO0
|
||
|
## Row 2, sizes of contributions of CU1:
|
||
|
.long .LCU1End-.LCU1
|
||
|
.long .LAbbrEnd-.LAbbr
|
||
|
.long .LSO1End-.LSO1
|