[lld] r241382 - COFF: Fix bug in garbage collector.
Rui Ueyama
ruiu at google.com
Fri Jul 3 18:10:32 PDT 2015
Author: ruiu
Date: Fri Jul 3 20:10:32 2015
New Revision: 241382
URL: http://llvm.org/viewvc/llvm-project?rev=241382&view=rev
Log:
COFF: Fix bug in garbage collector.
GC root may have non-regular defined symbols, such as DefinedImportThunk,
so this cast<> was a wrong assumption.
Modified:
lld/trunk/COFF/Writer.cpp
lld/trunk/test/COFF/imports.test
Modified: lld/trunk/COFF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Writer.cpp?rev=241382&r1=241381&r2=241382&view=diff
==============================================================================
--- lld/trunk/COFF/Writer.cpp (original)
+++ lld/trunk/COFF/Writer.cpp Fri Jul 3 20:10:32 2015
@@ -118,8 +118,8 @@ void Writer::markLive() {
SmallVector<SectionChunk *, 256> Worklist;
for (Undefined *U : Config->GCRoot) {
- auto *D = cast<DefinedRegular>(U->repl());
- if (D->isLive())
+ auto *D = dyn_cast<DefinedRegular>(U->repl());
+ if (!D || D->isLive())
continue;
D->markLive();
Worklist.push_back(D->getChunk());
Modified: lld/trunk/test/COFF/imports.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/imports.test?rev=241382&r1=241381&r2=241382&view=diff
==============================================================================
--- lld/trunk/test/COFF/imports.test (original)
+++ lld/trunk/test/COFF/imports.test Fri Jul 3 20:10:32 2015
@@ -5,6 +5,11 @@
# RUN: llvm-objdump -d %t.exe | FileCheck -check-prefix=TEXT %s
# RUN: llvm-readobj -coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s
+# RUN: lld -flavor link2 /out:%t.exe /entry:main /subsystem:console \
+# RUN: %p/Inputs/hello64.obj %p/Inputs/std64.lib /include:ExitProcess
+# RUN: llvm-objdump -d %t.exe | FileCheck -check-prefix=TEXT %s
+# RUN: llvm-readobj -coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s
+
TEXT: Disassembly of section .text:
TEXT-NEXT: .text:
TEXT-NEXT: subq $40, %rsp
More information about the llvm-commits
mailing list