[lld] r189793 - A weak reference to a symbol that is only weakly referenced in
Joerg Sonnenberger
joerg at bec.de
Tue Sep 3 05:06:33 PDT 2013
Author: joerg
Date: Tue Sep 3 07:06:33 2013
New Revision: 189793
URL: http://llvm.org/viewvc/llvm-project?rev=189793&view=rev
Log:
A weak reference to a symbol that is only weakly referenced in
dependencies should remain weak, not get promoted to undef or dropped.
Added:
lld/trunk/test/elf/Inputs/libweaksym.so (with props)
lld/trunk/test/elf/Inputs/weaksym.o (with props)
lld/trunk/test/elf/weaksym.test
Modified:
lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h
Modified: lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h?rev=189793&r1=189792&r2=189793&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h Tue Sep 3 07:06:33 2013
@@ -57,7 +57,9 @@ public:
if (i->st_shndx == llvm::ELF::SHN_ABS)
continue;
- if (useShlibUndefines && (i->st_shndx == llvm::ELF::SHN_UNDEF)) {
+ if (i->st_shndx == llvm::ELF::SHN_UNDEF) {
+ if (!useShlibUndefines)
+ continue;
// Create an undefined atom.
if (!name->empty()) {
auto *newAtom =
Added: lld/trunk/test/elf/Inputs/libweaksym.so
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Inputs/libweaksym.so?rev=189793&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lld/trunk/test/elf/Inputs/libweaksym.so
------------------------------------------------------------------------------
svn:executable = *
Propchange: lld/trunk/test/elf/Inputs/libweaksym.so
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: lld/trunk/test/elf/Inputs/weaksym.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Inputs/weaksym.o?rev=189793&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lld/trunk/test/elf/Inputs/weaksym.o
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: lld/trunk/test/elf/weaksym.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/weaksym.test?rev=189793&view=auto
==============================================================================
--- lld/trunk/test/elf/weaksym.test (added)
+++ lld/trunk/test/elf/weaksym.test Tue Sep 3 07:06:33 2013
@@ -0,0 +1,7 @@
+# Tests that a weak reference remains a weak reference,
+# even if a shared library defines the symbol weak as well.
+
+RUN: lld -flavor gnu -target x86_64 -shared %p/Inputs/weaksym.o -L%p/Inputs -lweaksym -o %t1
+RUN: llvm-nm -n %t1 | FileCheck -check-prefix CHECKSYMS %s
+
+CHECKSYMS: w weaksym
More information about the llvm-commits
mailing list