345 lines · plain
1## This test checks debug info for the case when one compilation unit2## contains a definition of a type and another compilation unit3## contains a definition of the same type. When --garbage-collection4## is enabled the result should contain the original definition in CU15## and the definition from CU2 should have been removed.6 7# RUN: yaml2obj %s -o %t.o8 9## Check --odr-deduplication.10# RUN: llvm-dwarfutil %t.o %t111# RUN: llvm-dwarfdump -a %t1 | FileCheck %s --check-prefixes=CHECK,CHECK-ODR12 13## Check --odr alias.14# RUN: llvm-dwarfutil --odr %t.o %t215# RUN: cmp %t1 %t216 17## Check --no-odr alias.18# RUN: llvm-dwarfutil --no-odr %t.o %t319# RUN: llvm-dwarfdump -a %t3 | FileCheck %s --check-prefixes=CHECK,CHECK-NOODR20 21## Check --no-odr-deduplication wins if last.22# RUN: llvm-dwarfutil --odr-deduplication --no-odr-deduplication %t.o %t423# RUN: cmp %t3 %t424 25## Check --odr-deduplication wins if last.26# RUN: llvm-dwarfutil --no-odr-deduplication --odr-deduplication %t.o %t627# RUN: cmp %t1 %t628 29## CU1:30##31## class class1 {32## char member1;33## float member2;34## };35##36## class1 *var1;37##38## CU2:39##40## class class1 {41## char member1;42## float member2;43## };44##45## class1 *var1;46 47# CHECK: file format elf64-x86-6448# CHECK: .debug_info contents:49 50# CHECK: DW_TAG_compile_unit51# CHECK: DW_AT_name{{.*}}"CU1"52 53# CHECK: 0x[[CU1_CLASS1:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class1"54# CHECK: DW_TAG_member55# CHECK-ODR: DW_AT_type{{.*}}0x00000000[[CU1_CHAR:[0-9a-f]*]] "char"56# CHECK-NOODR: DW_AT_type{{.*}}0x[[CU1_CHAR:[0-9a-f]*]] "char"57# CHECK: DW_AT_name{{.*}}"member1"58 59# CHECK: DW_TAG_member60# CHECK-ODR: DW_AT_type{{.*}}0x00000000[[CU1_FLOAT:[0-9a-f]*]] "float"61# CHECK-NOODR: DW_AT_type{{.*}}0x[[CU1_FLOAT:[0-9a-f]*]] "float"62# CHECK: DW_AT_name{{.*}}"member2"63 64# CHECK: 0x[[CU1_INT:[0-9a-f]*]]: DW_TAG_base_type65# CHECK: DW_AT_name{{.*}}"int"66 67# CHECK: 0x[[CU1_CHAR]]: DW_TAG_base_type68# CHECK: DW_AT_name{{.*}}"char"69 70# CHECK: 0x[[CU1_FLOAT]]: DW_TAG_base_type71# CHECK: DW_AT_name{{.*}}"float"72 73# CHECK-ODR: 0x[[CU1_PTR_CLASS1:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU1_CLASS1]] "class1"74# CHECK-NOODR: 0x[[CU1_PTR_CLASS1:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x[[CU1_CLASS1]] "class1"75 76# CHECK: DW_TAG_variable77# CHECK: DW_AT_name{{.*}}"var1"78# CHECK-ODR: DW_AT_type{{.*}}0x00000000[[CU1_PTR_CLASS1]] "class1 *"79# CHECK-NOODR: DW_AT_type{{.*}}0x[[CU1_PTR_CLASS1]] "class1 *"80 81# CHECK: DW_TAG_compile_unit82# CHECK: DW_AT_name{{.*}}"CU2"83 84# CHECK-ODR-NOT: DW_TAG_class_type85# CHECK-ODR-NOT: "class1"86 87# CHECK-ODR: 0x[[CU2_PTR_CLASS1:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU1_CLASS1]] "class1"88 89# CHECK-ODR: DW_TAG_variable90# CHECK-ODR: DW_AT_name{{.*}}"var1"91# CHECK-ODR: DW_AT_type{{.*}}0x00000000[[CU2_PTR_CLASS1]] "class1 *"92 93 94# CHECK-NOODR: 0x[[CU2_CLASS1:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class1"95# CHECK-NOODR: DW_TAG_member96# CHECK-NOODR: DW_AT_type{{.*}}0x[[CU2_CHAR:[0-9a-f]*]] "char"97# CHECK-NOODR: DW_AT_name{{.*}}"member1"98 99# CHECK-NOODR: DW_TAG_member100# CHECK-NOODR: DW_AT_type{{.*}}0x[[CU2_FLOAT:[0-9a-f]*]] "float"101# CHECK-NOODR: DW_AT_name{{.*}}"member2"102 103# CHECK-NOODR: 0x[[CU2_INT:[0-9a-f]*]]: DW_TAG_base_type104# CHECK-NOODR: DW_AT_name{{.*}}"int"105 106# CHECK-NOODR: 0x[[CU2_CHAR]]: DW_TAG_base_type107# CHECK-NOODR: DW_AT_name{{.*}}"char"108 109# CHECK-NOODR: 0x[[CU2_FLOAT]]: DW_TAG_base_type110# CHECK-NOODR: DW_AT_name{{.*}}"float"111 112# CHECK-NOODR: 0x[[CU2_PTR_CLASS1:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x[[CU2_CLASS1]] "class1"113 114# CHECK-NOODR: DW_TAG_variable115# CHECK-NOODR: DW_AT_name{{.*}}"var1"116# CHECK-NOODR: DW_AT_type{{.*}}0x[[CU2_PTR_CLASS1]] "class1 *"117 118--- !ELF119FileHeader:120 Class: ELFCLASS64121 Data: ELFDATA2LSB122 Type: ET_REL123 Machine: EM_X86_64124Sections:125 - Name: .text126 Type: SHT_PROGBITS127 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]128 Address: 0x1000129 Size: 0x1b130 - Name: .text2131 Type: SHT_PROGBITS132 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]133 Address: 0x2000134 Size: 0x1b135DWARF:136 debug_abbrev:137 - Table:138 - Tag: DW_TAG_compile_unit139 Children: DW_CHILDREN_yes140 Attributes:141 - Attribute: DW_AT_producer142 Form: DW_FORM_string143 - Attribute: DW_AT_language144 Form: DW_FORM_data2145 - Attribute: DW_AT_name146 Form: DW_FORM_string147 - Attribute: DW_AT_low_pc148 Form: DW_FORM_addr149 - Attribute: DW_AT_high_pc150 Form: DW_FORM_data8151 - Tag: DW_TAG_class_type152 Children: DW_CHILDREN_yes153 Attributes:154 - Attribute: DW_AT_name155 Form: DW_FORM_string156 - Tag: DW_TAG_member157 Children: DW_CHILDREN_no158 Attributes:159 - Attribute: DW_AT_type160 Form: DW_FORM_ref4161 - Attribute: DW_AT_name162 Form: DW_FORM_string163 - Tag: DW_TAG_class_type164 Children: DW_CHILDREN_no165 Attributes:166 - Attribute: DW_AT_name167 Form: DW_FORM_string168 - Attribute: DW_AT_declaration169 Form: DW_FORM_flag_present170 - Tag: DW_TAG_class_type171 Children: DW_CHILDREN_yes172 Attributes:173 - Attribute: DW_AT_name174 Form: DW_FORM_string175 - Attribute: DW_AT_declaration176 Form: DW_FORM_flag_present177 - Tag: DW_TAG_template_type_parameter178 Children: DW_CHILDREN_no179 Attributes:180 - Attribute: DW_AT_type181 Form: DW_FORM_ref4182 - Tag: DW_TAG_base_type183 Children: DW_CHILDREN_no184 Attributes:185 - Attribute: DW_AT_name186 Form: DW_FORM_string187 - Tag: DW_TAG_pointer_type188 Children: DW_CHILDREN_no189 Attributes:190 - Attribute: DW_AT_type191 Form: DW_FORM_ref4192 - Tag: DW_TAG_variable193 Children: DW_CHILDREN_no194 Attributes:195 - Attribute: DW_AT_name196 Form: DW_FORM_string197 - Attribute: DW_AT_const_value198 Form: DW_FORM_data4199 - Attribute: DW_AT_type200 Form: DW_FORM_ref4201 - Table:202 - Tag: DW_TAG_compile_unit203 Children: DW_CHILDREN_yes204 Attributes:205 - Attribute: DW_AT_producer206 Form: DW_FORM_string207 - Attribute: DW_AT_language208 Form: DW_FORM_data2209 - Attribute: DW_AT_name210 Form: DW_FORM_string211 - Attribute: DW_AT_low_pc212 Form: DW_FORM_addr213 - Attribute: DW_AT_high_pc214 Form: DW_FORM_data8215 - Tag: DW_TAG_class_type216 Children: DW_CHILDREN_yes217 Attributes:218 - Attribute: DW_AT_name219 Form: DW_FORM_string220 - Tag: DW_TAG_member221 Children: DW_CHILDREN_no222 Attributes:223 - Attribute: DW_AT_type224 Form: DW_FORM_ref4225 - Attribute: DW_AT_name226 Form: DW_FORM_string227 - Tag: DW_TAG_class_type228 Children: DW_CHILDREN_no229 Attributes:230 - Attribute: DW_AT_name231 Form: DW_FORM_string232 - Attribute: DW_AT_declaration233 Form: DW_FORM_flag_present234 - Tag: DW_TAG_class_type235 Children: DW_CHILDREN_yes236 Attributes:237 - Attribute: DW_AT_name238 Form: DW_FORM_string239 - Attribute: DW_AT_declaration240 Form: DW_FORM_flag_present241 - Tag: DW_TAG_template_type_parameter242 Children: DW_CHILDREN_no243 Attributes:244 - Attribute: DW_AT_type245 Form: DW_FORM_ref4246 - Tag: DW_TAG_base_type247 Children: DW_CHILDREN_no248 Attributes:249 - Attribute: DW_AT_name250 Form: DW_FORM_string251 - Tag: DW_TAG_pointer_type252 Children: DW_CHILDREN_no253 Attributes:254 - Attribute: DW_AT_type255 Form: DW_FORM_ref4256 - Tag: DW_TAG_variable257 Children: DW_CHILDREN_no258 Attributes:259 - Attribute: DW_AT_name260 Form: DW_FORM_string261 - Attribute: DW_AT_const_value262 Form: DW_FORM_data4263 - Attribute: DW_AT_type264 Form: DW_FORM_ref4265 debug_info:266 - Version: 4267 Entries:268 - AbbrCode: 1269 Values:270 - CStr: by_hand271 - Value: 0x04272 - CStr: CU1273 - Value: 0x1000274 - Value: 0x1b275 - AbbrCode: 2276 Values:277 - CStr: class1278 - AbbrCode: 3279 Values:280 - Value: 0x00000052281 - CStr: member1282 - AbbrCode: 3283 Values:284 - Value: 0x00000058285 - CStr: member2286 - AbbrCode: 0287 - AbbrCode: 7288 Values:289 - CStr: int290 - AbbrCode: 7291 Values:292 - CStr: char293 - AbbrCode: 7294 Values:295 - CStr: float296 - AbbrCode: 8297 Values:298 - Value: 0x0000002a299 - AbbrCode: 9300 Values:301 - CStr: var1302 - Value: 0x00000000303 - Value: 0x0000005f304 - AbbrCode: 0305 - Version: 4306 Entries:307 - AbbrCode: 1308 Values:309 - CStr: by_hand310 - Value: 0x04311 - CStr: CU2312 - Value: 0x2000313 - Value: 0x1b314 - AbbrCode: 2315 Values:316 - CStr: class1317 - AbbrCode: 3318 Values:319 - Value: 0x00000052320 - CStr: member1321 - AbbrCode: 3322 Values:323 - Value: 0x00000058324 - CStr: member2325 - AbbrCode: 0326 - AbbrCode: 7327 Values:328 - CStr: int329 - AbbrCode: 7330 Values:331 - CStr: char332 - AbbrCode: 7333 Values:334 - CStr: float335 - AbbrCode: 8336 Values:337 - Value: 0x0000002a338 - AbbrCode: 9339 Values:340 - CStr: var1341 - Value: 0x00000000342 - Value: 0x0000005f343 - AbbrCode: 0344...345