[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