brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.1 KiB · 224d668 Raw
342 lines · plain
1## This test checks debug info for the case when one compilation unit2## contains a forward declaration of a type and another compilation unit3## contains a definition for that type. The result should contain4## the original definition and the declaration without modifications.5 6# RUN: yaml2obj %s -o %t.o7# RUN: llvm-dwarfutil %t.o - | llvm-dwarfdump -a - | FileCheck %s8 9## CU1:10##11## class class1;12## template<int> class class2;13##14## class1 *var1;15## class2<int> *var2;16##17## CU2:18##19## class class1 {20##   char member1;21##   float member2;22## };23##24## template<int> class class2 {25##   char member1;26## };27##28## class1 *var1;29## class2<int> *var2;30 31# CHECK: file format elf64-x86-6432# CHECK: .debug_info contents:33 34# CHECK: DW_TAG_compile_unit35# CHECK: DW_AT_name{{.*}}"CU1"36 37# CHECK: 0x[[CU1_CLASS1:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class1"38# CHECK: DW_AT_declaration (true)39 40# CHECK: 0x[[CU1_CLASS2:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class2"41# CHECK: DW_AT_declaration (true)42# CHECK: DW_TAG_template_type_parameter{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU1_INT:[0-9a-f]*]] "int"43 44# CHECK: 0x[[CU1_INT]]: DW_TAG_base_type45# CHECK: DW_AT_name{{.*}}"int"46 47# CHECK: 0x[[CU1_PTR_CLASS1:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU1_CLASS1]] "class1"48 49# CHECK: 0x[[CU1_PTR_CLASS2:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU1_CLASS2]] "class2<int>"50 51# CHECK: DW_TAG_variable52# CHECK: DW_AT_name{{.*}}"var1"53# CHECK: DW_AT_type{{.*}}0x00000000[[CU1_PTR_CLASS1]] "class1 *"54# CHECK: DW_TAG_variable55# CHECK: DW_AT_name{{.*}}"var2"56# CHECK: DW_AT_type{{.*}}0x00000000[[CU1_PTR_CLASS2]] "class2<int> *"57 58# CHECK: DW_TAG_compile_unit59# CHECK: DW_AT_name{{.*}}"CU2"60 61# CHECK: 0x[[CU2_CLASS1:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class1"62# CHECK: DW_TAG_member63# CHECK: DW_AT_type{{.*}}0x00000000[[CU2_CHAR:[0-9a-f]*]] "char"64# CHECK: DW_AT_name{{.*}}"member1"65 66# CHECK: DW_TAG_member67# CHECK: DW_AT_type{{.*}}0x00000000[[CU2_FLOAT:[0-9a-f]*]] "float"68# CHECK: DW_AT_name{{.*}}"member2"69 70# CHECK: 0x[[CU2_CLASS2:[0-9a-f]*]]: DW_TAG_class_type{{.*[[:space:]].*}}DW_AT_name{{.*}}"class2"71# CHECK: DW_TAG_template_type_parameter{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU2_INT:[0-9a-f]*]] "int"72# CHECK: DW_TAG_member73# CHECK: DW_AT_type{{.*}}0x00000000[[CU2_CHAR]] "char"74# CHECK: DW_AT_name{{.*}}"member1"75 76# CHECK: 0x[[CU2_INT]]: DW_TAG_base_type77# CHECK: DW_AT_name{{.*}}"int"78 79# CHECK: 0x[[CU2_CHAR]]: DW_TAG_base_type80# CHECK: DW_AT_name{{.*}}"char"81 82# CHECK: 0x[[CU2_FLOAT]]: DW_TAG_base_type83# CHECK: DW_AT_name{{.*}}"float"84 85# CHECK: 0x[[CU2_PTR_CLASS1:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU2_CLASS1]] "class1"86 87# CHECK: 0x[[CU2_PTR_CLASS2:[0-9a-f]*]]: DW_TAG_pointer_type{{.*[[:space:]].*}}DW_AT_type{{.*}}0x00000000[[CU2_CLASS2]] "class2<int>"88 89# CHECK: DW_TAG_variable90# CHECK: DW_AT_name{{.*}}"var1"91# CHECK: DW_AT_type{{.*}}0x00000000[[CU2_PTR_CLASS1]] "class1 *"92# CHECK: DW_TAG_variable93# CHECK: DW_AT_name{{.*}}"var2"94# CHECK: DW_AT_type{{.*}}0x00000000[[CU2_PTR_CLASS2]] "class2<int> *"95 96--- !ELF97FileHeader:98  Class:    ELFCLASS6499  Data:     ELFDATA2LSB100  Type:     ET_REL101  Machine:  EM_X86_64102Sections:103  - Name:            .text104    Type:            SHT_PROGBITS105    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]106    Address:         0x1000107    Size:            0x1b108  - Name:            .text2109    Type:            SHT_PROGBITS110    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]111    Address:         0x2000112    Size:            0x1b113DWARF:114  debug_abbrev:115    - Table:116      - Tag:      DW_TAG_compile_unit117        Children: DW_CHILDREN_yes118        Attributes:119          - Attribute: DW_AT_producer120            Form:      DW_FORM_string121          - Attribute: DW_AT_language122            Form:      DW_FORM_data2123          - Attribute: DW_AT_name124            Form:      DW_FORM_string125          - Attribute: DW_AT_low_pc126            Form:      DW_FORM_addr127          - Attribute: DW_AT_high_pc128            Form:      DW_FORM_data8129      - Tag:      DW_TAG_class_type130        Children: DW_CHILDREN_yes131        Attributes:132          - Attribute: DW_AT_name133            Form:      DW_FORM_string134      - Tag:      DW_TAG_member135        Children: DW_CHILDREN_no136        Attributes:137          - Attribute: DW_AT_type138            Form:      DW_FORM_ref_addr139          - Attribute: DW_AT_name140            Form:      DW_FORM_string141      - Tag:      DW_TAG_class_type142        Children: DW_CHILDREN_no143        Attributes:144          - Attribute: DW_AT_name145            Form:      DW_FORM_string146          - Attribute: DW_AT_declaration147            Form:      DW_FORM_flag_present148      - Tag:      DW_TAG_class_type149        Children: DW_CHILDREN_yes150        Attributes:151          - Attribute: DW_AT_name152            Form:      DW_FORM_string153          - Attribute: DW_AT_declaration154            Form:      DW_FORM_flag_present155      - Tag:      DW_TAG_template_type_parameter156        Children: DW_CHILDREN_no157        Attributes:158          - Attribute: DW_AT_type159            Form:      DW_FORM_ref_addr160      - Tag:      DW_TAG_base_type161        Children: DW_CHILDREN_no162        Attributes:163          - Attribute: DW_AT_name164            Form:      DW_FORM_string165      - Tag:      DW_TAG_pointer_type166        Children: DW_CHILDREN_no167        Attributes:168          - Attribute: DW_AT_type169            Form:      DW_FORM_ref_addr170      - Tag:      DW_TAG_variable171        Children: DW_CHILDREN_no172        Attributes:173          - Attribute: DW_AT_name174            Form:      DW_FORM_string175          - Attribute: DW_AT_const_value176            Form:      DW_FORM_data4177          - Attribute: DW_AT_type178            Form:      DW_FORM_ref_addr179    - Table:180      - Tag:      DW_TAG_compile_unit181        Children: DW_CHILDREN_yes182        Attributes:183          - Attribute: DW_AT_producer184            Form:      DW_FORM_string185          - Attribute: DW_AT_language186            Form:      DW_FORM_data2187          - Attribute: DW_AT_name188            Form:      DW_FORM_string189          - Attribute: DW_AT_low_pc190            Form:      DW_FORM_addr191          - Attribute: DW_AT_high_pc192            Form:      DW_FORM_data8193      - Tag:      DW_TAG_class_type194        Children: DW_CHILDREN_yes195        Attributes:196          - Attribute: DW_AT_name197            Form:      DW_FORM_string198      - Tag:      DW_TAG_member199        Children: DW_CHILDREN_no200        Attributes:201          - Attribute: DW_AT_type202            Form:      DW_FORM_ref_addr203          - Attribute: DW_AT_name204            Form:      DW_FORM_string205      - Tag:      DW_TAG_class_type206        Children: DW_CHILDREN_no207        Attributes:208          - Attribute: DW_AT_name209            Form:      DW_FORM_string210          - Attribute: DW_AT_declaration211            Form:      DW_FORM_flag_present212      - Tag:      DW_TAG_class_type213        Children: DW_CHILDREN_yes214        Attributes:215          - Attribute: DW_AT_name216            Form:      DW_FORM_string217          - Attribute: DW_AT_declaration218            Form:      DW_FORM_flag_present219      - Tag:      DW_TAG_template_type_parameter220        Children: DW_CHILDREN_no221        Attributes:222          - Attribute: DW_AT_type223            Form:      DW_FORM_ref_addr224      - Tag:      DW_TAG_base_type225        Children: DW_CHILDREN_no226        Attributes:227          - Attribute: DW_AT_name228            Form:      DW_FORM_string229      - Tag:      DW_TAG_pointer_type230        Children: DW_CHILDREN_no231        Attributes:232          - Attribute: DW_AT_type233            Form:      DW_FORM_ref_addr234      - Tag:      DW_TAG_variable235        Children: DW_CHILDREN_no236        Attributes:237          - Attribute: DW_AT_name238            Form:      DW_FORM_string239          - Attribute: DW_AT_const_value240            Form:      DW_FORM_data4241          - Attribute: DW_AT_type242            Form:      DW_FORM_ref_addr243  debug_info:244    - Version: 4245      Entries:246        - AbbrCode: 1247          Values:248            - CStr: by_hand249            - Value:  0x04250            - CStr: CU1251            - Value:  0x1000252            - Value:  0x1b253        - AbbrCode: 4254          Values:255            - CStr: class1256        - AbbrCode: 5257          Values:258            - CStr: class2259        - AbbrCode: 6260          Values:261            - Value:  0x00000040262        - AbbrCode: 0263        - AbbrCode: 7264          Values:265            - CStr: int266        - AbbrCode: 8267          Values:268            - Value:  0x0000002a269        - AbbrCode: 8270          Values:271            - Value:  0x00000032272        - AbbrCode: 9273          Values:274            - CStr: var1275            - Value:  0x00000000276            - Value:  0x00000045277        - AbbrCode: 9278          Values:279            - CStr: var2280            - Value:  0x00000000281            - Value:  0x0000004a282        - AbbrCode: 0283    - Version: 4284      Entries:285        - AbbrCode: 1286          Values:287            - CStr: by_hand288            - Value:  0x04289            - CStr: CU2290            - Value:  0x2000291            - Value:  0x1b292        - AbbrCode: 2293          Values:294            - CStr: class1295        - AbbrCode: 3296          Values:297            - Value:  0x000000d9298            - CStr: member1299        - AbbrCode: 3300          Values:301            - Value:  0x000000df302            - CStr: member2303        - AbbrCode: 0304        - AbbrCode: 2305          Values:306            - CStr: class2307        - AbbrCode: 6308          Values:309            - Value:  0x000000d4310        - AbbrCode: 3311          Values:312            - Value:  0x000000d9313            - CStr: member1314        - AbbrCode: 0315        - AbbrCode: 7316          Values:317            - CStr: int318        - AbbrCode: 7319          Values:320            - CStr: char321        - AbbrCode: 7322          Values:323            - CStr: float324        - AbbrCode: 8325          Values:326            - Value:  0x00000096327        - AbbrCode: 8328          Values:329            - Value:  0x000000b9330        - AbbrCode: 9331          Values:332            - CStr: var1333            - Value:  0x00000000334            - Value:  0x000000e6335        - AbbrCode: 9336          Values:337            - CStr: var2338            - Value:  0x00000000339            - Value:  0x000000eb340        - AbbrCode: 0341...342