382 lines · plain
1# RUN: yaml2obj %s -o %t.o2# RUN: echo '---' > %t2.map3# RUN: echo "triple: 'x86_64-apple-darwin'" >> %t2.map4# RUN: echo 'objects:' >> %t2.map5# RUN: echo " - filename: '%t.o'" >> %t2.map6# RUN: echo ' symbols:' >> %t2.map7# RUN: echo ' - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }' >> %t2.map8# RUN: echo '...' >> %t2.map9# RUN: dsymutil --linker=parallel -y %t2.map -f -o %t1.out10# RUN: llvm-dwarfdump -a %t1.out | FileCheck %s11 12## This test checks debug info for the case when one compilation unit13## contains forward declaration of the type and another compilation unit14## contains definition for that type. The result should have type table15## containing definition for that type and corresponding variables should16## properly reference that type.17 18## CU1:19##20## class class1;21## template<int> class class2;22##23## class1 *var1;24## class2<int> *var2;25##26## CU2:27##28## class class1 {29## char member1;30## float member2;31## };32##33## template<int> class class2 {34## char member1;35## };36##37## class1 *var1;38## class2<int> *var2;39 40# CHECK: file format Mach-O 64-bit x86-6441# CHECK: .debug_info contents:42# CHECK: Compile Unit:43# CHECK: DW_TAG_compile_unit44# CHECK: DW_AT_name{{.*}}"__artificial_type_unit"45 46# CHECK: 0x[[CHAR:[0-9a-f]*]]: DW_TAG_base_type47# CHECK: DW_AT_name{{.*}}"char"48 49# CHECK: 0x[[FLOAT:[0-9a-f]*]]: DW_TAG_base_type50# CHECK: DW_AT_name{{.*}}"float"51 52# CHECK: 0x[[INT:[0-9a-f]*]]: DW_TAG_base_type53# CHECK: DW_AT_name{{.*}}"int"54 55# CHECK: 0x[[CLASS1:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class1"56# CHECK: DW_TAG_member57# CHECK: DW_AT_type{{.*}}0x[[CHAR]] "char"58# CHECK: DW_AT_name{{.*}}"member1"59 60# CHECK: DW_TAG_member61# CHECK: DW_AT_type{{.*}}0x[[FLOAT]] "float"62# CHECK: DW_AT_name{{.*}}"member2"63 64# CHECK: 0x[[CLASS2:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class2"65# CHECK: DW_TAG_template_type_parameter{{.*[[:space:]].*}}DW_AT_type{{.*}}0x[[INT]] "int"66# CHECK: DW_TAG_member67# CHECK: DW_AT_type{{.*}}0x[[CHAR]] "char"68# CHECK: DW_AT_name{{.*}}"member1"69 70# CHECK: 0x[[PTR_CLASS1:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x[[CLASS1]] "class1"71 72# CHECK: 0x[[PTR_CLASS2:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x[[CLASS2]] "class2<int>"73 74# CHECK: DW_TAG_compile_unit75# CHECK: DW_AT_name{{.*}}"CU1"76# CHECK: DW_TAG_variable77# CHECK: DW_AT_name{{.*}}"var1"78# CHECK: DW_AT_type{{.*}}0x{{.*}}[[PTR_CLASS1]] "class1 *"79# CHECK: DW_TAG_variable80# CHECK: DW_AT_name{{.*}}"var2"81# CHECK: DW_AT_type{{.*}}0x{{.*}}[[PTR_CLASS2]] "class2<int> *"82 83# CHECK: DW_TAG_compile_unit84# CHECK: DW_AT_name{{.*}}"CU2"85# CHECK: DW_TAG_variable86# CHECK: DW_AT_name{{.*}}"var1"87# CHECK: DW_AT_type{{.*}}0x{{.*}}[[PTR_CLASS1]] "class1 *"88# CHECK: DW_TAG_variable89# CHECK: DW_AT_name{{.*}}"var2"90# CHECK: DW_AT_type{{.*}}0x{{.*}}[[PTR_CLASS2]] "class2<int> *"91 92--- !mach-o93FileHeader:94 magic: 0xFEEDFACF95 cputype: 0x0100000796 cpusubtype: 0x0000000397 filetype: 0x0000000198 ncmds: 299 sizeofcmds: 376100 flags: 0x00002000101 reserved: 0x00000000102LoadCommands:103 - cmd: LC_SEGMENT_64104 cmdsize: 232105 segname: ''106 vmaddr: 0x00107 vmsize: 0x300108 fileoff: 0x300109 filesize: 0x300110 maxprot: 7111 initprot: 7112 nsects: 2113 flags: 0114 Sections:115 - sectname: __debug_abbrev116 segname: __DWARF117 addr: 0x000000000000000F118 size: 0x9c119 offset: 0x00000380120 align: 0121 reloff: 0x00000000122 nreloc: 0123 flags: 0x02000000124 reserved1: 0x00000000125 reserved2: 0x00000000126 reserved3: 0x00000000127 - sectname: __debug_info128 segname: __DWARF129 addr: 0x000000000000100130 size: 0xed131 offset: 0x0000041c132 align: 0133 reloff: 0x00000600134 nreloc: 1135 flags: 0x02000000136 reserved1: 0x00000000137 reserved2: 0x00000000138 reserved3: 0x00000000139 relocations:140 - address: 0x000001FC141 symbolnum: 1142 pcrel: true143 length: 3144 extern: false145 type: 0146 scattered: false147 value: 0148 - cmd: LC_SYMTAB149 cmdsize: 24150 symoff: 0x700151 nsyms: 1152 stroff: 0x710153 strsize: 10154LinkEditData:155 NameList:156 - n_strx: 1157 n_type: 0x0F158 n_sect: 1159 n_desc: 0160 n_value: 0161 StringTable:162 - ''163 - '__Z3foov'164 - ''165DWARF:166 debug_abbrev:167 - Table:168 - Tag: DW_TAG_compile_unit169 Children: DW_CHILDREN_yes170 Attributes:171 - Attribute: DW_AT_producer172 Form: DW_FORM_string173 - Attribute: DW_AT_language174 Form: DW_FORM_data2175 - Attribute: DW_AT_name176 Form: DW_FORM_string177 - Tag: DW_TAG_class_type178 Children: DW_CHILDREN_yes179 Attributes:180 - Attribute: DW_AT_name181 Form: DW_FORM_string182 - Tag: DW_TAG_member183 Children: DW_CHILDREN_no184 Attributes:185 - Attribute: DW_AT_type186 Form: DW_FORM_ref_addr187 - Attribute: DW_AT_name188 Form: DW_FORM_string189 - Tag: DW_TAG_class_type190 Children: DW_CHILDREN_no191 Attributes:192 - Attribute: DW_AT_name193 Form: DW_FORM_string194 - Attribute: DW_AT_declaration195 Form: DW_FORM_flag_present196 - Tag: DW_TAG_class_type197 Children: DW_CHILDREN_yes198 Attributes:199 - Attribute: DW_AT_name200 Form: DW_FORM_string201 - Attribute: DW_AT_declaration202 Form: DW_FORM_flag_present203 - Tag: DW_TAG_template_type_parameter204 Children: DW_CHILDREN_no205 Attributes:206 - Attribute: DW_AT_type207 Form: DW_FORM_ref_addr208 - Tag: DW_TAG_base_type209 Children: DW_CHILDREN_no210 Attributes:211 - Attribute: DW_AT_name212 Form: DW_FORM_string213 - Tag: DW_TAG_pointer_type214 Children: DW_CHILDREN_no215 Attributes:216 - Attribute: DW_AT_type217 Form: DW_FORM_ref_addr218 - Tag: DW_TAG_variable219 Children: DW_CHILDREN_no220 Attributes:221 - Attribute: DW_AT_name222 Form: DW_FORM_string223 - Attribute: DW_AT_const_value224 Form: DW_FORM_data4225 - Attribute: DW_AT_type226 Form: DW_FORM_ref_addr227 - Table:228 - Tag: DW_TAG_compile_unit229 Children: DW_CHILDREN_yes230 Attributes:231 - Attribute: DW_AT_producer232 Form: DW_FORM_string233 - Attribute: DW_AT_language234 Form: DW_FORM_data2235 - Attribute: DW_AT_name236 Form: DW_FORM_string237 - Tag: DW_TAG_class_type238 Children: DW_CHILDREN_yes239 Attributes:240 - Attribute: DW_AT_name241 Form: DW_FORM_string242 - Tag: DW_TAG_member243 Children: DW_CHILDREN_no244 Attributes:245 - Attribute: DW_AT_type246 Form: DW_FORM_ref_addr247 - Attribute: DW_AT_name248 Form: DW_FORM_string249 - Tag: DW_TAG_class_type250 Children: DW_CHILDREN_no251 Attributes:252 - Attribute: DW_AT_name253 Form: DW_FORM_string254 - Attribute: DW_AT_declaration255 Form: DW_FORM_flag_present256 - Tag: DW_TAG_class_type257 Children: DW_CHILDREN_yes258 Attributes:259 - Attribute: DW_AT_name260 Form: DW_FORM_string261 - Attribute: DW_AT_declaration262 Form: DW_FORM_flag_present263 - Tag: DW_TAG_template_type_parameter264 Children: DW_CHILDREN_no265 Attributes:266 - Attribute: DW_AT_type267 Form: DW_FORM_ref_addr268 - Tag: DW_TAG_base_type269 Children: DW_CHILDREN_no270 Attributes:271 - Attribute: DW_AT_name272 Form: DW_FORM_string273 - Tag: DW_TAG_pointer_type274 Children: DW_CHILDREN_no275 Attributes:276 - Attribute: DW_AT_type277 Form: DW_FORM_ref_addr278 - Tag: DW_TAG_variable279 Children: DW_CHILDREN_no280 Attributes:281 - Attribute: DW_AT_name282 Form: DW_FORM_string283 - Attribute: DW_AT_const_value284 Form: DW_FORM_data4285 - Attribute: DW_AT_type286 Form: DW_FORM_ref_addr287 debug_info:288 - Version: 4289 Entries:290 - AbbrCode: 1291 Values:292 - CStr: by_hand293 - Value: 0x04294 - CStr: CU1295 - AbbrCode: 4296 Values:297 - CStr: class1298 - AbbrCode: 5299 Values:300 - CStr: class2301 - AbbrCode: 6302 Values:303 - Value: 0x00000030304 - AbbrCode: 0305 - AbbrCode: 7306 Values:307 - CStr: int308 - AbbrCode: 8309 Values:310 - Value: 0x0000001a311 - AbbrCode: 8312 Values:313 - Value: 0x00000022314 - AbbrCode: 9315 Values:316 - CStr: var1317 - Value: 0x00000000318 - Value: 0x00000035319 - AbbrCode: 9320 Values:321 - CStr: var2322 - Value: 0x00000000323 - Value: 0x0000003a324 - AbbrCode: 0325 - Version: 4326 Entries:327 - AbbrCode: 1328 Values:329 - CStr: by_hand330 - Value: 0x04331 - CStr: CU2332 - AbbrCode: 2333 Values:334 - CStr: class1335 - AbbrCode: 3336 Values:337 - Value: 0x000000b9338 - CStr: member1339 - AbbrCode: 3340 Values:341 - Value: 0x000000bf342 - CStr: member2343 - AbbrCode: 0344 - AbbrCode: 2345 Values:346 - CStr: class2347 - AbbrCode: 6348 Values:349 - Value: 0x000000b4350 - AbbrCode: 3351 Values:352 - Value: 0x000000b9353 - CStr: member1354 - AbbrCode: 0355 - AbbrCode: 7356 Values:357 - CStr: int358 - AbbrCode: 7359 Values:360 - CStr: char361 - AbbrCode: 7362 Values:363 - CStr: float364 - AbbrCode: 8365 Values:366 - Value: 0x00000076367 - AbbrCode: 8368 Values:369 - Value: 0x00000099370 - AbbrCode: 9371 Values:372 - CStr: var1373 - Value: 0x00000000374 - Value: 0x000000c6375 - AbbrCode: 9376 Values:377 - CStr: var2378 - Value: 0x00000000379 - Value: 0x000000cb380 - AbbrCode: 0381...382