There's actually a room to improve this patch. Instead of not merging sections that have different alignements, we can choose the section that has the largest alignment requirement among all sections that are otherwise considered the same. Then all section alignments are satisfied, so we can merge them. I don't know if that improvement could make any difference for real-world input, so I'll leave it alone. Would be interesting to revisit later. llvm-svn: 248581
62 lines
2.0 KiB
Plaintext
62 lines
2.0 KiB
Plaintext
# RUN: yaml2obj < %s > %t.obj
|
|
# RUN: lld-link /entry:foo /out:%t.exe /subsystem:console /include:bar \
|
|
# RUN: /verbose %t.obj > %t.log 2>&1
|
|
# RUN: FileCheck %s < %t.log
|
|
|
|
# CHECK-NOT: Selected foo
|
|
# CHECK-NOT: Removed bar
|
|
|
|
---
|
|
header:
|
|
Machine: IMAGE_FILE_MACHINE_AMD64
|
|
Characteristics: []
|
|
sections:
|
|
- Name: '.text$mn'
|
|
Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
|
|
Alignment: 8
|
|
SectionData: 4883EC28E8000000004883C428C3
|
|
- Name: '.text$mn'
|
|
Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
|
|
Alignment: 16
|
|
SectionData: 4883EC28E8000000004883C428C3
|
|
symbols:
|
|
- Name: '.text$mn'
|
|
Value: 0
|
|
SectionNumber: 1
|
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
|
SectionDefinition:
|
|
Length: 14
|
|
NumberOfRelocations: 0
|
|
NumberOfLinenumbers: 0
|
|
CheckSum: 1682752513
|
|
Number: 0
|
|
Selection: IMAGE_COMDAT_SELECT_NODUPLICATES
|
|
- Name: '.text$mn'
|
|
Value: 0
|
|
SectionNumber: 2
|
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
|
SectionDefinition:
|
|
Length: 14
|
|
NumberOfRelocations: 0
|
|
NumberOfLinenumbers: 0
|
|
CheckSum: 1682752513
|
|
Number: 0
|
|
Selection: IMAGE_COMDAT_SELECT_NODUPLICATES
|
|
- Name: foo
|
|
Value: 0
|
|
SectionNumber: 1
|
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
|
ComplexType: IMAGE_SYM_DTYPE_FUNCTION
|
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
|
- Name: bar
|
|
Value: 0
|
|
SectionNumber: 2
|
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
|
ComplexType: IMAGE_SYM_DTYPE_FUNCTION
|
|
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
|
|
...
|