brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.2 KiB · 92797e9 Raw
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