| # COMDAT sections with non-external linkage should not be merged by ICF. |
| |
| # RUN: yaml2obj < %s > %t1.obj |
| # RUN: sed s/foo/main/ %s | yaml2obj > %t2.obj |
| # RUN: lld-link /out:%t.exe /entry:main /subsystem:console /verbose \ |
| # RUN: %t1.obj %t2.obj > %t.log 2>&1 |
| # RUN: FileCheck %s < %t.log |
| |
| # CHECK-NOT: Removed bar |
| |
| --- !COFF |
| header: |
| Machine: IMAGE_FILE_MACHINE_AMD64 |
| Characteristics: [] |
| sections: |
| - Name: .text |
| Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] |
| Alignment: 16 |
| SectionData: 488D0500000000C3 |
| Relocations: |
| - VirtualAddress: 3 |
| SymbolName: bar |
| Type: IMAGE_REL_AMD64_REL32 |
| - Name: .rdata |
| Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ ] |
| Alignment: 8 |
| SectionData: 2A000000000000002B00000000000000 |
| symbols: |
| - Name: .text |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| SectionDefinition: |
| Length: 8 |
| NumberOfRelocations: 1 |
| NumberOfLinenumbers: 0 |
| CheckSum: 1092178131 |
| Number: 1 |
| - Name: .rdata |
| Value: 0 |
| SectionNumber: 2 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| SectionDefinition: |
| Length: 16 |
| NumberOfRelocations: 0 |
| NumberOfLinenumbers: 0 |
| CheckSum: 1200668497 |
| Number: 5 |
| Selection: IMAGE_COMDAT_SELECT_ANY |
| - 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_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| ... |