diff --git a/lld/COFF/MinGW.cpp b/lld/COFF/MinGW.cpp --- a/lld/COFF/MinGW.cpp +++ b/lld/COFF/MinGW.cpp @@ -123,7 +123,7 @@ } bool AutoExporter::shouldExport(Defined *sym) const { - if (!sym || !sym->isLive() || !sym->getChunk()) + if (!sym || !sym->getChunk()) return false; // Only allow the symbol kinds that make sense to export; in particular, diff --git a/lld/test/COFF/export-all.s b/lld/test/COFF/export-all.s --- a/lld/test/COFF/export-all.s +++ b/lld/test/COFF/export-all.s @@ -7,10 +7,13 @@ # RUN: llvm-readobj %t.lib | FileCheck -check-prefix=IMPLIB %s # CHECK: Name: +# CHECK-NEXT: Name: comdatFunc # CHECK-NEXT: Name: dataSym # CHECK-NEXT: Name: foobar # CHECK-EMPTY: +# IMPLIB: Symbol: __imp__comdatFunc +# IMPLIB: Symbol: _comdatFunc # IMPLIB: Symbol: __imp__dataSym # IMPLIB-NOT: Symbol: _dataSym # IMPLIB: Symbol: __imp__foobar @@ -22,6 +25,7 @@ .global _unexported .global __imp__unexported .global .refptr._foobar +.global _comdatFunc .text _DllMainCRTStartup@12: ret @@ -29,6 +33,9 @@ ret _unexported: ret +.section .text@_comdatFunc,"xr",one_only,_comdatFunc +_comdatFunc: + ret .data _dataSym: .int 4