[lld] r250914 - ELF2: Simplify DT_FLAGS{,_1} handling. NFC.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 21 11:11:16 PDT 2015


On Wed, Oct 21, 2015 at 10:47 AM, Rui Ueyama via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: ruiu
> Date: Wed Oct 21 12:47:10 2015
> New Revision: 250914
>
> URL: http://llvm.org/viewvc/llvm-project?rev=250914&view=rev
> Log:
> ELF2: Simplify DT_FLAGS{,_1} handling. NFC.
>
> Modified:
>     lld/trunk/ELF/Driver.cpp
>     lld/trunk/ELF/OutputSections.cpp
>     lld/trunk/ELF/OutputSections.h
>
> Modified: lld/trunk/ELF/Driver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=250914&r1=250913&r2=250914&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Driver.cpp (original)
> +++ lld/trunk/ELF/Driver.cpp Wed Oct 21 12:47:10 2015
> @@ -159,11 +159,12 @@ void LinkerDriver::createFiles(opt::Inpu
>      Config->Undefined.push_back(Arg->getValue());
>
>    for (auto *Arg : Args.filtered(OPT_z)) {
> -    if (Arg->getValue() == StringRef("nodelete"))
> +    StringRef S = Arg->getValue();
> +    if (S == "nodelete")
>        Config->ZNodelete = true;
> -    else if (Arg->getValue() == StringRef("now"))
> +    else if (S == "now")
>        Config->ZNow = true;
> -    else if (Arg->getValue() == StringRef("origin"))
> +    else if (S == "origin")
>        Config->ZOrigin = true;
>    }
>
>
> Modified: lld/trunk/ELF/OutputSections.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=250914&r1=250913&r2=250914&view=diff
> ==============================================================================
> --- lld/trunk/ELF/OutputSections.cpp (original)
> +++ lld/trunk/ELF/OutputSections.cpp Wed Oct 21 12:47:10 2015
> @@ -349,9 +349,23 @@ template <class ELFT> void DynamicSectio
>      ++NumEntries; // DT_INIT
>    if (FiniSym)
>      ++NumEntries; // DT_FINI
> -  if (Config->Bsymbolic || Config->ZNow || Config->ZOrigin)
> +
> +  if (Config->Bsymbolic)
> +    DtFlags |= DF_SYMBOLIC;
> +  if (Config->ZNodelete)
> +    DtFlags1 |= DF_1_NODELETE;
> +  if (Config->ZNow) {
> +    DtFlags |= DF_BIND_NOW;
> +    DtFlags1 |= DF_1_NOW;
> +  }
> +  if (Config->ZOrigin) {
> +    DtFlags |= DF_ORIGIN;
> +    DtFlags1 |= DF_1_ORIGIN;
> +  }
> +
> +  if (DtFlags)
>      ++NumEntries; // DT_FLAGS
> -  if (Config->ZNodelete || Config->ZNow || Config->ZOrigin)
> +  if (DtFlags1)
>      ++NumEntries; // DT_FLAGS_1
>    ++NumEntries; // DT_NULL
>
> @@ -428,26 +442,10 @@ template <class ELFT> void DynamicSectio
>      WritePtr(DT_INIT, getSymVA<ELFT>(*InitSym));
>    if (FiniSym)
>      WritePtr(DT_FINI, getSymVA<ELFT>(*FiniSym));
> -
> -  uint32_t Flags = 0;
> -  if (Config->Bsymbolic)
> -    Flags |= DF_SYMBOLIC;
> -  if (Config->ZNow)
> -    Flags |= DF_BIND_NOW;
> -  if (Config->ZOrigin)
> -    Flags |= DF_ORIGIN;
> -  if (Flags)
> -    WriteVal(DT_FLAGS, Flags);
> -  Flags = 0;
> -  if (Config->ZNodelete)
> -    Flags |= DF_1_NODELETE;
> -  if (Config->ZNow)
> -    Flags |= DF_1_NOW;
> -  if (Config->ZOrigin)
> -    Flags |= DF_1_ORIGIN;
> -  if (Flags)
> -    WriteVal(DT_FLAGS_1, Flags);
> -
> +  if (DtFlags)
> +    WriteVal(DT_FLAGS, DtFlags);
> +  if (DtFlags1)
> +    WriteVal(DT_FLAGS_1, DtFlags1);
>    WriteVal(DT_NULL, 0);
>  }
>
>
> Modified: lld/trunk/ELF/OutputSections.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.h?rev=250914&r1=250913&r2=250914&view=diff
> ==============================================================================
> --- lld/trunk/ELF/OutputSections.h (original)
> +++ lld/trunk/ELF/OutputSections.h Wed Oct 21 12:47:10 2015
> @@ -305,6 +305,8 @@ private:
>    SymbolTable<ELFT> &SymTab;
>    const ELFSymbolBody<ELFT> *InitSym = nullptr;
>    const ELFSymbolBody<ELFT> *FiniSym = nullptr;
> +  uint32_t DtFlags = 0;
> +  uint32_t DtFlags1 = 0;
>  };
>
>  // All output sections that are hadnled by the linker specially are
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits

Thanks.

-- 
Davide

"There are no solved problems; there are only problems that are more
or less solved" -- Henri Poincare


More information about the llvm-commits mailing list