forked from OSchip/llvm-project
[LLD] [COFF] Actually include the exported comdat symbols
This is a followup to 2b01a417d7ccb001ccc1185ef5fdc967c9fac8d7; previously the RVAs of the exported symbols from comdats were left zero. Thanks to Kleis Auke Wolthuizen for the fix suggestion and pointing out the omission. Differential Revision: https://reviews.llvm.org/D101615
This commit is contained in:
parent
e87fb6d387
commit
82de4e0753
|
@ -1205,6 +1205,11 @@ void LinkerDriver::maybeExportMinGWSymbols(const opt::InputArgList &args) {
|
|||
if (!exporter.shouldExport(def))
|
||||
return;
|
||||
|
||||
if (!def->isGCRoot) {
|
||||
def->isGCRoot = true;
|
||||
config->gcroot.push_back(def);
|
||||
}
|
||||
|
||||
Export e;
|
||||
e.name = def->getName();
|
||||
e.sym = def;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
# RUN: lld-link -lldmingw -dll -out:%t.dll -entry:DllMainCRTStartup@12 %t.obj -implib:%t.lib
|
||||
# RUN: llvm-readobj --coff-exports %t.dll | grep Name: | FileCheck %s
|
||||
# RUN: llvm-readobj --coff-exports %t.dll | FileCheck %s --check-prefix=CHECK-RVA
|
||||
# RUN: llvm-readobj %t.lib | FileCheck -check-prefix=IMPLIB %s
|
||||
|
||||
# CHECK: Name:
|
||||
|
@ -12,6 +13,13 @@
|
|||
# CHECK-NEXT: Name: foobar
|
||||
# CHECK-EMPTY:
|
||||
|
||||
# CHECK-RVA: Name: comdatFunc
|
||||
# CHECK-RVA-NEXT: RVA: 0x1003
|
||||
# CHECK-RVA: Name: dataSym
|
||||
# CHECK-RVA-NEXT: RVA: 0x3000
|
||||
# CHECK-RVA: Name: foobar
|
||||
# CHECK-RVA-NEXT: RVA: 0x1001
|
||||
|
||||
# IMPLIB: Symbol: __imp__comdatFunc
|
||||
# IMPLIB: Symbol: _comdatFunc
|
||||
# IMPLIB: Symbol: __imp__dataSym
|
||||
|
@ -33,7 +41,7 @@ _foobar:
|
|||
ret
|
||||
_unexported:
|
||||
ret
|
||||
.section .text@_comdatFunc,"xr",one_only,_comdatFunc
|
||||
.section .text$_comdatFunc,"xr",one_only,_comdatFunc
|
||||
_comdatFunc:
|
||||
ret
|
||||
.data
|
||||
|
|
Loading…
Reference in New Issue