[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