[lld] r249636 - ELF2: Initialize SyntheticOptional only once.

Rafael EspĂ­ndola via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 7 19:34:39 PDT 2015


There is also IgnoreUndef if you want.

On 7 October 2015 at 19:46, Rui Ueyama via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: ruiu
> Date: Wed Oct  7 18:46:11 2015
> New Revision: 249636
>
> URL: http://llvm.org/viewvc/llvm-project?rev=249636&view=rev
> Log:
> ELF2: Initialize SyntheticOptional only once.
>
> Modified:
>     lld/trunk/ELF/Driver.cpp
>     lld/trunk/ELF/SymbolTable.cpp
>     lld/trunk/ELF/Symbols.cpp
>     lld/trunk/ELF/Symbols.h
>
> Modified: lld/trunk/ELF/Driver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=249636&r1=249635&r2=249636&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Driver.cpp (original)
> +++ lld/trunk/ELF/Driver.cpp Wed Oct  7 18:46:11 2015
> @@ -147,6 +147,8 @@ getString(opt::InputArgList &Args, unsig
>  }
>
>  void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
> +  initSymbols();
> +
>    // Parse command line options.
>    opt::InputArgList Args = Parser.parse(ArgsArr);
>
>
> Modified: lld/trunk/ELF/SymbolTable.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=249636&r1=249635&r2=249636&view=diff
> ==============================================================================
> --- lld/trunk/ELF/SymbolTable.cpp (original)
> +++ lld/trunk/ELF/SymbolTable.cpp Wed Oct  7 18:46:11 2015
> @@ -90,7 +90,6 @@ void SymbolTable::addUndefinedSym(String
>  }
>
>  template <class ELFT> void SymbolTable::addUndefinedSym(StringRef Name) {
> -  Undefined<ELFT>::SyntheticOptional.setVisibility(STV_HIDDEN);
>    resolve<ELFT>(new (Alloc)
>                      Undefined<ELFT>(Name, Undefined<ELFT>::SyntheticOptional));
>  }
>
> Modified: lld/trunk/ELF/Symbols.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=249636&r1=249635&r2=249636&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Symbols.cpp (original)
> +++ lld/trunk/ELF/Symbols.cpp Wed Oct  7 18:46:11 2015
> @@ -86,6 +86,13 @@ std::unique_ptr<InputFile> Lazy::getMemb
>    return createELFFile<ObjectFile>(MBRef);
>  }
>
> +void lld::elf2::initSymbols() {
> +  Undefined<ELF32LE>::SyntheticOptional.setVisibility(STV_HIDDEN);
> +  Undefined<ELF32BE>::SyntheticOptional.setVisibility(STV_HIDDEN);
> +  Undefined<ELF64LE>::SyntheticOptional.setVisibility(STV_HIDDEN);
> +  Undefined<ELF64BE>::SyntheticOptional.setVisibility(STV_HIDDEN);
> +}
> +
>  template int SymbolBody::compare<ELF32LE>(SymbolBody *Other);
>  template int SymbolBody::compare<ELF32BE>(SymbolBody *Other);
>  template int SymbolBody::compare<ELF64LE>(SymbolBody *Other);
>
> Modified: lld/trunk/ELF/Symbols.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.h?rev=249636&r1=249635&r2=249636&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Symbols.h (original)
> +++ lld/trunk/ELF/Symbols.h Wed Oct  7 18:46:11 2015
> @@ -25,6 +25,10 @@ class SymbolBody;
>  template <class ELFT> class ObjectFile;
>  template <class ELFT> class OutputSection;
>
> +// Initializes global objects defined in this file.
> +// Called at the beginning of main().
> +void initSymbols();
> +
>  // A real symbol object, SymbolBody, is usually accessed indirectly
>  // through a Symbol. There's always one Symbol for each symbol name.
>  // The resolver updates SymbolBody pointers as it resolves symbols.
>
>
> _______________________________________________
> 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