<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 17, 2015 at 8:49 AM, 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:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">On 15 March 2015 at 20:54, Shankar Easwaran <<a href="mailto:shankare@codeaurora.org">shankare@codeaurora.org</a>> wrote:<br>
> Author: shankare<br>
> Date: Sun Mar 15 19:54:03 2015<br>
> New Revision: 232341<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=232341&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=232341&view=rev</a><br>
> Log:<br>
> [ELF][ARM] Make gotSymbol a member.<br>
><br>
> The gotSymbol need not be a global static variable.<br>
<br>
</span>But static is desirable.<br>
<span class=""><br>
> Apart from this reason, This<br>
> variable was creating an issue with self hosting lld, as there seems to be an<br>
> issue running global initializers, when initializing the guard for this static<br>
> variable.<br>
><br>
<br>
</span>Could you just use<br>
<br>
<br>
static const char *gotSymbol;<br>
<br>
<br>
To avoid the static constructor?<br></blockquote><div><br></div><div>We should be able to constant-fold StringRef("foo"), right? Saves computing the length at runtime (if we need that).</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><div class="h5"><br>
> Program received signal SIGTRAP, Trace/breakpoint trap.<br>
><br>
> Modified:<br>
>     lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h<br>
><br>
> Modified: lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h?rev=232341&r1=232340&r2=232341&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h?rev=232341&r1=232340&r2=232341&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h (original)<br>
> +++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMExecutableWriter.h Sun Mar 15 19:54:03 2015<br>
> @@ -41,18 +41,14 @@ protected:<br>
>  private:<br>
>    ARMLinkingContext &_context;<br>
>    ARMTargetLayout<ELFT> &_armLayout;<br>
> -<br>
> -  static StringRef gotSymbol;<br>
> +  StringRef _gotSymbol;<br>
>  };<br>
><br>
>  template <class ELFT><br>
> -StringRef ARMExecutableWriter<ELFT>::gotSymbol = "_GLOBAL_OFFSET_TABLE_";<br>
> -<br>
> -template <class ELFT><br>
>  ARMExecutableWriter<ELFT>::ARMExecutableWriter(ARMLinkingContext &context,<br>
>                                                 ARMTargetLayout<ELFT> &layout)<br>
>      : ExecutableWriter<ELFT>(context, layout), _context(context),<br>
> -      _armLayout(layout) {}<br>
> +      _armLayout(layout), _gotSymbol("_GLOBAL_OFFSET_TABLE_") {}<br>
><br>
>  template <class ELFT><br>
>  bool ARMExecutableWriter<ELFT>::createImplicitFiles(<br>
> @@ -65,7 +61,7 @@ template <class ELFT><br>
>  void ARMExecutableWriter<ELFT>::finalizeDefaultAtomValues() {<br>
>    // Finalize the atom values that are part of the parent.<br>
>    ExecutableWriter<ELFT>::finalizeDefaultAtomValues();<br>
> -  auto gotAtomIter = _armLayout.findAbsoluteAtom(gotSymbol);<br>
> +  auto gotAtomIter = _armLayout.findAbsoluteAtom(_gotSymbol);<br>
>    if (gotAtomIter != _armLayout.absoluteAtoms().end()) {<br>
>      auto *gotAtom = *gotAtomIter;<br>
>      if (auto gotpltSection = _armLayout.findOutputSection(".got.plt"))<br>
> @@ -88,8 +84,8 @@ unique_bump_ptr<SymbolTable<ELFT>><br>
>  template <class ELFT><br>
>  void ARMExecutableWriter<ELFT>::processUndefinedSymbol(<br>
>      StringRef symName, CRuntimeFile<ELFT> &file) const {<br>
> -  if (symName == gotSymbol) {<br>
> -    file.addAbsoluteAtom(gotSymbol);<br>
> +  if (symName == _gotSymbol) {<br>
> +    file.addAbsoluteAtom(_gotSymbol);<br>
>    } else if (symName.startswith("__exidx")) {<br>
>      file.addAbsoluteAtom("__exidx_start");<br>
>      file.addAbsoluteAtom("__exidx_end");<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div></div>