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