1b61ac4a8Savl-llvm## This test checks output of dsymutil for the incorrect DWARF. 2b61ac4a8Savl-llvm## CU1 has a type which references type in CU2. This referenced 3b61ac4a8Savl-llvm## type references the same type in CU1 back. There is a recursive 4b61ac4a8Savl-llvm## dependence between these two types. dsymutil should report a error, 5b61ac4a8Savl-llvm## remove CU1 and CU2, put only CU3 into the output. 6b61ac4a8Savl-llvm 7b61ac4a8Savl-llvm# RUN: yaml2obj %s -o %t.o 8b61ac4a8Savl-llvm# RUN: echo '---' > %t2.map 9b61ac4a8Savl-llvm# RUN: echo "triple: 'x86_64-apple-darwin'" >> %t2.map 10b61ac4a8Savl-llvm# RUN: echo 'objects:' >> %t2.map 11b61ac4a8Savl-llvm# RUN: echo " - filename: '%t.o'" >> %t2.map 12b61ac4a8Savl-llvm# RUN: echo ' symbols:' >> %t2.map 13b61ac4a8Savl-llvm# RUN: echo ' - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }' >> %t2.map 14b61ac4a8Savl-llvm# RUN: echo '...' >> %t2.map 15*f1fdfe68SAlexey Lapshin# RUN: dsymutil --linker parallel -y %t2.map --num-threads 1 -f -o %t1.out 2>&1 \ 16b61ac4a8Savl-llvm# RUN: | FileCheck --check-prefix ERROR %s 17b61ac4a8Savl-llvm# RUN: llvm-dwarfdump -a %t1.out | FileCheck %s 18b61ac4a8Savl-llvm 19b61ac4a8Savl-llvm# ERROR: error: Cann't parse input DWARF. Recursive dependence. 20b61ac4a8Savl-llvm# ERROR: while processing CU1 21b61ac4a8Savl-llvm# ERROR: error: Cann't resolve DIE reference 22b61ac4a8Savl-llvm# ERROR: while processing CU2 23b61ac4a8Savl-llvm 24b61ac4a8Savl-llvm# CHECK: file format Mach-O 64-bit x86-64 25b61ac4a8Savl-llvm# CHECK: .debug_info contents: 26b61ac4a8Savl-llvm# CHECK: Compile Unit: 27b61ac4a8Savl-llvm# CHECK: DW_TAG_compile_unit 28b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"__artificial_type_unit" 29b61ac4a8Savl-llvm# CHECK: 0x[[CLASS1:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class1" 30b61ac4a8Savl-llvm 31b61ac4a8Savl-llvm# CHECK: Compile Unit: 32b61ac4a8Savl-llvm# CHECK: DW_TAG_compile_unit 33b61ac4a8Savl-llvm# CHECK-NOT: "CU1" 34b61ac4a8Savl-llvm# CHECK-NOT: "CU2" 35b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"CU3" 36b61ac4a8Savl-llvm# CHECK-NOT: DW_TAG_class_type 37b61ac4a8Savl-llvm# CHECK: DW_TAG_variable 38b61ac4a8Savl-llvm# CHECK: DW_AT_name{{.*}}"var3" 39b61ac4a8Savl-llvm# CHECK: DW_AT_const_value 40b61ac4a8Savl-llvm# CHECK: DW_AT_type (0x00000000[[CLASS1]] 41b61ac4a8Savl-llvm 42b61ac4a8Savl-llvm# CHECK-NOT: Compile Unit: 43b61ac4a8Savl-llvm 44b61ac4a8Savl-llvm--- !mach-o 45b61ac4a8Savl-llvmFileHeader: 46b61ac4a8Savl-llvm magic: 0xFEEDFACF 47b61ac4a8Savl-llvm cputype: 0x01000007 48b61ac4a8Savl-llvm cpusubtype: 0x00000003 49b61ac4a8Savl-llvm filetype: 0x00000001 50b61ac4a8Savl-llvm ncmds: 2 51b61ac4a8Savl-llvm sizeofcmds: 376 52b61ac4a8Savl-llvm flags: 0x00002000 53b61ac4a8Savl-llvm reserved: 0x00000000 54b61ac4a8Savl-llvmLoadCommands: 55b61ac4a8Savl-llvm - cmd: LC_SEGMENT_64 56b61ac4a8Savl-llvm cmdsize: 232 57b61ac4a8Savl-llvm segname: '' 58b61ac4a8Savl-llvm vmaddr: 0x00 59b61ac4a8Savl-llvm vmsize: 0x300 60b61ac4a8Savl-llvm fileoff: 0x300 61b61ac4a8Savl-llvm filesize: 0x300 62b61ac4a8Savl-llvm maxprot: 7 63b61ac4a8Savl-llvm initprot: 7 64b61ac4a8Savl-llvm nsects: 2 65b61ac4a8Savl-llvm flags: 0 66b61ac4a8Savl-llvm Sections: 67b61ac4a8Savl-llvm - sectname: __debug_abbrev 68b61ac4a8Savl-llvm segname: __DWARF 69b61ac4a8Savl-llvm addr: 0x000000000000000F 70b61ac4a8Savl-llvm size: 0x5a 71b61ac4a8Savl-llvm offset: 0x00000380 72b61ac4a8Savl-llvm align: 0 73b61ac4a8Savl-llvm reloff: 0x00000000 74b61ac4a8Savl-llvm nreloc: 0 75b61ac4a8Savl-llvm flags: 0x02000000 76b61ac4a8Savl-llvm reserved1: 0x00000000 77b61ac4a8Savl-llvm reserved2: 0x00000000 78b61ac4a8Savl-llvm reserved3: 0x00000000 79b61ac4a8Savl-llvm - sectname: __debug_info 80b61ac4a8Savl-llvm segname: __DWARF 81b61ac4a8Savl-llvm addr: 0x000000000000100 82b61ac4a8Savl-llvm size: 0x8d 83b61ac4a8Savl-llvm offset: 0x00000410 84b61ac4a8Savl-llvm align: 0 85b61ac4a8Savl-llvm reloff: 0x00000600 86b61ac4a8Savl-llvm nreloc: 1 87b61ac4a8Savl-llvm flags: 0x02000000 88b61ac4a8Savl-llvm reserved1: 0x00000000 89b61ac4a8Savl-llvm reserved2: 0x00000000 90b61ac4a8Savl-llvm reserved3: 0x00000000 91b61ac4a8Savl-llvm relocations: 92b61ac4a8Savl-llvm - address: 0x1FC 93b61ac4a8Savl-llvm symbolnum: 1 94b61ac4a8Savl-llvm pcrel: true 95b61ac4a8Savl-llvm length: 3 96b61ac4a8Savl-llvm extern: true 97b61ac4a8Savl-llvm type: 0 98b61ac4a8Savl-llvm scattered: false 99b61ac4a8Savl-llvm value: 0 100b61ac4a8Savl-llvm - cmd: LC_SYMTAB 101b61ac4a8Savl-llvm cmdsize: 24 102b61ac4a8Savl-llvm symoff: 0x700 103b61ac4a8Savl-llvm nsyms: 2 104b61ac4a8Savl-llvm stroff: 0x720 105b61ac4a8Savl-llvm strsize: 10 106b61ac4a8Savl-llvmLinkEditData: 107b61ac4a8Savl-llvm NameList: 108b61ac4a8Savl-llvm - n_strx: 1 109b61ac4a8Savl-llvm n_type: 0x0F 110b61ac4a8Savl-llvm n_sect: 1 111b61ac4a8Savl-llvm n_desc: 0 112b61ac4a8Savl-llvm n_value: 0 113b61ac4a8Savl-llvm - n_strx: 1 114b61ac4a8Savl-llvm n_type: 0x0F 115b61ac4a8Savl-llvm n_sect: 1 116b61ac4a8Savl-llvm n_desc: 0 117b61ac4a8Savl-llvm n_value: 0 118b61ac4a8Savl-llvm StringTable: 119b61ac4a8Savl-llvm - '' 120b61ac4a8Savl-llvm - '__Z3foov' 121b61ac4a8Savl-llvm - '' 122b61ac4a8Savl-llvmDWARF: 123b61ac4a8Savl-llvm debug_abbrev: 124b61ac4a8Savl-llvm - Table: 125b61ac4a8Savl-llvm - Tag: DW_TAG_compile_unit 126b61ac4a8Savl-llvm Children: DW_CHILDREN_yes 127b61ac4a8Savl-llvm Attributes: 128b61ac4a8Savl-llvm - Attribute: DW_AT_producer 129b61ac4a8Savl-llvm Form: DW_FORM_string 130b61ac4a8Savl-llvm - Attribute: DW_AT_language 131b61ac4a8Savl-llvm Form: DW_FORM_data2 132b61ac4a8Savl-llvm - Attribute: DW_AT_name 133b61ac4a8Savl-llvm Form: DW_FORM_string 134b61ac4a8Savl-llvm - Tag: DW_TAG_pointer_type 135b61ac4a8Savl-llvm Children: DW_CHILDREN_no 136b61ac4a8Savl-llvm Attributes: 137b61ac4a8Savl-llvm - Attribute: DW_AT_type 138b61ac4a8Savl-llvm Form: DW_FORM_ref_addr 139b61ac4a8Savl-llvm - Tag: DW_TAG_variable 140b61ac4a8Savl-llvm Children: DW_CHILDREN_no 141b61ac4a8Savl-llvm Attributes: 142b61ac4a8Savl-llvm - Attribute: DW_AT_name 143b61ac4a8Savl-llvm Form: DW_FORM_string 144b61ac4a8Savl-llvm - Attribute: DW_AT_const_value 145b61ac4a8Savl-llvm Form: DW_FORM_data4 146b61ac4a8Savl-llvm - Attribute: DW_AT_type 147b61ac4a8Savl-llvm Form: DW_FORM_ref4 148b61ac4a8Savl-llvm - Table: 149b61ac4a8Savl-llvm - Tag: DW_TAG_compile_unit 150b61ac4a8Savl-llvm Children: DW_CHILDREN_yes 151b61ac4a8Savl-llvm Attributes: 152b61ac4a8Savl-llvm - Attribute: DW_AT_producer 153b61ac4a8Savl-llvm Form: DW_FORM_string 154b61ac4a8Savl-llvm - Attribute: DW_AT_language 155b61ac4a8Savl-llvm Form: DW_FORM_data2 156b61ac4a8Savl-llvm - Attribute: DW_AT_name 157b61ac4a8Savl-llvm Form: DW_FORM_string 158b61ac4a8Savl-llvm - Tag: DW_TAG_pointer_type 159b61ac4a8Savl-llvm Children: DW_CHILDREN_no 160b61ac4a8Savl-llvm Attributes: 161b61ac4a8Savl-llvm - Attribute: DW_AT_type 162b61ac4a8Savl-llvm Form: DW_FORM_ref_addr 163b61ac4a8Savl-llvm - Tag: DW_TAG_variable 164b61ac4a8Savl-llvm Children: DW_CHILDREN_no 165b61ac4a8Savl-llvm Attributes: 166b61ac4a8Savl-llvm - Attribute: DW_AT_name 167b61ac4a8Savl-llvm Form: DW_FORM_string 168b61ac4a8Savl-llvm - Attribute: DW_AT_const_value 169b61ac4a8Savl-llvm Form: DW_FORM_data4 170b61ac4a8Savl-llvm - Attribute: DW_AT_type 171b61ac4a8Savl-llvm Form: DW_FORM_ref4 172b61ac4a8Savl-llvm - Table: 173b61ac4a8Savl-llvm - Tag: DW_TAG_compile_unit 174b61ac4a8Savl-llvm Children: DW_CHILDREN_yes 175b61ac4a8Savl-llvm Attributes: 176b61ac4a8Savl-llvm - Attribute: DW_AT_producer 177b61ac4a8Savl-llvm Form: DW_FORM_string 178b61ac4a8Savl-llvm - Attribute: DW_AT_language 179b61ac4a8Savl-llvm Form: DW_FORM_data2 180b61ac4a8Savl-llvm - Attribute: DW_AT_name 181b61ac4a8Savl-llvm Form: DW_FORM_string 182b61ac4a8Savl-llvm - Tag: DW_TAG_class_type 183b61ac4a8Savl-llvm Children: DW_CHILDREN_no 184b61ac4a8Savl-llvm Attributes: 185b61ac4a8Savl-llvm - Attribute: DW_AT_name 186b61ac4a8Savl-llvm Form: DW_FORM_string 187b61ac4a8Savl-llvm - Tag: DW_TAG_variable 188b61ac4a8Savl-llvm Children: DW_CHILDREN_no 189b61ac4a8Savl-llvm Attributes: 190b61ac4a8Savl-llvm - Attribute: DW_AT_name 191b61ac4a8Savl-llvm Form: DW_FORM_string 192b61ac4a8Savl-llvm - Attribute: DW_AT_const_value 193b61ac4a8Savl-llvm Form: DW_FORM_data4 194b61ac4a8Savl-llvm - Attribute: DW_AT_type 195b61ac4a8Savl-llvm Form: DW_FORM_ref4 196b61ac4a8Savl-llvm debug_info: 197b61ac4a8Savl-llvm - Version: 4 198b61ac4a8Savl-llvm Entries: 199b61ac4a8Savl-llvm - AbbrCode: 1 200b61ac4a8Savl-llvm Values: 201b61ac4a8Savl-llvm - CStr: by_hand 202b61ac4a8Savl-llvm - Value: 0x04 203b61ac4a8Savl-llvm - CStr: CU1 204b61ac4a8Savl-llvm - AbbrCode: 2 205b61ac4a8Savl-llvm Values: 206b61ac4a8Savl-llvm - Value: 0x48 207b61ac4a8Savl-llvm - AbbrCode: 3 208b61ac4a8Savl-llvm Values: 209b61ac4a8Savl-llvm - CStr: var1 210b61ac4a8Savl-llvm - Value: 0x00000000 211b61ac4a8Savl-llvm - Value: 0x0000001a 212b61ac4a8Savl-llvm - AbbrCode: 0 213b61ac4a8Savl-llvm - Version: 4 214b61ac4a8Savl-llvm Entries: 215b61ac4a8Savl-llvm - AbbrCode: 1 216b61ac4a8Savl-llvm Values: 217b61ac4a8Savl-llvm - CStr: by_hand 218b61ac4a8Savl-llvm - Value: 0x04 219b61ac4a8Savl-llvm - CStr: CU2 220b61ac4a8Savl-llvm - AbbrCode: 2 221b61ac4a8Savl-llvm Values: 222b61ac4a8Savl-llvm - Value: 0x1a 223b61ac4a8Savl-llvm - AbbrCode: 3 224b61ac4a8Savl-llvm Values: 225b61ac4a8Savl-llvm - CStr: var2 226b61ac4a8Savl-llvm - Value: 0x00000000 227b61ac4a8Savl-llvm - Value: 0x0000001a 228b61ac4a8Savl-llvm - AbbrCode: 0 229b61ac4a8Savl-llvm - Version: 4 230b61ac4a8Savl-llvm Entries: 231b61ac4a8Savl-llvm - AbbrCode: 1 232b61ac4a8Savl-llvm Values: 233b61ac4a8Savl-llvm - CStr: by_hand 234b61ac4a8Savl-llvm - Value: 0x04 235b61ac4a8Savl-llvm - CStr: CU3 236b61ac4a8Savl-llvm - AbbrCode: 2 237b61ac4a8Savl-llvm Values: 238b61ac4a8Savl-llvm - CStr: class1 239b61ac4a8Savl-llvm - AbbrCode: 3 240b61ac4a8Savl-llvm Values: 241b61ac4a8Savl-llvm - CStr: var3 242b61ac4a8Savl-llvm - Value: 0x00000000 243b61ac4a8Savl-llvm - Value: 0x0000001a 244b61ac4a8Savl-llvm - AbbrCode: 0 245b61ac4a8Savl-llvm... 246