[lld] r304392 - [ELF] - Do not crash when proccessing absolute symbols during GC.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 1 00:47:56 PDT 2017


Author: grimar
Date: Thu Jun  1 02:47:56 2017
New Revision: 304392

URL: http://llvm.org/viewvc/llvm-project?rev=304392&view=rev
Log:
[ELF] - Do not crash when proccessing absolute symbols during GC.

This is PR33239, previously we segfault on given testcase.

Differential revision: https://reviews.llvm.org/D33713

Added:
    lld/trunk/test/ELF/gc-absolute.s
Modified:
    lld/trunk/ELF/MarkLive.cpp

Modified: lld/trunk/ELF/MarkLive.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/MarkLive.cpp?rev=304392&r1=304391&r2=304392&view=diff
==============================================================================
--- lld/trunk/ELF/MarkLive.cpp (original)
+++ lld/trunk/ELF/MarkLive.cpp Thu Jun  1 02:47:56 2017
@@ -220,7 +220,8 @@ template <class ELFT> void elf::markLive
 
   auto MarkSymbol = [&](const SymbolBody *Sym) {
     if (auto *D = dyn_cast_or_null<DefinedRegular>(Sym))
-      Enqueue({cast<InputSectionBase>(D->Section), D->Value});
+      if (auto *IS = cast_or_null<InputSectionBase>(D->Section))
+        Enqueue({IS, D->Value});
   };
 
   // Add GC root symbols.

Added: lld/trunk/test/ELF/gc-absolute.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gc-absolute.s?rev=304392&view=auto
==============================================================================
--- lld/trunk/test/ELF/gc-absolute.s (added)
+++ lld/trunk/test/ELF/gc-absolute.s Thu Jun  1 02:47:56 2017
@@ -0,0 +1,7 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
+# RUN: ld.lld %t -o %t2 -shared --gc-sections
+
+.global foo
+foo = 0x123




More information about the llvm-commits mailing list