xref: /llvm-project/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-template-parameters.test (revision f1fdfe6888f93b9f6dfb4689e1f3206de584ff5b)
1b61ac4a8Savl-llvm# RUN: yaml2obj %s -o %t.o
2b61ac4a8Savl-llvm# RUN: echo '---' > %t2.map
3b61ac4a8Savl-llvm# RUN: echo "triple:          'x86_64-apple-darwin'" >> %t2.map
4b61ac4a8Savl-llvm# RUN: echo 'objects:'  >> %t2.map
5b61ac4a8Savl-llvm# RUN: echo " -  filename: '%t.o'" >> %t2.map
6b61ac4a8Savl-llvm# RUN: echo '    symbols:' >> %t2.map
7b61ac4a8Savl-llvm# RUN: echo '      - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }' >> %t2.map
8b61ac4a8Savl-llvm# RUN: echo '...' >> %t2.map
9*f1fdfe68SAlexey Lapshin# RUN: dsymutil --linker=parallel -y %t2.map -f -o - | llvm-dwarfdump -a - | FileCheck %s
10b61ac4a8Savl-llvm
11b61ac4a8Savl-llvm## This test checks debug info for the template parameters of the class.
12b61ac4a8Savl-llvm## (i.e. number of the parameters is correct, names of the parameters
13b61ac4a8Savl-llvm## are correct, types of the parameters are correct)
14b61ac4a8Savl-llvm
15b61ac4a8Savl-llvm# CHECK: file format Mach-O 64-bit x86-64
16b61ac4a8Savl-llvm# CHECK: 0x0000000b: DW_TAG_compile_unit
17b61ac4a8Savl-llvm# CHECK: DW_AT_producer{{.*}}"llvm DWARFLinkerParallel library version
18b61ac4a8Savl-llvm# CHECK: DW_AT_language{{.*}}DW_LANG_C_plus_plus
19b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"__artificial_type_unit"
20b61ac4a8Savl-llvm# CHECK: 0x[[CHAR:[0-9a-f]*]]: DW_TAG_base_type
21b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"char"
22b61ac4a8Savl-llvm# CHECK: 0x[[FLOAT:[0-9a-f]*]]: DW_TAG_base_type
23b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"float"
24b61ac4a8Savl-llvm# CHECK: 0x[[INT:[0-9a-f]*]]: DW_TAG_base_type
25b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"int"
26b61ac4a8Savl-llvm# CHECK: 0x[[CLASS:[0-9a-f]*]]: DW_TAG_class_type
27b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"parametrized-class"
28b61ac4a8Savl-llvm# CHECK: DW_TAG_template_type_parameter
29b61ac4a8Savl-llvm# CHECK: DW_AT_type{{.*}}(0x[[INT]] "int"
30b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"Type1"
31b61ac4a8Savl-llvm# CHECK: DW_AT_type{{.*}}(0x[[CHAR]] "char"
32b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"Type2"
33b61ac4a8Savl-llvm# CHECK: DW_AT_type{{.*}}(0x[[FLOAT]] "float"
34b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"Type3"
35b61ac4a8Savl-llvm# CHECK: DW_TAG_compile_unit
36b61ac4a8Savl-llvm# CHECK: DW_TAG_variable
37b61ac4a8Savl-llvm# CHECK: DW_AT_type      (0x00000000[[CLASS]]
38b61ac4a8Savl-llvm
39b61ac4a8Savl-llvm
40b61ac4a8Savl-llvm--- !mach-o
41b61ac4a8Savl-llvmFileHeader:
42b61ac4a8Savl-llvm  magic:      0xFEEDFACF
43b61ac4a8Savl-llvm  cputype:    0x01000007
44b61ac4a8Savl-llvm  cpusubtype: 0x00000003
45b61ac4a8Savl-llvm  filetype:   0x00000001
46b61ac4a8Savl-llvm  ncmds:      2
47b61ac4a8Savl-llvm  sizeofcmds: 376
48b61ac4a8Savl-llvm  flags:      0x00002000
49b61ac4a8Savl-llvm  reserved:   0x00000000
50b61ac4a8Savl-llvmLoadCommands:
51b61ac4a8Savl-llvm  - cmd:      LC_SEGMENT_64
52b61ac4a8Savl-llvm    cmdsize:  232
53b61ac4a8Savl-llvm    segname:  ''
54b61ac4a8Savl-llvm    vmaddr:   0x00
55b61ac4a8Savl-llvm    vmsize:   0x300
56b61ac4a8Savl-llvm    fileoff:  0x300
57b61ac4a8Savl-llvm    filesize: 0x300
58b61ac4a8Savl-llvm    maxprot:  7
59b61ac4a8Savl-llvm    initprot: 7
60b61ac4a8Savl-llvm    nsects:   2
61b61ac4a8Savl-llvm    flags:    0
62b61ac4a8Savl-llvm    Sections:
63b61ac4a8Savl-llvm      - sectname:  __debug_abbrev
64b61ac4a8Savl-llvm        segname:   __DWARF
65b61ac4a8Savl-llvm        addr:      0x000000000000000F
66b61ac4a8Savl-llvm        size:      0x37
67b61ac4a8Savl-llvm        offset:    0x00000380
68b61ac4a8Savl-llvm        align:     0
69b61ac4a8Savl-llvm        reloff:    0x00000000
70b61ac4a8Savl-llvm        nreloc:    0
71b61ac4a8Savl-llvm        flags:     0x02000000
72b61ac4a8Savl-llvm        reserved1: 0x00000000
73b61ac4a8Savl-llvm        reserved2: 0x00000000
74b61ac4a8Savl-llvm        reserved3: 0x00000000
75b61ac4a8Savl-llvm      - sectname:  __debug_info
76b61ac4a8Savl-llvm        segname:   __DWARF
77b61ac4a8Savl-llvm        addr:      0x000000000000100
78b61ac4a8Savl-llvm        size:      0x7B
79b61ac4a8Savl-llvm        offset:    0x000003B7
80b61ac4a8Savl-llvm        align:     0
81b61ac4a8Savl-llvm        reloff:    0x00000600
82b61ac4a8Savl-llvm        nreloc:    1
83b61ac4a8Savl-llvm        flags:     0x02000000
84b61ac4a8Savl-llvm        reserved1: 0x00000000
85b61ac4a8Savl-llvm        reserved2: 0x00000000
86b61ac4a8Savl-llvm        reserved3: 0x00000000
87b61ac4a8Savl-llvm        relocations:
88b61ac4a8Savl-llvm          - address:         0x000001FC
89b61ac4a8Savl-llvm            symbolnum:       1
90b61ac4a8Savl-llvm            pcrel:           true
91b61ac4a8Savl-llvm            length:          3
92b61ac4a8Savl-llvm            extern:          false
93b61ac4a8Savl-llvm            type:            0
94b61ac4a8Savl-llvm            scattered:       false
95b61ac4a8Savl-llvm            value:           0
96b61ac4a8Savl-llvm  - cmd:             LC_SYMTAB
97b61ac4a8Savl-llvm    cmdsize:         24
98b61ac4a8Savl-llvm    symoff:          0x700
99b61ac4a8Savl-llvm    nsyms:           1
100b61ac4a8Savl-llvm    stroff:          0x710
101b61ac4a8Savl-llvm    strsize:         10
102b61ac4a8Savl-llvmLinkEditData:
103b61ac4a8Savl-llvm  NameList:
104b61ac4a8Savl-llvm    - n_strx:          1
105b61ac4a8Savl-llvm      n_type:          0x0F
106b61ac4a8Savl-llvm      n_sect:          1
107b61ac4a8Savl-llvm      n_desc:          0
108b61ac4a8Savl-llvm      n_value:         0
109b61ac4a8Savl-llvm  StringTable:
110b61ac4a8Savl-llvm    - ''
111b61ac4a8Savl-llvm    - '__Z3foov'
112b61ac4a8Savl-llvm    - ''
113b61ac4a8Savl-llvmDWARF:
114b61ac4a8Savl-llvm  debug_abbrev:
115b61ac4a8Savl-llvm    - Table:
116b61ac4a8Savl-llvm      - Tag:      DW_TAG_compile_unit
117b61ac4a8Savl-llvm        Children: DW_CHILDREN_yes
118b61ac4a8Savl-llvm        Attributes:
119b61ac4a8Savl-llvm          - Attribute: DW_AT_producer
120b61ac4a8Savl-llvm            Form:      DW_FORM_string
121b61ac4a8Savl-llvm          - Attribute: DW_AT_language
122b61ac4a8Savl-llvm            Form:      DW_FORM_data2
123b61ac4a8Savl-llvm      - Tag:      DW_TAG_class_type
124b61ac4a8Savl-llvm        Children: DW_CHILDREN_yes
125b61ac4a8Savl-llvm        Attributes:
126b61ac4a8Savl-llvm          - Attribute: DW_AT_name
127b61ac4a8Savl-llvm            Form:      DW_FORM_string
128b61ac4a8Savl-llvm      - Tag:      DW_TAG_template_type_parameter
129b61ac4a8Savl-llvm        Children: DW_CHILDREN_no
130b61ac4a8Savl-llvm        Attributes:
131b61ac4a8Savl-llvm          - Attribute: DW_AT_type
132b61ac4a8Savl-llvm            Form:      DW_FORM_ref_addr
133b61ac4a8Savl-llvm          - Attribute: DW_AT_name
134b61ac4a8Savl-llvm            Form:      DW_FORM_string
135b61ac4a8Savl-llvm      - Tag:      DW_TAG_template_value_parameter
136b61ac4a8Savl-llvm        Children: DW_CHILDREN_no
137b61ac4a8Savl-llvm        Attributes:
138b61ac4a8Savl-llvm          - Attribute: DW_AT_type
139b61ac4a8Savl-llvm            Form:      DW_FORM_ref_addr
140b61ac4a8Savl-llvm          - Attribute: DW_AT_name
141b61ac4a8Savl-llvm            Form:      DW_FORM_string
142b61ac4a8Savl-llvm          - Attribute: DW_AT_const_value
143b61ac4a8Savl-llvm            Form:      DW_FORM_data4
144b61ac4a8Savl-llvm      - Tag:      DW_TAG_base_type
145b61ac4a8Savl-llvm        Children: DW_CHILDREN_no
146b61ac4a8Savl-llvm        Attributes:
147b61ac4a8Savl-llvm          - Attribute: DW_AT_name
148b61ac4a8Savl-llvm            Form:      DW_FORM_string
149b61ac4a8Savl-llvm      - Tag:      DW_TAG_variable
150b61ac4a8Savl-llvm        Children: DW_CHILDREN_no
151b61ac4a8Savl-llvm        Attributes:
152b61ac4a8Savl-llvm          - Attribute: DW_AT_name
153b61ac4a8Savl-llvm            Form:      DW_FORM_string
154b61ac4a8Savl-llvm          - Attribute: DW_AT_const_value
155b61ac4a8Savl-llvm            Form:      DW_FORM_data4
156b61ac4a8Savl-llvm          - Attribute: DW_AT_type
157b61ac4a8Savl-llvm            Form:      DW_FORM_ref_addr
158b61ac4a8Savl-llvm  debug_info:
159b61ac4a8Savl-llvm    - Version: 4
160b61ac4a8Savl-llvm      Entries:
161b61ac4a8Savl-llvm        - AbbrCode: 1
162b61ac4a8Savl-llvm          Values:
163b61ac4a8Savl-llvm            - CStr: by_hand
164b61ac4a8Savl-llvm            - Value:  0x04
165b61ac4a8Savl-llvm        - AbbrCode: 2
166b61ac4a8Savl-llvm          Values:
167b61ac4a8Savl-llvm            - CStr: parametrized-class
168b61ac4a8Savl-llvm        - AbbrCode: 3
169b61ac4a8Savl-llvm          Values:
170b61ac4a8Savl-llvm            - Value:  0x0000005B
171b61ac4a8Savl-llvm            - CStr: Type1
172b61ac4a8Savl-llvm        - AbbrCode: 3
173b61ac4a8Savl-llvm          Values:
174b61ac4a8Savl-llvm            - Value:  0x00000060
175b61ac4a8Savl-llvm            - CStr: Type2
176b61ac4a8Savl-llvm        - AbbrCode: 4
177b61ac4a8Savl-llvm          Values:
178b61ac4a8Savl-llvm            - Value:  0x0000005B
179b61ac4a8Savl-llvm            - CStr: Type1
180b61ac4a8Savl-llvm            - Value:  0x0FE
181b61ac4a8Savl-llvm        - AbbrCode: 3
182b61ac4a8Savl-llvm          Values:
183b61ac4a8Savl-llvm            - Value:  0x00000066
184b61ac4a8Savl-llvm            - CStr: Type3
185b61ac4a8Savl-llvm        - AbbrCode: 0
186b61ac4a8Savl-llvm        - AbbrCode: 5
187b61ac4a8Savl-llvm          Values:
188b61ac4a8Savl-llvm            - CStr: int
189b61ac4a8Savl-llvm        - AbbrCode: 5
190b61ac4a8Savl-llvm          Values:
191b61ac4a8Savl-llvm            - CStr: char
192b61ac4a8Savl-llvm        - AbbrCode: 5
193b61ac4a8Savl-llvm          Values:
194b61ac4a8Savl-llvm            - CStr: float
195b61ac4a8Savl-llvm        - AbbrCode: 6
196b61ac4a8Savl-llvm          Values:
197b61ac4a8Savl-llvm            - CStr: var
198b61ac4a8Savl-llvm            - Value:  0x000000FF
199b61ac4a8Savl-llvm            - Value:  0x00000016
200b61ac4a8Savl-llvm        - AbbrCode: 0
201b61ac4a8Savl-llvm...
202