[lld] r317956 - Don't produce a duplicated __wrap_foo if there is no __real_foo.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 10 16:53:52 PST 2017
Author: rafael
Date: Fri Nov 10 16:53:52 2017
New Revision: 317956
URL: http://llvm.org/viewvc/llvm-project?rev=317956&view=rev
Log:
Don't produce a duplicated __wrap_foo if there is no __real_foo.
This fixes a regression from r317426.
Modified:
lld/trunk/ELF/SymbolTable.cpp
lld/trunk/test/ELF/wrap-no-real.s
Modified: lld/trunk/ELF/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=317956&r1=317955&r2=317956&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.cpp (original)
+++ lld/trunk/ELF/SymbolTable.cpp Fri Nov 10 16:53:52 2017
@@ -196,11 +196,11 @@ void SymbolTable::applySymbolWrap() {
W.Sym->copyFrom(W.Wrap);
W.Sym->Binding = W.SymBinding;
- if (Real) {
- // We now have two copies of __wrap_sym. Drop one.
- W.Wrap->IsUsedInRegularObj = false;
+ // We now have two copies of __wrap_sym. Drop one.
+ W.Wrap->IsUsedInRegularObj = false;
+
+ if (Real)
SymVector.push_back(Real);
- }
}
}
Modified: lld/trunk/test/ELF/wrap-no-real.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/wrap-no-real.s?rev=317956&r1=317955&r2=317956&view=diff
==============================================================================
--- lld/trunk/test/ELF/wrap-no-real.s (original)
+++ lld/trunk/test/ELF/wrap-no-real.s Fri Nov 10 16:53:52 2017
@@ -16,13 +16,59 @@
// CHECK-NEXT: movl $0x11000, %edx
// RUN: llvm-readobj -t %t | FileCheck -check-prefix=SYM %s
-// SYM-NOT: Name: __real_foo
-// SYM: Name: foo
-// SYM-NEXT: Value: 0x11000
-// SYM-NOT: Name: __real_foo
-// SYM: Name: __wrap_foo
-// SYM-NEXT: Value: 0x11010
-// SYM-NOT: Name: __real_foo
+
+// Test the full symbol table. It is verbose, but lld at times
+// produced duplicated symbols which are hard to test otherwise.
+
+// SYM: Symbols [
+// SYM-NEXT: Symbol {
+// SYM-NEXT: Name: (0)
+// SYM-NEXT: Value:
+// SYM-NEXT: Size:
+// SYM-NEXT: Binding:
+// SYM-NEXT: Type
+// SYM-NEXT: Other:
+// SYM-NEXT: Section:
+// SYM-NEXT: }
+// SYM-NEXT: Symbol {
+// SYM-NEXT: Name: _DYNAMIC
+// SYM-NEXT: Value:
+// SYM-NEXT: Size:
+// SYM-NEXT: Binding:
+// SYM-NEXT: Type:
+// SYM-NEXT: Other [
+// SYM-NEXT: STV_HIDDEN
+// SYM-NEXT: ]
+// SYM-NEXT: Section: .dynamic
+// SYM-NEXT: }
+// SYM-NEXT: Symbol {
+// SYM-NEXT: Name: foo
+// SYM-NEXT: Value: 0x11000
+// SYM-NEXT: Size:
+// SYM-NEXT: Binding:
+// SYM-NEXT: Type:
+// SYM-NEXT: Other:
+// SYM-NEXT: Section:
+// SYM-NEXT: }
+// SYM-NEXT: Symbol {
+// SYM-NEXT: Name: _start
+// SYM-NEXT: Value:
+// SYM-NEXT: Size:
+// SYM-NEXT: Binding:
+// SYM-NEXT: Type
+// SYM-NEXT: Other:
+// SYM-NEXT: Section:
+// SYM-NEXT: }
+// SYM-NEXT: Symbol {
+// SYM-NEXT: Name: __wrap_foo
+// SYM-NEXT: Value: 0x11010
+// SYM-NEXT: Size:
+// SYM-NEXT: Binding:
+// SYM-NEXT: Type:
+// SYM-NEXT: Other:
+// SYM-NEXT: Section:
+// SYM-NEXT: }
+// SYM-NEXT: ]
.global _start
_start:
More information about the llvm-commits
mailing list