xref: /llvm-project/llvm/test/DebugInfo/X86/dwp-v5-rnglists.s (revision 35819ff3cf4cfa3f40be19f5bbfc84d0d9f1f8d7)
1*35819ff3SIgor Kudrin## The test checks that ranges for compile units in package files are read
2*35819ff3SIgor Kudrin## correctly, i.e. the base offset in the index section is taken into account.
3*35819ff3SIgor Kudrin
4*35819ff3SIgor Kudrin# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o - | \
5*35819ff3SIgor Kudrin# RUN:   llvm-dwarfdump -v -debug-info -debug-rnglists - | \
6*35819ff3SIgor Kudrin# RUN:   FileCheck %s
7*35819ff3SIgor Kudrin
8*35819ff3SIgor Kudrin# CHECK:      .debug_info.dwo contents:
9*35819ff3SIgor Kudrin# CHECK:      Compile Unit:
10*35819ff3SIgor Kudrin# CHECK:      DW_TAG_compile_unit [1]
11*35819ff3SIgor Kudrin# CHECK-NEXT:   DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000022
12*35819ff3SIgor Kudrin# CHECK-NEXT:     [0x00000005, 0x0000000f))
13*35819ff3SIgor Kudrin
14*35819ff3SIgor Kudrin# CHECK:      .debug_rnglists.dwo contents:
15*35819ff3SIgor Kudrin# CHECK:      0x00000000: range list header:
16*35819ff3SIgor Kudrin# CHECK:      0x0000000d: range list header:
17*35819ff3SIgor Kudrin# CHECK-NEXT: offsets: [
18*35819ff3SIgor Kudrin# CHECK-NEXT: 0x00000008 => 0x00000021
19*35819ff3SIgor Kudrin# CHECK-NEXT: 0x00000009 => 0x00000022
20*35819ff3SIgor Kudrin# CHECK-NEXT: ]
21*35819ff3SIgor Kudrin# CHECK-NEXT: ranges:
22*35819ff3SIgor Kudrin# CHECK-NEXT: 0x00000021: [DW_RLE_end_of_list]
23*35819ff3SIgor Kudrin# CHECK-NEXT: 0x00000022: [DW_RLE_offset_pair]:  0x00000005, 0x0000000f => [0x00000005, 0x0000000f)
24*35819ff3SIgor Kudrin# CHECK-NEXT: 0x00000025: [DW_RLE_end_of_list]
25*35819ff3SIgor Kudrin
26*35819ff3SIgor Kudrin    .section .debug_abbrev.dwo, "e", @progbits
27*35819ff3SIgor Kudrin.LAbbrev:
28*35819ff3SIgor Kudrin    .byte 0x01                          # Abbrev code
29*35819ff3SIgor Kudrin    .byte 0x11                          # DW_TAG_compile_unit
30*35819ff3SIgor Kudrin    .byte 0x00                          # DW_CHILDREN_no
31*35819ff3SIgor Kudrin    .byte 0x55                          # DW_AT_ranges
32*35819ff3SIgor Kudrin    .byte 0x23                          # DW_FORM_rnglistx
33*35819ff3SIgor Kudrin    .byte 0x00                          # EOM(1)
34*35819ff3SIgor Kudrin    .byte 0x00                          # EOM(2)
35*35819ff3SIgor Kudrin    .byte 0x00                          # EOM(3)
36*35819ff3SIgor Kudrin.LAbbrevEnd:
37*35819ff3SIgor Kudrin
38*35819ff3SIgor Kudrin    .section .debug_info.dwo, "e", @progbits
39*35819ff3SIgor Kudrin.LCU:
40*35819ff3SIgor Kudrin    .long .LCUEnd-.LCUVersion           # Length
41*35819ff3SIgor Kudrin.LCUVersion:
42*35819ff3SIgor Kudrin    .short 5                            # Version
43*35819ff3SIgor Kudrin    .byte 5                             # DW_UT_split_compile
44*35819ff3SIgor Kudrin    .byte 4                             # Address Size (in bytes)
45*35819ff3SIgor Kudrin    .long 0                             # Offset Into Abbrev Section
46*35819ff3SIgor Kudrin    .quad 0x1100001122222222            # DWO id
47*35819ff3SIgor Kudrin    .uleb128 1                          # Abbrev [1] DW_TAG_compile_unit
48*35819ff3SIgor Kudrin    .uleb128 1                          # DW_AT_ranges (DW_FORM_rnglistx)
49*35819ff3SIgor Kudrin.LCUEnd:
50*35819ff3SIgor Kudrin
51*35819ff3SIgor Kudrin    .section .debug_rnglists.dwo,"e",@progbits
52*35819ff3SIgor Kudrin.LRLT0:
53*35819ff3SIgor Kudrin    .long .LRLT0End-.LRLT0Version       # Length
54*35819ff3SIgor Kudrin.LRLT0Version:
55*35819ff3SIgor Kudrin    .short 5
56*35819ff3SIgor Kudrin    .byte 4
57*35819ff3SIgor Kudrin    .byte 0
58*35819ff3SIgor Kudrin    .long 0
59*35819ff3SIgor Kudrin.LRLT0List0:
60*35819ff3SIgor Kudrin    .byte 0                             # DW_RLE_end_of_list
61*35819ff3SIgor Kudrin.LRLT0End:
62*35819ff3SIgor Kudrin
63*35819ff3SIgor Kudrin.LRLT1:
64*35819ff3SIgor Kudrin    .long .LRLT1End-.LRLT1Version
65*35819ff3SIgor Kudrin.LRLT1Version:
66*35819ff3SIgor Kudrin    .short 5                            # Version
67*35819ff3SIgor Kudrin    .byte 4                             # Address size
68*35819ff3SIgor Kudrin    .byte 0                             # Segment selector size
69*35819ff3SIgor Kudrin    .long 2                             # Offset entry count
70*35819ff3SIgor Kudrin.LRLT1Base:
71*35819ff3SIgor Kudrin    .long .LRLT1List0-.LRLT1Base
72*35819ff3SIgor Kudrin    .long .LRLT1List1-.LRLT1Base
73*35819ff3SIgor Kudrin.LRLT1List0:
74*35819ff3SIgor Kudrin    .byte 0                             # DW_RLE_end_of_list
75*35819ff3SIgor Kudrin.LRLT1List1:
76*35819ff3SIgor Kudrin    .byte 4                             # DW_RLE_offset_pair
77*35819ff3SIgor Kudrin    .uleb128 5                          # Starting offset
78*35819ff3SIgor Kudrin    .uleb128 15                         # Ending offset
79*35819ff3SIgor Kudrin    .byte 0                             # DW_RLE_end_of_list
80*35819ff3SIgor Kudrin.LRLT1End:
81*35819ff3SIgor Kudrin
82*35819ff3SIgor Kudrin    .section .debug_cu_index, "", @progbits
83*35819ff3SIgor Kudrin## Header:
84*35819ff3SIgor Kudrin    .short 5                            # Version
85*35819ff3SIgor Kudrin    .space 2                            # Padding
86*35819ff3SIgor Kudrin    .long 3                             # Section count
87*35819ff3SIgor Kudrin    .long 1                             # Unit count
88*35819ff3SIgor Kudrin    .long 2                             # Slot count
89*35819ff3SIgor Kudrin## Hash Table of Signatures:
90*35819ff3SIgor Kudrin    .quad 0x1100001122222222
91*35819ff3SIgor Kudrin    .quad 0
92*35819ff3SIgor Kudrin## Parallel Table of Indexes:
93*35819ff3SIgor Kudrin    .long 1
94*35819ff3SIgor Kudrin    .long 0
95*35819ff3SIgor Kudrin## Table of Section Offsets:
96*35819ff3SIgor Kudrin## Row 0:
97*35819ff3SIgor Kudrin    .long 1                             # DW_SECT_INFO
98*35819ff3SIgor Kudrin    .long 3                             # DW_SECT_ABBREV
99*35819ff3SIgor Kudrin    .long 8                             # DW_SECT_RNGLISTS
100*35819ff3SIgor Kudrin## Row 1:
101*35819ff3SIgor Kudrin    .long 0                             # Offset in .debug_info.dwo
102*35819ff3SIgor Kudrin    .long 0                             # Offset in .debug_abbrev.dwo
103*35819ff3SIgor Kudrin    .long .LRLT1-.debug_rnglists.dwo    # Offset in .debug_rnglists.dwo
104*35819ff3SIgor Kudrin## Table of Section Sizes:
105*35819ff3SIgor Kudrin    .long .LCUEnd-.LCU                  # Size in .debug_info.dwo
106*35819ff3SIgor Kudrin    .long .LAbbrevEnd-.LAbbrev          # Size in .debug_abbrev.dwo
107*35819ff3SIgor Kudrin    .long .LRLT1End-.LRLT1              # Size in .debug_rnglists.dwo
108