blob: c34393553847ddb863b480ee30019138b4a52504 [file] [edit]
# RUN: rm -rf %t.dir && mkdir -p %t.dir
# RUN: yaml2obj %s -o %t.dir/pack.o
# RUN: dsymutil --linker classic -y %p/Inputs/dwarflinker-template-parameter-pack.map -oso-prepend-path=%t.dir -f -o - | llvm-dwarfdump -a - | FileCheck %s
# RUN: dsymutil --linker parallel -y %p/Inputs/dwarflinker-template-parameter-pack.map -oso-prepend-path=%t.dir -f -o - | llvm-dwarfdump -a - | FileCheck %s
## A DW_TAG_GNU_template_parameter_pack with three identical
## DW_TAG_template_type_parameter children (all referring to the same
## int base type) must be preserved as three separate child DIEs after
## linking. Before the parallel linker registered the pack tag with
## SyntheticTypeNameBuilder, pack children received no ordered synthetic
## key and TypePool deduplicated the three siblings down to one.
# CHECK: DW_TAG_structure_type
# CHECK: DW_AT_name {{.*}}"Pack"
# CHECK: DW_TAG_GNU_template_parameter_pack
# CHECK: DW_AT_name {{.*}}"Ts"
# CHECK: DW_TAG_template_type_parameter
# CHECK: DW_AT_type {{.*}}"int"
# CHECK: DW_TAG_template_type_parameter
# CHECK: DW_AT_type {{.*}}"int"
# CHECK: DW_TAG_template_type_parameter
# CHECK: DW_AT_type {{.*}}"int"
# CHECK-NOT: DW_TAG_template_type_parameter
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x01000007
cpusubtype: 0x00000003
filetype: 0x00000001
ncmds: 2
sizeofcmds: 376
flags: 0x00002000
reserved: 0x00000000
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 232
segname: ''
vmaddr: 0x00
vmsize: 0x300
fileoff: 0x300
filesize: 0x300
maxprot: 7
initprot: 7
nsects: 2
flags: 0
Sections:
- sectname: __debug_abbrev
segname: __DWARF
addr: 0x000000000000000F
size: 0x37
offset: 0x00000380
align: 0
reloff: 0x00000000
nreloc: 0
flags: 0x02000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __debug_info
segname: __DWARF
addr: 0x000000000000100
size: 0x44
offset: 0x000003B7
align: 0
reloff: 0x00000600
nreloc: 1
flags: 0x02000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
relocations:
- address: 0x000001FC
symbolnum: 1
pcrel: true
length: 3
extern: true
type: 0
scattered: false
value: 0
- cmd: LC_SYMTAB
cmdsize: 24
symoff: 0x700
nsyms: 1
stroff: 0x710
strsize: 10
LinkEditData:
NameList:
- n_strx: 1
n_type: 0x0F
n_sect: 1
n_desc: 0
n_value: 0
StringTable:
- ''
- '__Z3foov'
- ''
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
- Tag: DW_TAG_structure_type
Children: DW_CHILDREN_yes
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_string
- Tag: DW_TAG_GNU_template_parameter_pack
Children: DW_CHILDREN_yes
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_string
- Tag: DW_TAG_template_type_parameter
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_type
Form: DW_FORM_ref_addr
- Tag: DW_TAG_base_type
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_string
- Tag: DW_TAG_variable
Children: DW_CHILDREN_no
Attributes:
- Attribute: DW_AT_name
Form: DW_FORM_string
- Attribute: DW_AT_const_value
Form: DW_FORM_data4
- Attribute: DW_AT_type
Form: DW_FORM_ref_addr
debug_info:
- Version: 4
Entries:
## 0x0b: DW_TAG_compile_unit
- AbbrCode: 1
Values:
- CStr: by_hand
- Value: 0x04
## 0x16: DW_TAG_structure_type "Pack"
- AbbrCode: 2
Values:
- CStr: Pack
## 0x1c: DW_TAG_GNU_template_parameter_pack "Ts"
- AbbrCode: 3
Values:
- CStr: Ts
## 0x20: DW_TAG_template_type_parameter -> int
- AbbrCode: 4
Values:
- Value: 0x00000031
## 0x25: DW_TAG_template_type_parameter -> int
- AbbrCode: 4
Values:
- Value: 0x00000031
## 0x2a: DW_TAG_template_type_parameter -> int
- AbbrCode: 4
Values:
- Value: 0x00000031
## 0x2f: NULL (close pack)
- AbbrCode: 0
## 0x30: NULL (close structure)
- AbbrCode: 0
## 0x31: DW_TAG_base_type "int"
- AbbrCode: 5
Values:
- CStr: int
## 0x36: DW_TAG_variable "var" -> Pack
- AbbrCode: 6
Values:
- CStr: var
- Value: 0x000000ff
- Value: 0x00000016
## 0x43: NULL (close CU)
- AbbrCode: 0
...