[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