COFF: Do not add symbols in discarded sections to SEH handler list.

Differential Revision: https://reviews.llvm.org/D40576

llvm-svn: 319229
This commit is contained in:
Peter Collingbourne 2017-11-28 21:30:05 +00:00
parent f5aab5454e
commit bcf7f290ff
2 changed files with 68 additions and 1 deletions

View File

@ -380,7 +380,8 @@ void ObjFile::initializeSEH() {
auto *I = reinterpret_cast<const ulittle32_t *>(A.data());
auto *E = reinterpret_cast<const ulittle32_t *>(A.data() + A.size());
for (; I != E; ++I)
SEHandlers.insert(Symbols[*I]);
if (Symbols[*I])
SEHandlers.insert(Symbols[*I]);
}
MachineTypes ObjFile::getMachineType() {

View File

@ -0,0 +1,66 @@
# RUN: yaml2obj < %s > %t1.obj
# RUN: yaml2obj < %s > %t2.obj
# RUN: lld-link /out:%t.exe /subsystem:console /entry:main %t1.obj %t2.obj
# RUN: llvm-objdump -s %t.exe | FileCheck %s
# CHECK: Contents of section .rdata:
# CHECK: 1000 00200000
--- !COFF
header:
Machine: IMAGE_FILE_MACHINE_I386
Characteristics: [ ]
sections:
- Name: .text
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ, IMAGE_SCN_LNK_COMDAT ]
Alignment: 1
SectionData: 0000000000000000
- Name: .sxdata
Characteristics: [ IMAGE_SCN_LNK_INFO ]
Alignment: 4
SectionData: 02000000
symbols:
- Name: '@comp.id'
Value: 14766605
SectionNumber: 65535
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
- Name: '@feat.00'
Value: 2147484049
SectionNumber: 65535
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
- Name: .text
Value: 0
SectionNumber: 1
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
Length: 4
NumberOfRelocations: 0
NumberOfLinenumbers: 0
CheckSum: 0
Number: 0
Selection: IMAGE_COMDAT_SELECT_ANY
- Name: .sxdata
Value: 0
SectionNumber: 2
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
Length: 8
NumberOfRelocations: 0
NumberOfLinenumbers: 0
CheckSum: 0
Number: 0
- Name: _main
Value: 0
SectionNumber: 1
SimpleType: IMAGE_SYM_TYPE_NULL
ComplexType: IMAGE_SYM_DTYPE_FUNCTION
StorageClass: IMAGE_SYM_CLASS_EXTERNAL
...