diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index 600d14034dea8..0788f3519f4e0 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -1211,6 +1211,12 @@ void Writer::createSymbolAndStringTable() { if (!d || d->writtenToSymtab) continue; d->writtenToSymtab = true; + if (auto *dc = dyn_cast_or_null(d)) { + COFFSymbolRef symRef = dc->getCOFFSymbol(); + if (symRef.isSectionDefinition() || + symRef.getStorageClass() == COFF::IMAGE_SYM_CLASS_LABEL) + continue; + } if (Optional sym = createSymbol(d)) outputSymtab.push_back(*sym); diff --git a/lld/test/COFF/strtab-size.s b/lld/test/COFF/strtab-size.s index 574b1a0265ba6..153363baf8c71 100644 --- a/lld/test/COFF/strtab-size.s +++ b/lld/test/COFF/strtab-size.s @@ -213,4 +213,5 @@ sym191: sym192: sym193: sym194: +sym195: ret diff --git a/lld/test/COFF/symtab.test b/lld/test/COFF/symtab.test index 1d47def32c8fc..949e9604bfd89 100644 --- a/lld/test/COFF/symtab.test +++ b/lld/test/COFF/symtab.test @@ -11,33 +11,6 @@ # CHECK: Symbols [ # CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: .text -# CHECK-NEXT: Value: 0 -# CHECK-NEXT: Section: .text (1) -# CHECK-NEXT: BaseType: Null (0x0) -# CHECK-NEXT: ComplexType: Null (0x0) -# CHECK-NEXT: StorageClass: Static (0x3) -# CHECK-NEXT: AuxSymbolCount: 0 -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: .text2 -# CHECK-NEXT: Value: 0 -# CHECK-NEXT: Section: .text (1) -# CHECK-NEXT: BaseType: Null (0x0) -# CHECK-NEXT: ComplexType: Null (0x0) -# CHECK-NEXT: StorageClass: Static (0x3) -# CHECK-NEXT: AuxSymbolCount: 0 -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { -# CHECK-NEXT: Name: .data -# CHECK-NEXT: Value: 0 -# CHECK-NEXT: Section: .data (3) -# CHECK-NEXT: BaseType: Null (0x0) -# CHECK-NEXT: ComplexType: Null (0x0) -# CHECK-NEXT: StorageClass: Static (0x3) -# CHECK-NEXT: AuxSymbolCount: 0 -# CHECK-NEXT: } -# CHECK-NEXT: Symbol { # CHECK-NEXT: Name: MessageBoxA # CHECK-NEXT: Value: 80 # CHECK-NEXT: Section: .text (1) @@ -235,4 +208,10 @@ symbols: SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL + - Name: .Ltemp_symbol + Value: 1 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_LABEL ...