157 lines
5 KiB
Text
157 lines
5 KiB
Text
|
## 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
|
||
|
# RUN: llvm-dwarfutil --linker parallel %t.o %t1 --verify
|
||
|
|
||
|
## Verify separate debug file after --garbage-collection optimisation.
|
||
|
# RUN: llvm-dwarfutil %t.o --separate-debug-file %t1 --verify
|
||
|
# RUN: llvm-dwarfutil --linker parallel %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
|
||
|
# RUN: not llvm-dwarfutil --linker parallel --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
|
||
|
# RUN: not llvm-dwarfutil --linker parallel --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
|
||
|
# RUN: llvm-dwarfutil --linker parallel %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
|
||
|
...
|