<div dir="ltr">I did that in r249645. Thanks!</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 7, 2015 at 7:34 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">There is also IgnoreUndef if you want.<br>
<br>
On 7 October 2015 at 19:46, Rui Ueyama via llvm-commits<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: ruiu<br>
> Date: Wed Oct  7 18:46:11 2015<br>
> New Revision: 249636<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=249636&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=249636&view=rev</a><br>
> Log:<br>
> ELF2: Initialize SyntheticOptional only once.<br>
><br>
> Modified:<br>
>     lld/trunk/ELF/Driver.cpp<br>
>     lld/trunk/ELF/SymbolTable.cpp<br>
>     lld/trunk/ELF/Symbols.cpp<br>
>     lld/trunk/ELF/Symbols.h<br>
><br>
> Modified: lld/trunk/ELF/Driver.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=249636&r1=249635&r2=249636&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=249636&r1=249635&r2=249636&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Driver.cpp (original)<br>
> +++ lld/trunk/ELF/Driver.cpp Wed Oct  7 18:46:11 2015<br>
> @@ -147,6 +147,8 @@ getString(opt::InputArgList &Args, unsig<br>
>  }<br>
><br>
>  void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {<br>
> +  initSymbols();<br>
> +<br>
>    // Parse command line options.<br>
>    opt::InputArgList Args = Parser.parse(ArgsArr);<br>
><br>
><br>
> Modified: lld/trunk/ELF/SymbolTable.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=249636&r1=249635&r2=249636&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=249636&r1=249635&r2=249636&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/SymbolTable.cpp (original)<br>
> +++ lld/trunk/ELF/SymbolTable.cpp Wed Oct  7 18:46:11 2015<br>
> @@ -90,7 +90,6 @@ void SymbolTable::addUndefinedSym(String<br>
>  }<br>
><br>
>  template <class ELFT> void SymbolTable::addUndefinedSym(StringRef Name) {<br>
> -  Undefined<ELFT>::SyntheticOptional.setVisibility(STV_HIDDEN);<br>
>    resolve<ELFT>(new (Alloc)<br>
>                      Undefined<ELFT>(Name, Undefined<ELFT>::SyntheticOptional));<br>
>  }<br>
><br>
> Modified: lld/trunk/ELF/Symbols.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=249636&r1=249635&r2=249636&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=249636&r1=249635&r2=249636&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Symbols.cpp (original)<br>
> +++ lld/trunk/ELF/Symbols.cpp Wed Oct  7 18:46:11 2015<br>
> @@ -86,6 +86,13 @@ std::unique_ptr<InputFile> Lazy::getMemb<br>
>    return createELFFile<ObjectFile>(MBRef);<br>
>  }<br>
><br>
> +void lld::elf2::initSymbols() {<br>
> +  Undefined<ELF32LE>::SyntheticOptional.setVisibility(STV_HIDDEN);<br>
> +  Undefined<ELF32BE>::SyntheticOptional.setVisibility(STV_HIDDEN);<br>
> +  Undefined<ELF64LE>::SyntheticOptional.setVisibility(STV_HIDDEN);<br>
> +  Undefined<ELF64BE>::SyntheticOptional.setVisibility(STV_HIDDEN);<br>
> +}<br>
> +<br>
>  template int SymbolBody::compare<ELF32LE>(SymbolBody *Other);<br>
>  template int SymbolBody::compare<ELF32BE>(SymbolBody *Other);<br>
>  template int SymbolBody::compare<ELF64LE>(SymbolBody *Other);<br>
><br>
> Modified: lld/trunk/ELF/Symbols.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.h?rev=249636&r1=249635&r2=249636&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.h?rev=249636&r1=249635&r2=249636&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Symbols.h (original)<br>
> +++ lld/trunk/ELF/Symbols.h Wed Oct  7 18:46:11 2015<br>
> @@ -25,6 +25,10 @@ class SymbolBody;<br>
>  template <class ELFT> class ObjectFile;<br>
>  template <class ELFT> class OutputSection;<br>
><br>
> +// Initializes global objects defined in this file.<br>
> +// Called at the beginning of main().<br>
> +void initSymbols();<br>
> +<br>
>  // A real symbol object, SymbolBody, is usually accessed indirectly<br>
>  // through a Symbol. There's always one Symbol for each symbol name.<br>
>  // The resolver updates SymbolBody pointers as it resolves symbols.<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>