[lld] r265854 - Fix another crash bug in --start-lib.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 8 14:38:22 PDT 2016


Author: ruiu
Date: Fri Apr  8 16:38:22 2016
New Revision: 265854

URL: http://llvm.org/viewvc/llvm-project?rev=265854&view=rev
Log:
Fix another crash bug in --start-lib.

The previous fix didn't work for bitcode files. This patch fixes
the remaining issue.

Added:
    lld/trunk/test/ELF/lto/Inputs/start-lib1.ll
      - copied, changed from r265847, lld/trunk/test/ELF/lto/Inputs/start-lib.ll
    lld/trunk/test/ELF/lto/Inputs/start-lib2.ll
      - copied, changed from r265847, lld/trunk/test/ELF/lto/Inputs/start-lib.ll
Removed:
    lld/trunk/test/ELF/lto/Inputs/start-lib.ll
Modified:
    lld/trunk/ELF/InputFiles.cpp
    lld/trunk/test/ELF/lto/start-lib.ll

Modified: lld/trunk/ELF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.cpp?rev=265854&r1=265853&r2=265854&view=diff
==============================================================================
--- lld/trunk/ELF/InputFiles.cpp (original)
+++ lld/trunk/ELF/InputFiles.cpp Fri Apr  8 16:38:22 2016
@@ -609,7 +609,7 @@ std::vector<StringRef> LazyObjectFile::g
   for (const BasicSymbolRef &Sym : Obj->symbols()) {
     if (BitcodeFile::shouldSkip(Sym))
       continue;
-    if (Sym.getFlags() == BasicSymbolRef::SF_Undefined)
+    if (Sym.getFlags() & BasicSymbolRef::SF_Undefined)
       continue;
     SmallString<64> Name;
     raw_svector_ostream OS(Name);

Removed: lld/trunk/test/ELF/lto/Inputs/start-lib.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/Inputs/start-lib.ll?rev=265853&view=auto
==============================================================================
--- lld/trunk/test/ELF/lto/Inputs/start-lib.ll (original)
+++ lld/trunk/test/ELF/lto/Inputs/start-lib.ll (removed)
@@ -1,6 +0,0 @@
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @_bar() {
-  ret void
-}

Copied: lld/trunk/test/ELF/lto/Inputs/start-lib1.ll (from r265847, lld/trunk/test/ELF/lto/Inputs/start-lib.ll)
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/Inputs/start-lib1.ll?p2=lld/trunk/test/ELF/lto/Inputs/start-lib1.ll&p1=lld/trunk/test/ELF/lto/Inputs/start-lib.ll&r1=265847&r2=265854&rev=265854&view=diff
==============================================================================
--- lld/trunk/test/ELF/lto/Inputs/start-lib.ll (original)
+++ lld/trunk/test/ELF/lto/Inputs/start-lib1.ll Fri Apr  8 16:38:22 2016
@@ -1,6 +1,8 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @_bar() {
+declare void @bar()
+
+define void @foo() {
   ret void
 }

Copied: lld/trunk/test/ELF/lto/Inputs/start-lib2.ll (from r265847, lld/trunk/test/ELF/lto/Inputs/start-lib.ll)
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/Inputs/start-lib2.ll?p2=lld/trunk/test/ELF/lto/Inputs/start-lib2.ll&p1=lld/trunk/test/ELF/lto/Inputs/start-lib.ll&r1=265847&r2=265854&rev=265854&view=diff
==============================================================================
--- lld/trunk/test/ELF/lto/Inputs/start-lib.ll (original)
+++ lld/trunk/test/ELF/lto/Inputs/start-lib2.ll Fri Apr  8 16:38:22 2016
@@ -1,6 +1,6 @@
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
-define void @_bar() {
+define void @bar() {
   ret void
 }

Modified: lld/trunk/test/ELF/lto/start-lib.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/start-lib.ll?rev=265854&r1=265853&r2=265854&view=diff
==============================================================================
--- lld/trunk/test/ELF/lto/start-lib.ll (original)
+++ lld/trunk/test/ELF/lto/start-lib.ll Fri Apr  8 16:38:22 2016
@@ -1,15 +1,23 @@
 ; REQUIRES: x86
 ;
 ; RUN: llvm-as %s -o %t1.o
-; RUN: llvm-as %p/Inputs/start-lib.ll -o %t2.o
+; RUN: llvm-as %p/Inputs/start-lib1.ll -o %t2.o
+; RUN: llvm-as %p/Inputs/start-lib2.ll -o %t3.o
 ;
-; RUN: ld.lld -m elf_x86_64 -shared -o %t3 %t1.o %t2.o
-; RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=ADDED %s
-; ADDED: Name: _bar
+; RUN: ld.lld -m elf_x86_64 -shared -o %t3 %t1.o %t2.o %t3.o
+; RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=TEST1 %s
+; TEST1: Name: bar
+; TEST1: Name: foo
 ;
-; RUN: ld.lld -m elf_x86_64 -shared -o %t3 %t1.o --start-lib %t2.o
-; RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=LIB %s
-; LIB-NOT: Name: _bar
+; RUN: ld.lld -m elf_x86_64 -shared -o %t3 -u bar %t1.o --start-lib %t2.o %t3.o
+; RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=TEST2 %s
+; TEST2: Name: bar
+; TEST2-NOT: Name: foo
+;
+; RUN: ld.lld -m elf_x86_64 -shared -o %t3 %t1.o --start-lib %t2.o %t3.o
+; RUN: llvm-readobj --symbols %t3 | FileCheck --check-prefix=TEST3 %s
+; TEST3-NOT: Name: bar
+; TEST3-NOT: Name: foo
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"




More information about the llvm-commits mailing list