[lld] r250225 - [ELF2] Add support for -Bsymbolic.

Rafael EspĂ­ndola via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 13 14:25:33 PDT 2015


Why have you kept DT_SYMBOLIC?

On 13 October 2015 at 17:02, Davide Italiano via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: davide
> Date: Tue Oct 13 16:02:34 2015
> New Revision: 250225
>
> URL: http://llvm.org/viewvc/llvm-project?rev=250225&view=rev
> Log:
> [ELF2] Add support for -Bsymbolic.
>
> Added:
>     lld/trunk/test/elf2/dt_flags.s
>       - copied, changed from r250221, lld/trunk/test/elf2/now.s
> Removed:
>     lld/trunk/test/elf2/now.s
> Modified:
>     lld/trunk/ELF/Config.h
>     lld/trunk/ELF/Driver.cpp
>     lld/trunk/ELF/Options.td
>     lld/trunk/ELF/OutputSections.cpp
>
> Modified: lld/trunk/ELF/Config.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=250225&r1=250224&r2=250225&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Config.h (original)
> +++ lld/trunk/ELF/Config.h Tue Oct 13 16:02:34 2015
> @@ -44,6 +44,7 @@ struct Configuration {
>    std::vector<llvm::StringRef> SearchPaths;
>    bool AllowMultipleDefinition;
>    bool AsNeeded = false;
> +  bool Bsymbolic;
>    bool DiscardAll;
>    bool DiscardLocals;
>    bool DiscardNone;
>
> Modified: lld/trunk/ELF/Driver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=250225&r1=250224&r2=250225&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Driver.cpp (original)
> +++ lld/trunk/ELF/Driver.cpp Tue Oct 13 16:02:34 2015
> @@ -136,6 +136,7 @@ void LinkerDriver::createFiles(opt::Inpu
>    }
>
>    Config->AllowMultipleDefinition = Args.hasArg(OPT_allow_multiple_definition);
> +  Config->Bsymbolic = Args.hasArg(OPT_Bsymbolic);
>    Config->DiscardAll = Args.hasArg(OPT_discard_all);
>    Config->DiscardLocals = Args.hasArg(OPT_discard_locals);
>    Config->DiscardNone = Args.hasArg(OPT_discard_none);
>
> Modified: lld/trunk/ELF/Options.td
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=250225&r1=250224&r2=250225&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Options.td (original)
> +++ lld/trunk/ELF/Options.td Tue Oct 13 16:02:34 2015
> @@ -1,5 +1,8 @@
>  include "llvm/Option/OptParser.td"
>
> +def Bsymbolic: Flag<["-"], "Bsymbolic">,
> +  HelpText<"Bind defined symbols locally">;
> +
>  def Bdynamic: Flag<["-"], "Bdynamic">,
>    HelpText<"Link against shared libraries">;
>
>
> Modified: lld/trunk/ELF/OutputSections.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=250225&r1=250224&r2=250225&view=diff
> ==============================================================================
> --- lld/trunk/ELF/OutputSections.cpp (original)
> +++ lld/trunk/ELF/OutputSections.cpp Tue Oct 13 16:02:34 2015
> @@ -293,8 +293,10 @@ template <class ELFT> void DynamicSectio
>      ++NumEntries; // DT_INIT
>    if (FiniSym)
>      ++NumEntries; // DT_FINI
> -  if (Config->ZNow)
> +  if (Config->ZNow || Config->Bsymbolic)
>      ++NumEntries; // DT_FLAGS_1
> +  if (Config->Bsymbolic)
> +    ++NumEntries; // DT_SYMBOLIC
>
>    ++NumEntries; // DT_NULL
>
> @@ -366,8 +368,13 @@ template <class ELFT> void DynamicSectio
>    if (FiniSym)
>      WritePtr(DT_FINI, getSymVA<ELFT>(*FiniSym));
>
> +  uint32_t Flags = 0;
> +  if (Config->Bsymbolic)
> +    Flags |= DF_SYMBOLIC;
>    if (Config->ZNow)
> -    WriteVal(DT_FLAGS_1, DF_1_NOW);
> +    Flags |= DF_1_NOW;
> +  if (Flags)
> +    WriteVal(DT_FLAGS_1, Flags);
>
>    WriteVal(DT_NULL, 0);
>  }
>
> Copied: lld/trunk/test/elf2/dt_flags.s (from r250221, lld/trunk/test/elf2/now.s)
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/dt_flags.s?p2=lld/trunk/test/elf2/dt_flags.s&p1=lld/trunk/test/elf2/now.s&r1=250221&r2=250225&rev=250225&view=diff
> ==============================================================================
> --- lld/trunk/test/elf2/now.s (original)
> +++ lld/trunk/test/elf2/dt_flags.s Tue Oct 13 16:02:34 2015
> @@ -2,17 +2,17 @@
>
>  # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
>  # RUN: ld.lld2 -shared %t -o %t.so
> -# RUN: ld.lld2 -z now %t %t.so -o %t1
> +# RUN: ld.lld2 -z now -Bsymbolic %t %t.so -o %t1
>  # RUN: ld.lld2 %t %t.so -o %t2
> -# RUN: llvm-readobj -dynamic-table %t1 | FileCheck -check-prefix=NOW %s
> +# RUN: llvm-readobj -dynamic-table %t1 | FileCheck -check-prefix=FLAGS %s
>  # RUN: llvm-readobj -dynamic-table %t2 | FileCheck %s
>
> -# NOW: DynamicSection [
> -# NOW:   0x000000006FFFFFFB FLAGS_1 NOW
> -# NOW: ]
> +# FLAGS: DynamicSection [
> +# FLAGS:   0x000000006FFFFFFB FLAGS_1 NOW GLOBAL
> +# FLAGS: ]
>
>  # CHECK: DynamicSection [
> -# CHECK-NOT:   0x000000006FFFFFFB FLAGS_1 NOW
> +# CHECK-NOT:   0x000000006FFFFFFB FLAGS_1 NOW GLOBAL
>  # CHECK: ]
>
>  .globl _start
>
> Removed: lld/trunk/test/elf2/now.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/now.s?rev=250224&view=auto
> ==============================================================================
> --- lld/trunk/test/elf2/now.s (original)
> +++ lld/trunk/test/elf2/now.s (removed)
> @@ -1,19 +0,0 @@
> -# REQUIRES: x86
> -
> -# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
> -# RUN: ld.lld2 -shared %t -o %t.so
> -# RUN: ld.lld2 -z now %t %t.so -o %t1
> -# RUN: ld.lld2 %t %t.so -o %t2
> -# RUN: llvm-readobj -dynamic-table %t1 | FileCheck -check-prefix=NOW %s
> -# RUN: llvm-readobj -dynamic-table %t2 | FileCheck %s
> -
> -# NOW: DynamicSection [
> -# NOW:   0x000000006FFFFFFB FLAGS_1 NOW
> -# NOW: ]
> -
> -# CHECK: DynamicSection [
> -# CHECK-NOT:   0x000000006FFFFFFB FLAGS_1 NOW
> -# CHECK: ]
> -
> -.globl _start
> -_start:
>
>
> _______________________________________________
> 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