mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
f0e687f6fb
Without the patch, all version 5 compile units in a DWP file read location tables from the beginning of a .debug_loclists.dwo section. The patch fixes that by adjusting the reading offset the same way as for pre-v5 units. The section identifier to find the contribution entry corresponds to the version of the unit. Differential revision: https://reviews.llvm.org/D77145
95 lines
3.8 KiB
ArmAsm
95 lines
3.8 KiB
ArmAsm
## The test checks that pre-v5 compile units in package files read their
|
|
## location tables from .debug_loc.dwo sections.
|
|
## See dwp-v5-loclists.s for v5 units.
|
|
|
|
# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o - | \
|
|
# RUN: llvm-dwarfdump -debug-info -debug-loc - | \
|
|
# RUN: FileCheck %s
|
|
|
|
# CHECK: .debug_info.dwo contents:
|
|
# CHECK: DW_TAG_compile_unit
|
|
# CHECK-NEXT: DW_AT_GNU_dwo_id (0x1100001122222222)
|
|
# CHECK: DW_TAG_variable
|
|
# CHECK-NEXT: DW_AT_name ("a")
|
|
# CHECK-NEXT: DW_AT_location (0x00000000:
|
|
# CHECK-NEXT: DW_LLE_startx_length (0x0000000000000001, 0x0000000000000010): DW_OP_reg5 RDI)
|
|
|
|
# CHECK: .debug_loc.dwo contents:
|
|
# CHECK: 0x00000013:
|
|
# CHECK-NEXT: DW_LLE_startx_length (0x00000001, 0x00000010): DW_OP_reg5 RDI
|
|
|
|
.section .debug_abbrev.dwo, "e", @progbits
|
|
.LAbbrevBegin:
|
|
.uleb128 1 # Abbreviation Code
|
|
.uleb128 17 # DW_TAG_compile_unit
|
|
.byte 1 # DW_CHILDREN_yes
|
|
.uleb128 0x2131 # DW_AT_GNU_dwo_id
|
|
.uleb128 7 # DW_FORM_data8
|
|
.byte 0 # EOM(1)
|
|
.byte 0 # EOM(2)
|
|
.uleb128 2 # Abbreviation Code
|
|
.uleb128 52 # DW_TAG_variable
|
|
.byte 0 # DW_CHILDREN_no
|
|
.uleb128 3 # DW_AT_name
|
|
.uleb128 8 # DW_FORM_string
|
|
.uleb128 2 # DW_AT_location
|
|
.uleb128 23 # DW_FORM_sec_offset
|
|
.byte 0 # EOM(1)
|
|
.byte 0 # EOM(2)
|
|
.byte 0 # EOM(3)
|
|
.LAbbrevEnd:
|
|
|
|
.section .debug_info.dwo, "e", @progbits
|
|
.LCUBegin:
|
|
.long .LCUEnd-.LCUVersion # Length of Unit
|
|
.LCUVersion:
|
|
.short 4 # Version
|
|
.long 0 # Abbrev offset
|
|
.byte 8 # Address size
|
|
.uleb128 1 # Abbrev [1] DW_TAG_compile_unit
|
|
.quad 0x1100001122222222 # DW_AT_GNU_dwo_id
|
|
.uleb128 2 # Abbrev [2] DW_TAG_variable
|
|
.asciz "a" # DW_AT_name
|
|
.long 0 # DW_AT_location
|
|
.byte 0 # End Of Children Mark
|
|
.LCUEnd:
|
|
|
|
.section .debug_loc.dwo, "e", @progbits
|
|
## Start the section with a number of dummy DW_LLE_end_of_list entries to check
|
|
## that the reading offset is correctly adjusted.
|
|
.zero 0x13
|
|
.LLocBegin:
|
|
.byte 3 # DW_LLE_startx_length
|
|
.uleb128 1 # Index
|
|
.long 0x10 # Length
|
|
.short 1 # Loc expr size
|
|
.byte 85 # DW_OP_reg5
|
|
.byte 0 # DW_LLE_end_of_list
|
|
.LLocEnd:
|
|
|
|
.section .debug_cu_index, "", @progbits
|
|
## Header:
|
|
.long 2 # Version
|
|
.long 3 # Section count
|
|
.long 1 # Unit count
|
|
.long 2 # Slot count
|
|
## Hash Table of Signatures:
|
|
.quad 0x1100001122222222
|
|
.quad 0
|
|
## Parallel Table of Indexes:
|
|
.long 1
|
|
.long 0
|
|
## Table of Section Offsets:
|
|
## Row 0:
|
|
.long 1 # DW_SECT_INFO
|
|
.long 3 # DW_SECT_ABBREV
|
|
.long 5 # DW_SECT_LOC
|
|
## Row 1:
|
|
.long 0 # Offset in .debug_info.dwo
|
|
.long 0 # Offset in .debug_abbrev.dwo
|
|
.long .LLocBegin-.debug_loc.dwo # Offset in .debug_loc.dwo
|
|
## Table of Section Sizes:
|
|
.long .LCUEnd-.LCUBegin # Size in .debug_info.dwo
|
|
.long .LAbbrevEnd-.LAbbrevBegin # Size in .debug_abbrev.dwo
|
|
.long .LLocEnd-.LLocBegin # Size in .debug_loc.dwo
|