HA: [lld] r249036 - [ELF2] Implement --allow-shlib-undefined as default behavior.
George Rimar via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 1 13:17:19 PDT 2015
Already did. http://reviews.llvm.org/D13355
________________________________________
От: Rafael Espíndola [rafael.espindola at gmail.com]
Отправлено: 1 октября 2015 г. 23:15
Кому: George Rimar
Копия: llvm-commits
Тема: Re: [lld] r249036 - [ELF2] Implement --allow-shlib-undefined as default behavior.
btw, if you want to "finish" this are you might want to consider
implementing --no-undefined.
On 1 October 2015 at 13:24, George Rimar via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: grimar
> Date: Thu Oct 1 12:24:24 2015
> New Revision: 249036
>
> URL: http://llvm.org/viewvc/llvm-project?rev=249036&view=rev
> Log:
> [ELF2] Implement --allow-shlib-undefined as default behavior.
>
> We ignore --{no,}allow-shlib-undefined options and always allow undefined
> symbols if we are building a DSO.
>
> Added:
> lld/trunk/test/elf2/Inputs/allow-shlib-undefined.s
> lld/trunk/test/elf2/allow-shlib-undefined.s
> Modified:
> lld/trunk/ELF/Options.td
> lld/trunk/ELF/Writer.cpp
>
> Modified: lld/trunk/ELF/Options.td
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=249036&r1=249035&r2=249036&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Options.td (original)
> +++ lld/trunk/ELF/Options.td Thu Oct 1 12:24:24 2015
> @@ -48,6 +48,12 @@ def shared : Flag<["-"], "shared">,
> def sysroot : Joined<["--"], "sysroot=">,
> HelpText<"Set the system root">;
>
> +def no_allow_shlib_undefined
> + : Flag<["--"], "no-allow-shlib-undefined">;
> +
> +def allow_shlib_undefined
> + : Flag<["--"], "allow-shlib-undefined">;
> +
> // Aliases
> def alias_Bdynamic_call_shared: Flag<["-"], "call_shared">, Alias<Bdynamic>;
> def alias_Bdynamic_dy: Flag<["-"], "dy">, Alias<Bdynamic>;
>
> Modified: lld/trunk/ELF/Writer.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=249036&r1=249035&r2=249036&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Writer.cpp (original)
> +++ lld/trunk/ELF/Writer.cpp Thu Oct 1 12:24:24 2015
> @@ -271,6 +271,9 @@ static void reportUndefined(const Symbol
> typedef typename ELFFile<ELFT>::Elf_Sym Elf_Sym;
> typedef typename ELFFile<ELFT>::Elf_Sym_Range Elf_Sym_Range;
>
> + if (Config->Shared)
> + return;
> +
> const Elf_Sym &SymE = cast<ELFSymbolBody<ELFT>>(Sym).Sym;
> ELFFileBase *SymFile = nullptr;
>
>
> Added: lld/trunk/test/elf2/Inputs/allow-shlib-undefined.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/Inputs/allow-shlib-undefined.s?rev=249036&view=auto
> ==============================================================================
> --- lld/trunk/test/elf2/Inputs/allow-shlib-undefined.s (added)
> +++ lld/trunk/test/elf2/Inputs/allow-shlib-undefined.s Thu Oct 1 12:24:24 2015
> @@ -0,0 +1,3 @@
> +.globl _shared
> +_shared:
> + call _unresolved
>
> Added: lld/trunk/test/elf2/allow-shlib-undefined.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/allow-shlib-undefined.s?rev=249036&view=auto
> ==============================================================================
> --- lld/trunk/test/elf2/allow-shlib-undefined.s (added)
> +++ lld/trunk/test/elf2/allow-shlib-undefined.s Thu Oct 1 12:24:24 2015
> @@ -0,0 +1,25 @@
> +# --allow-shlib-undefined and --no-allow-shlib-undefined are fully
> +# ignored in linker implementation.
> +# --allow-shlib-undefined is set by default
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
> +# RUN: %p/Inputs/allow-shlib-undefined.s -o %t
> +# RUN: lld -shared -flavor gnu2 %t -o %t.so
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1
> +
> +# Executable: should link with DSO containing undefined symbols in any case.
> +# RUN: lld -flavor gnu2 %t1 %t.so -o %t2
> +# RUN: lld -flavor gnu2 --no-allow-shlib-undefined %t1 %t.so -o %t2
> +# RUN: lld -flavor gnu2 --allow-shlib-undefined %t1 %t.so -o %t2
> +
> +# DSO with undefines:
> +# should link with or without any of these options.
> +# RUN: lld -shared -flavor gnu2 %t -o %t.so
> +# RUN: lld -shared --allow-shlib-undefined -flavor gnu2 %t -o %t.so
> +# RUN: lld -shared --no-allow-shlib-undefined -flavor gnu2 %t -o %t.so
> +
> +# Executable still should not link when have undefines inside.
> +# RUN: not lld -flavor gnu2 %t -o %t.so
> +
> +.globl _start
> +_start:
> + call _shared
>
>
> _______________________________________________
> 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