<div dir="ltr">I now remember what I planned when I wrote the original initSymbols and doInitSymbols. I was thinking that there is a chance that we will need more initializers for statically-allocated PODs, and I was planning to define init<filename> function in each file, each of which is responsible to initialize all stuff in the file. So initSymbols was not only for initializing symbols but for everything in Symbols.cpp.<div><br></div><div>It turned out that we only had one initializer function, so inlining it into Driver.cpp makes sense now, but when we need more initializers, we may want to roll this back.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 11, 2016 at 6:29 AM, Rafael Espíndola <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks!<br>
<br>
On 11 March 2016 at 05:07, George Rimar via llvm-commits<br>
<div><div><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: grimar<br>
> Date: Fri Mar 11 04:07:18 2016<br>
> New Revision: 263214<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=263214&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=263214&view=rev</a><br>
> Log:<br>
> [ELF] - Move initSymbols() to Driver.cpp. NFC.<br>
><br>
> That is followup for <a href="http://reviews.llvm.org/D18047" rel="noreferrer" target="_blank">http://reviews.llvm.org/D18047</a><br>
> patch. initSymbols() moved to Driver.cpp and made static.<br>
><br>
> Modified:<br>
>     lld/trunk/ELF/Driver.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=263214&r1=263213&r2=263214&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=263214&r1=263213&r2=263214&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Driver.cpp (original)<br>
> +++ lld/trunk/ELF/Driver.cpp Fri Mar 11 04:07:18 2016<br>
> @@ -315,6 +315,14 @@ void LinkerDriver::createFiles(opt::Inpu<br>
>      error("No input files");<br>
>  }<br>
><br>
> +template <class ELFT> static void initSymbols() {<br>
> +  ElfSym<ELFT>::Etext.setBinding(STB_GLOBAL);<br>
> +  ElfSym<ELFT>::Edata.setBinding(STB_GLOBAL);<br>
> +  ElfSym<ELFT>::End.setBinding(STB_GLOBAL);<br>
> +  ElfSym<ELFT>::Ignored.setBinding(STB_WEAK);<br>
> +  ElfSym<ELFT>::Ignored.setVisibility(STV_HIDDEN);<br>
> +}<br>
> +<br>
>  template <class ELFT> void LinkerDriver::link(opt::InputArgList &Args) {<br>
>    initSymbols<ELFT>();<br>
>    // For LTO<br>
><br>
> Modified: lld/trunk/ELF/Symbols.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=263214&r1=263213&r2=263214&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=263214&r1=263213&r2=263214&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Symbols.cpp (original)<br>
> +++ lld/trunk/ELF/Symbols.cpp Fri Mar 11 04:07:18 2016<br>
> @@ -203,14 +203,6 @@ std::unique_ptr<InputFile> Lazy::getMemb<br>
>    return createObjectFile(MBRef, File->getName());<br>
>  }<br>
><br>
> -template <class ELFT> void elf::initSymbols() {<br>
> -  ElfSym<ELFT>::Etext.setBinding(STB_GLOBAL);<br>
> -  ElfSym<ELFT>::Edata.setBinding(STB_GLOBAL);<br>
> -  ElfSym<ELFT>::End.setBinding(STB_GLOBAL);<br>
> -  ElfSym<ELFT>::Ignored.setBinding(STB_WEAK);<br>
> -  ElfSym<ELFT>::Ignored.setVisibility(STV_HIDDEN);<br>
> -}<br>
> -<br>
>  // Returns the demangled C++ symbol name for Name.<br>
>  std::string elf::demangle(StringRef Name) {<br>
>  #if !defined(HAVE_CXXABI_H)<br>
> @@ -276,8 +268,3 @@ template class elf::DefinedSynthetic<ELF<br>
>  template class elf::DefinedSynthetic<ELF32BE>;<br>
>  template class elf::DefinedSynthetic<ELF64LE>;<br>
>  template class elf::DefinedSynthetic<ELF64BE>;<br>
> -<br>
> -template void elf::initSymbols<ELF32LE>();<br>
> -template void elf::initSymbols<ELF32BE>();<br>
> -template void elf::initSymbols<ELF64LE>();<br>
> -template void elf::initSymbols<ELF64BE>();<br>
><br>
> Modified: lld/trunk/ELF/Symbols.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.h?rev=263214&r1=263213&r2=263214&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.h?rev=263214&r1=263213&r2=263214&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/Symbols.h (original)<br>
> +++ lld/trunk/ELF/Symbols.h Fri Mar 11 04:07:18 2016<br>
> @@ -40,9 +40,6 @@ template <class ELFT> class OutputSectio<br>
>  template <class ELFT> class OutputSectionBase;<br>
>  template <class ELFT> class SharedFile;<br>
><br>
> -// Initializes global objects defined in this file.<br>
> -template <class ELFT> void initSymbols();<br>
> -<br>
>  // Returns a demangled C++ symbol name. If Name is not a mangled<br>
>  // name or the system does not provide __cxa_demangle function,<br>
>  // it returns the unmodified string.<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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></div>