xref: /llvm-project/llvm/test/tools/dsymutil/X86/dwarf5-addrbase-broken.test (revision 53d40b973913f60caee2e21908a48bf865e5ba1c)
1## This test checks handling of DWARFv5 address attribute.
2## It contains two compile units. One is a good one and
3## should be processed correctly. Second is a bad - it
4## missing DW_AT_addr_base attribute. All address attributes
5## inside this unit should be skipped.
6
7# RUN: yaml2obj %s -o %t.o
8# RUN: echo '---' > %t2.map
9# RUN: echo "triple:          'x86_64-apple-darwin'" >> %t2.map
10# RUN: echo 'objects:'  >> %t2.map
11# RUN: echo " -  filename: '%t.o'" >> %t2.map
12# RUN: echo '    symbols:' >> %t2.map
13# RUN: echo '      - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }' >> %t2.map
14# RUN: echo '...' >> %t2.map
15# RUN: dsymutil -y %t2.map -f -o - | llvm-dwarfdump -a - | FileCheck %s
16
17# CHECK: file format Mach-O 64-bit x86-64
18# CHECK: .debug_info contents:
19# CHECK: Compile Unit:
20# CHECK: DW_TAG_compile_unit
21# CHECK: DW_AT_name{{.*}}"GoodCU"
22# CHECK: DW_AT_low_pc
23# CHECK: DW_TAG_subprogram
24# CHECK: DW_AT_name{{.*}}"foo"
25# CHECK: DW_TAG_variable
26# CHECK: DW_AT_name{{.*}}"var1"
27# CHECK: DW_AT_location        (DW_OP_addr
28# CHECK: 0x00000043:   NULL
29# CHECK: Compile Unit:
30# CHECK: DW_TAG_compile_unit
31# CHECK-NOT: DW_AT_low_pc
32# CHECK: DW_AT_name{{.*}}"BadCU"
33# CHECK-NOT: DW_TAG_subprogram
34# CHECK-NOT: DW_TAG_variable
35# CHECK: 0x0000005b:   NULL
36
37--- !mach-o
38FileHeader:
39  magic:      0xFEEDFACF
40  cputype:    0x01000007
41  cpusubtype: 0x00000003
42  filetype:   0x00000001
43  ncmds:      2
44  sizeofcmds: 472
45  flags:      0x00002000
46  reserved:   0x00000000
47LoadCommands:
48  - cmd:      LC_SEGMENT_64
49    cmdsize:  312
50    segname:  ''
51    vmaddr:   0x00
52    vmsize:   0x300
53    fileoff:  0x300
54    filesize: 0x300
55    maxprot:  7
56    initprot: 7
57    nsects:   3
58    flags:    0
59    Sections:
60      - sectname:  __debug_abbrev
61        segname:   __DWARF
62        addr:      0x000000000000000F
63        size:      0x60
64        offset:    0x00000210
65        align:     0
66        reloff:    0x00000000
67        nreloc:    0
68        flags:     0x00000000
69        reserved1: 0x00000000
70        reserved2: 0x00000000
71        reserved3: 0x00000000
72      - sectname:  __debug_info
73        segname:   __DWARF
74        addr:      0x000000000000100
75        size:      0x9e
76        offset:    0x00000310
77        align:     0
78        reloff:    0x00000000
79        nreloc:    0
80        flags:     0x00000000
81        reserved1: 0x00000000
82        reserved2: 0x00000000
83        reserved3: 0x00000000
84      - sectname:  __debug_addr
85        segname:   __DWARF
86        addr:      0x0000000000000200
87        size:      0x30
88        offset:    0x00000400
89        align:     0
90        reloff:    0x00000600
91        nreloc:    2
92        flags:     0x02000000
93        reserved1: 0x00000000
94        reserved2: 0x00000000
95        reserved3: 0x00000000
96        relocations:
97          - address:         0x8
98            symbolnum:       1
99            pcrel:           true
100            length:          3
101            extern:          true
102            type:            0
103            scattered:       false
104            value:           0
105          - address:         0x1c
106            symbolnum:       1
107            pcrel:           true
108            length:          3
109            extern:          true
110            type:            0
111            scattered:       false
112            value:           0
113  - cmd:             LC_SYMTAB
114    cmdsize:         24
115    symoff:          0x700
116    nsyms:           2
117    stroff:          0x720
118    strsize:         10
119LinkEditData:
120  NameList:
121    - n_strx:          1
122      n_type:          0x0F
123      n_sect:          1
124      n_desc:          0
125      n_value:         0
126    - n_strx:          1
127      n_type:          0x0F
128      n_sect:          1
129      n_desc:          0
130      n_value:         0
131  StringTable:
132    - ''
133    - '__Z3foov'
134    - ''
135DWARF:
136  debug_abbrev:
137    - Table:
138      - Tag:      DW_TAG_compile_unit
139        Children: DW_CHILDREN_yes
140        Attributes:
141          - Attribute: DW_AT_producer
142            Form:      DW_FORM_string
143          - Attribute: DW_AT_language
144            Form:      DW_FORM_data2
145          - Attribute: DW_AT_name
146            Form:      DW_FORM_string
147          - Attribute: DW_AT_low_pc
148            Form:      DW_FORM_addrx
149          - Attribute: DW_AT_high_pc
150            Form:      DW_FORM_data8
151          - Attribute: DW_AT_addr_base
152            Form:      DW_FORM_sec_offset
153      - Tag:      DW_TAG_subprogram
154        Children: DW_CHILDREN_yes
155        Attributes:
156          - Attribute: DW_AT_name
157            Form:      DW_FORM_string
158          - Attribute: DW_AT_low_pc
159            Form:      DW_FORM_addrx
160          - Attribute: DW_AT_high_pc
161            Form:      DW_FORM_data8
162          - Attribute: DW_AT_type
163            Form:      DW_FORM_ref4
164      - Tag:      DW_TAG_base_type
165        Children: DW_CHILDREN_no
166        Attributes:
167          - Attribute: DW_AT_name
168            Form:      DW_FORM_string
169      - Tag:      DW_TAG_variable
170        Children: DW_CHILDREN_no
171        Attributes:
172          - Attribute: DW_AT_name
173            Form:      DW_FORM_string
174          - Attribute: DW_AT_type
175            Form:      DW_FORM_ref4
176          - Attribute: DW_AT_location
177            Form:      DW_FORM_exprloc
178    - Table:
179      - Tag:      DW_TAG_compile_unit
180        Children: DW_CHILDREN_yes
181        Attributes:
182          - Attribute: DW_AT_producer
183            Form:      DW_FORM_string
184          - Attribute: DW_AT_language
185            Form:      DW_FORM_data2
186          - Attribute: DW_AT_name
187            Form:      DW_FORM_string
188          - Attribute: DW_AT_low_pc
189            Form:      DW_FORM_addrx
190          - Attribute: DW_AT_high_pc
191            Form:      DW_FORM_data8
192      - Tag:      DW_TAG_subprogram
193        Children: DW_CHILDREN_yes
194        Attributes:
195          - Attribute: DW_AT_name
196            Form:      DW_FORM_string
197          - Attribute: DW_AT_low_pc
198            Form:      DW_FORM_addrx
199          - Attribute: DW_AT_high_pc
200            Form:      DW_FORM_data8
201          - Attribute: DW_AT_type
202            Form:      DW_FORM_ref4
203      - Tag:      DW_TAG_base_type
204        Children: DW_CHILDREN_no
205        Attributes:
206          - Attribute: DW_AT_name
207            Form:      DW_FORM_string
208      - Tag:      DW_TAG_variable
209        Children: DW_CHILDREN_no
210        Attributes:
211          - Attribute: DW_AT_name
212            Form:      DW_FORM_string
213          - Attribute: DW_AT_type
214            Form:      DW_FORM_ref4
215          - Attribute: DW_AT_location
216            Form:      DW_FORM_exprloc
217  debug_info:
218    - Version: 5
219      UnitType:   DW_UT_compile
220      Entries:
221        - AbbrCode: 1
222          Values:
223            - CStr: by_hand
224            - Value:  0x04
225            - CStr: GoodCU
226            - Value:  0x0
227            - Value:  0x10
228            - Value:  0x8
229        - AbbrCode: 2
230          Values:
231            - CStr: foo
232            - Value: 0x0
233            - Value: 0x10
234            - Value: 0x3e
235        - AbbrCode: 0
236        - AbbrCode: 3
237          Values:
238            - CStr: int
239        - AbbrCode: 4
240          Values:
241            - CStr: var1
242            - Value:  0x0000003e
243            - BlockData:
244                - 0xa1
245                - 0x00
246        - AbbrCode: 0
247    - Version: 5
248      UnitType:   DW_UT_compile
249      Entries:
250        - AbbrCode: 1
251          Values:
252            - CStr: by_hand
253            - Value:  0x04
254            - CStr: BadCU
255            - Value:  0x0
256            - Value:  0x10
257        - AbbrCode: 2
258          Values:
259            - CStr: foo1
260            - Value: 0x0
261            - Value: 0x10
262            - Value: 0x3e
263        - AbbrCode: 0
264        - AbbrCode: 3
265          Values:
266            - CStr: int
267        - AbbrCode: 4
268          Values:
269            - CStr: var1
270            - Value:  0x0000003e
271            - BlockData:
272                - 0xa1
273                - 0x00
274        - AbbrCode: 0
275  debug_addr:
276    - Version: 5
277      AddressSize: 0x08
278      Entries:
279        - Address: 0x1130
280    - Version: 5
281      AddressSize: 0x08
282      Entries:
283        - Address: 0x10
284...
285