[lld] r323221 - Don't mark a shared library as needed because of a lazy symbol.
Hans Wennborg via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 24 06:55:24 PST 2018
Merged to 6.0 in r323327.
On Tue, Jan 23, 2018 at 11:37 PM, Rafael Avila de Espindola via
llvm-commits <llvm-commits at lists.llvm.org> wrote:
> I agree. I will open the bug.
>
> Rui Ueyama <ruiu at google.com> writes:
>
>> I think this needs to be cherry picked for 6.0.
>>
>> On Tue, Jan 23, 2018 at 8:59 AM, Rafael Espindola via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: rafael
>>> Date: Tue Jan 23 08:59:20 2018
>>> New Revision: 323221
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=323221&view=rev
>>> Log:
>>> Don't mark a shared library as needed because of a lazy symbol.
>>>
>>> Fixes PR36029.
>>>
>>> Added:
>>> lld/trunk/test/ELF/Inputs/as-needed-lazy.s
>>> lld/trunk/test/ELF/as-needed-lazy.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=323221&r1=323220&r2=323221&view=diff
>>> ============================================================
>>> ==================
>>> --- lld/trunk/ELF/SymbolTable.cpp (original)
>>> +++ lld/trunk/ELF/SymbolTable.cpp Tue Jan 23 08:59:20 2018
>>> @@ -491,12 +491,13 @@ void SymbolTable::addShared(StringRef Na
>>> if (WasInserted ||
>>> ((S->isUndefined() || S->isLazy()) && S->Visibility ==
>>> STV_DEFAULT)) {
>>> uint8_t Binding = S->Binding;
>>> + bool WasUndefined = S->isUndefined();
>>> replaceSymbol<SharedSymbol>(S, File, Name, Sym.getBinding(),
>>> Sym.st_other,
>>> Sym.getType(), Sym.st_value, Sym.st_size,
>>> Alignment, VerdefIndex);
>>> if (!WasInserted) {
>>> S->Binding = Binding;
>>> - if (!S->isWeak() && !Config->GcSections)
>>> + if (!S->isWeak() && !Config->GcSections && WasUndefined)
>>> File.IsNeeded = true;
>>> }
>>> }
>>>
>>> Added: lld/trunk/test/ELF/Inputs/as-needed-lazy.s
>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/
>>> Inputs/as-needed-lazy.s?rev=323221&view=auto
>>> ============================================================
>>> ==================
>>> --- lld/trunk/test/ELF/Inputs/as-needed-lazy.s (added)
>>> +++ lld/trunk/test/ELF/Inputs/as-needed-lazy.s Tue Jan 23 08:59:20 2018
>>> @@ -0,0 +1,3 @@
>>> +.global foo
>>> +foo:
>>> + nop
>>>
>>> Added: lld/trunk/test/ELF/as-needed-lazy.s
>>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/as-
>>> needed-lazy.s?rev=323221&view=auto
>>> ============================================================
>>> ==================
>>> --- lld/trunk/test/ELF/as-needed-lazy.s (added)
>>> +++ lld/trunk/test/ELF/as-needed-lazy.s Tue Jan 23 08:59:20 2018
>>> @@ -0,0 +1,14 @@
>>> +# REQUIRES: x86
>>> +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o
>>> +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux
>>> %p/Inputs/as-needed-lazy.s -o %t2.o
>>> +# RUN: ld.lld %t2.o -o %t2.so -shared
>>> +# RUN: rm -f %t2.a
>>> +# RUN: llvm-ar rc %t2.a %t2.o
>>> +# RUN: ld.lld %t1.o %t2.a --as-needed %t2.so -o %t
>>> +# RUN: llvm-readobj -d %t | FileCheck %s
>>> +
>>> +# CHECK-NOT: NEEDED
>>> +
>>> +.global _start
>>> +_start:
>>> + nop
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list