| ## This test checks that debug info contained in the source file is properly |
| ## verified by --verify after copying. If --no-garbage-collection is |
| ## specified then the verification should fail, otherwise the verification |
| ## should succeed. |
| |
| # RUN: yaml2obj %s -o %t.o |
| |
| ## Verify resulting debug info after --garbage-collection optimisation. |
| # RUN: llvm-dwarfutil %t.o %t1 --verify |
| |
| ## Verify separate debug file after --garbage-collection optimisation. |
| # RUN: llvm-dwarfutil %t.o --separate-debug-file %t1 --verify |
| |
| ## Verify not optimised resulting debug info. |
| # RUN: not llvm-dwarfutil --no-garbage-collection %t.o %t1 --verify 2>&1 | FileCheck %s -DFILE=%t1 |
| |
| ## Verify not optimised resulting separate debug file. |
| # RUN: not llvm-dwarfutil --no-garbage-collection %t.o --separate-debug-file %t1 --verify 2>&1 | FileCheck %s -DFILE=%t1.debug |
| |
| ## Check that verification is disabled when destination is stdout. |
| # RUN: llvm-dwarfutil %t.o - --verify 2>&1 | FileCheck %s --check-prefix=CHECK-STDOUT |
| |
| # CHECK: error: '[[FILE]]': output verification failed |
| # CHECK-STDOUT: warning: verification skipped because writing to stdout |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_abbrev: |
| - Table: |
| - Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_producer |
| Form: DW_FORM_string |
| - Attribute: DW_AT_language |
| Form: DW_FORM_data2 |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Attribute: DW_AT_low_pc |
| Form: DW_FORM_addr |
| - Attribute: DW_AT_high_pc |
| Form: DW_FORM_data8 |
| - Tag: DW_TAG_subprogram |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Attribute: DW_AT_low_pc |
| Form: DW_FORM_addr |
| - Attribute: DW_AT_high_pc |
| Form: DW_FORM_data8 |
| - Attribute: DW_AT_type |
| Form: DW_FORM_ref4 |
| - Tag: DW_TAG_class_type |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Tag: DW_TAG_member |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_type |
| Form: DW_FORM_ref4 |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Tag: DW_TAG_class_type |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Attribute: DW_AT_declaration |
| Form: DW_FORM_flag_present |
| - Tag: DW_TAG_class_type |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Attribute: DW_AT_declaration |
| Form: DW_FORM_flag_present |
| - Tag: DW_TAG_template_type_parameter |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_type |
| Form: DW_FORM_ref4 |
| - Tag: DW_TAG_base_type |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| debug_info: |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: by_hand |
| - Value: 0x04 |
| - CStr: CU1 |
| - Value: 0x1000 |
| - Value: 0x100 |
| - AbbrCode: 3 |
| Values: |
| - CStr: class1 |
| - AbbrCode: 4 |
| Values: |
| - Value: 0x0000006c |
| - CStr: member1 |
| - AbbrCode: 0 |
| - AbbrCode: 3 |
| Values: |
| - CStr: class2 |
| - AbbrCode: 4 |
| Values: |
| - Value: 0x0000006c |
| - CStr: member1 |
| - AbbrCode: 0 |
| - AbbrCode: 3 |
| Values: |
| - CStr: class3 |
| - AbbrCode: 4 |
| Values: |
| - Value: 0x0000006c |
| - CStr: member1 |
| - AbbrCode: 0 |
| - AbbrCode: 8 |
| Values: |
| - CStr: int |
| - AbbrCode: 2 |
| Values: |
| - CStr: foo1 |
| - Value: 0x1000 |
| - Value: 0x10 |
| - Value: 0x0000002a |
| - AbbrCode: 2 |
| Values: |
| - CStr: foo2 |
| - Value: 0x0 |
| - Value: 0x100 |
| - Value: 0x00000040 |
| - AbbrCode: 2 |
| Values: |
| - CStr: foo3 |
| - Value: 0x0 |
| - Value: 0x100 |
| - Value: 0x00000040 |
| - AbbrCode: 0 |
| ... |