[lld] r319860 - [lld] Fix handling of wildcards in dynamic lists.

Evgeniy Stepanov via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 5 16:14:04 PST 2017


Author: eugenis
Date: Tue Dec  5 16:14:04 2017
New Revision: 319860

URL: http://llvm.org/viewvc/llvm-project?rev=319860&view=rev
Log:
[lld] Fix handling of wildcards in dynamic lists.

Reviewers: pcc, ruiu

Subscribers: llvm-commits, emaste

Differential Revision: https://reviews.llvm.org/D40868

Added:
    lld/trunk/test/ELF/dynamic-list-wildcard.s
Modified:
    lld/trunk/ELF/SymbolTable.cpp

Modified: lld/trunk/ELF/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=319860&r1=319859&r2=319860&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.cpp (original)
+++ lld/trunk/ELF/SymbolTable.cpp Tue Dec  5 16:14:04 2017
@@ -685,9 +685,9 @@ void SymbolTable::handleDynamicList() {
   for (SymbolVersion &Ver : Config->DynamicList) {
     std::vector<Symbol *> Syms;
     if (Ver.HasWildcard)
-      Syms = findByVersion(Ver);
-    else
       Syms = findAllByVersion(Ver);
+    else
+      Syms = findByVersion(Ver);
 
     for (Symbol *B : Syms) {
       if (!Config->Shared)

Added: lld/trunk/test/ELF/dynamic-list-wildcard.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic-list-wildcard.s?rev=319860&view=auto
==============================================================================
--- lld/trunk/test/ELF/dynamic-list-wildcard.s (added)
+++ lld/trunk/test/ELF/dynamic-list-wildcard.s Tue Dec  5 16:14:04 2017
@@ -0,0 +1,53 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
+
+# RUN: echo "{ foo1*; };" > %t.list
+# RUN: ld.lld --hash-style=sysv -pie --dynamic-list %t.list %t -o %t.exe
+# RUN: llvm-readobj -dyn-symbols %t.exe | FileCheck %s
+
+# CHECK:      DynamicSymbols [
+# CHECK-NEXT:   Symbol {
+# CHECK-NEXT:     Name:	 @ (0)
+# CHECK-NEXT:     Value:	 0x0
+# CHECK-NEXT:     Size:	 0
+# CHECK-NEXT:     Binding:	 Local (0x0)
+# CHECK-NEXT:     Type:	 None (0x0)
+# CHECK-NEXT:     Other:	 0
+# CHECK-NEXT:     Section:	 Undefined (0x0)
+# CHECK-NEXT:   }
+# CHECK-NEXT:   Symbol {
+# CHECK-NEXT:     Name:	 foo1@ (1)
+# CHECK-NEXT:     Value:	 0x1000
+# CHECK-NEXT:     Size:	 0
+# CHECK-NEXT:     Binding:	 Global (0x1)
+# CHECK-NEXT:     Type:	 None (0x0)
+# CHECK-NEXT:     Other:	 0
+# CHECK-NEXT:     Section:	 .text (0x4)
+# CHECK-NEXT:   }
+# CHECK-NEXT:   Symbol {
+# CHECK-NEXT:     Name:	 foo11@ (6)
+# CHECK-NEXT:     Value:	 0x1001
+# CHECK-NEXT:     Size:	 0
+# CHECK-NEXT:     Binding:	 Global (0x1)
+# CHECK-NEXT:     Type:	 None (0x0)
+# CHECK-NEXT:     Other:	 0
+# CHECK-NEXT:     Section:	 .text (0x4)
+# CHECK-NEXT:   }
+# CHECK-NEXT: ]
+
+.globl foo1
+foo1:
+  ret
+
+.globl foo11
+foo11:
+  ret
+
+.globl foo2
+foo2:
+  ret
+
+.globl _start
+_start:
+  retq




More information about the llvm-commits mailing list