[PATCH] D40868: [lld] Fix handling of wildcards in dynamic lists.
Evgenii Stepanov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 5 15:49:51 PST 2017
eugenis created this revision.
Herald added a subscriber: emaste.
https://reviews.llvm.org/D40868
Files:
lld/ELF/SymbolTable.cpp
lld/test/ELF/dynamic-list-wildcard.s
Index: lld/test/ELF/dynamic-list-wildcard.s
===================================================================
--- /dev/null
+++ lld/test/ELF/dynamic-list-wildcard.s
@@ -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
Index: lld/ELF/SymbolTable.cpp
===================================================================
--- lld/ELF/SymbolTable.cpp
+++ lld/ELF/SymbolTable.cpp
@@ -685,9 +685,9 @@
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)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D40868.125641.patch
Type: text/x-patch
Size: 1958 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171205/ac5b6acb/attachment.bin>
More information about the llvm-commits
mailing list