255 lines
7.7 KiB
Plaintext
255 lines
7.7 KiB
Plaintext
## This test checks that overlapping function address ranges
|
|
## are combined during --garbage-collection optimisation.
|
|
|
|
# RUN: yaml2obj %s -o %t.o
|
|
# RUN: llvm-dwarfutil --garbage-collection %t.o %t1
|
|
# RUN: llvm-dwarfdump -a %t1 | FileCheck %s
|
|
|
|
# CHECK: DW_TAG_compile_unit
|
|
# CHECK: DW_AT_name{{.*}}"CU1"
|
|
# CHECK: DW_AT_low_pc{{.*}}0000000000001000
|
|
# CHECK: DW_AT_ranges
|
|
# CHECK: [0x0000000000001000, 0x000000000000102d)
|
|
# CHECK: [0x0000000000002002, 0x000000000000200d)
|
|
# CHECK: [0x000000000000201b, 0x000000000000202a)
|
|
# CHECK: [0x0000000000003002, 0x0000000000003007)
|
|
# CHECK: [0x0000000000003012, 0x0000000000003017)
|
|
# CHECK: [0x0000000000003018, 0x000000000000301a)
|
|
# CHECK: [0x0000000000003022, 0x0000000000003027
|
|
# CHECK: DW_TAG_class_type
|
|
# CHECK: DW_AT_name{{.*}}"class1"
|
|
# CHECK: DW_TAG_class_type
|
|
# CHECK: "class2"
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: DW_AT_name{{.*}}"foo1"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000001000
|
|
# CHECK: DW_AT_high_pc{{.*}}0x0000000000001010
|
|
# CHECK: DW_AT_type{{.*}}"class1"
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo2"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000001004
|
|
# CHECK: DW_AT_high_pc{{.*}}0x0000000000001007
|
|
# CHECK: DW_AT_type{{.*}}"class2"
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo3"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x000000000000100d
|
|
# CHECK: DW_AT_high_pc{{.*}}0x000000000000102d
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo4"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000002002
|
|
# CHECK: DW_AT_high_pc{{.*}}0x000000000000200d
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo5"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x000000000000201b
|
|
# CHECK: DW_AT_high_pc{{.*}}0x000000000000202a
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo6"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000003002
|
|
# CHECK: DW_AT_high_pc{{.*}}0x0000000000003007
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo7"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000003012
|
|
# CHECK: DW_AT_high_pc{{.*}}0x0000000000003017
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo8"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000003022
|
|
# CHECK: DW_AT_high_pc{{.*}}0x0000000000003027
|
|
# CHECK: DW_TAG_subprogram
|
|
# CHECK: "foo9"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000003012
|
|
# CHECK: DW_AT_high_pc{{.*}}0x0000000000003017
|
|
# CHECK: "foo10"
|
|
# CHECK: DW_AT_low_pc{{.*}}0x0000000000003018
|
|
# CHECK: DW_AT_high_pc{{.*}}0x000000000000301a
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Address: 0x1000
|
|
AddressAlign: 0x0000000000000010
|
|
Content: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
- Name: .text2
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Address: 0x2000
|
|
AddressAlign: 0x0000000000000010
|
|
Content: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
- Name: .text3
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Address: 0x3000
|
|
AddressAlign: 0x0000000000000010
|
|
Content: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
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_ranges
|
|
Form: DW_FORM_sec_offset
|
|
- 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: 0x00
|
|
- Value: 0x00
|
|
- AbbrCode: 3
|
|
Values:
|
|
- CStr: class1
|
|
- AbbrCode: 4
|
|
Values:
|
|
- Value: 0x00000052
|
|
- CStr: member1
|
|
- AbbrCode: 0
|
|
- AbbrCode: 3
|
|
Values:
|
|
- CStr: class2
|
|
- AbbrCode: 4
|
|
Values:
|
|
- Value: 0x00000052
|
|
- CStr: member1
|
|
- AbbrCode: 0
|
|
- AbbrCode: 8
|
|
Values:
|
|
- CStr: int
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo1
|
|
- Value: 0x1000
|
|
- Value: 0x10
|
|
- Value: 0x00000026
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo2
|
|
- Value: 0x1004
|
|
- Value: 0x3
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo3
|
|
- Value: 0x100d
|
|
- Value: 0x20
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo4
|
|
- Value: 0x2002
|
|
- Value: 0xb
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo5
|
|
- Value: 0x201b
|
|
- Value: 0xf
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo6
|
|
- Value: 0x3002
|
|
- Value: 0x5
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo7
|
|
- Value: 0x3012
|
|
- Value: 0x5
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo8
|
|
- Value: 0x3022
|
|
- Value: 0x5
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo9
|
|
- Value: 0x3012
|
|
- Value: 0x5
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 2
|
|
Values:
|
|
- CStr: foo10
|
|
- Value: 0x3018
|
|
- Value: 0x2
|
|
- Value: 0x0000003c
|
|
- AbbrCode: 0
|
|
|
|
debug_ranges:
|
|
- Offset: 0x00000000
|
|
AddrSize: 0x08
|
|
Entries:
|
|
- LowOffset: 0x0000000000001000
|
|
HighOffset: 0x000000000000102d
|
|
- LowOffset: 0x0000000000002000
|
|
HighOffset: 0x000000000000202d
|
|
- LowOffset: 0x0000000000000000
|
|
HighOffset: 0x0000000000000000
|
|
...
|