<div dir="ltr">This is causing regression in our build, I'm now getting a lot of errors which look like:<div><br></div><div><div>ld.lld: error: ./build-magenta-pc-x86-64/target/target.mod.o:(.debug_info+0x6): relocation R_X86_64_32 out of range</div><div>ld.lld: error: ./build-magenta-pc-x86-64/app/app.mod.o:(.debug_info+0x6): relocation R_X86_64_32 out of range</div><div>ld.lld: error: ./build-magenta-pc-x86-64/platform/platform.mod.o:(.debug_info+0x6): relocation R_X86_64_32 out of range</div><div>...</div><div>ld.lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)</div><div><br></div><div>I'll try to extract a minimal reproducer.</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 7, 2017 at 12:33 PM Rafael Espindola via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rafael<br class="gmail_msg">
Date: Tue Feb  7 14:22:04 2017<br class="gmail_msg">
New Revision: 294346<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=294346&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=294346&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
Simplify symbol computation for non alloc sections.<br class="gmail_msg">
<br class="gmail_msg">
We now just keep the address the section would have if it was<br class="gmail_msg">
allocatable. Only the writer ignores it at the very end.<br class="gmail_msg">
<br class="gmail_msg">
Modified:<br class="gmail_msg">
    lld/trunk/ELF/LinkerScript.cpp<br class="gmail_msg">
    lld/trunk/ELF/OutputSections.cpp<br class="gmail_msg">
<br class="gmail_msg">
Modified: lld/trunk/ELF/LinkerScript.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=294346&r1=294345&r2=294346&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=294346&r1=294345&r2=294346&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- lld/trunk/ELF/LinkerScript.cpp (original)<br class="gmail_msg">
+++ lld/trunk/ELF/LinkerScript.cpp Tue Feb  7 14:22:04 2017<br class="gmail_msg">
@@ -101,12 +101,8 @@ static void assignSymbol(SymbolAssignmen<br class="gmail_msg">
<br class="gmail_msg">
   if (auto *Body = dyn_cast<DefinedSynthetic>(Cmd->Sym)) {<br class="gmail_msg">
     Body->Section = Cmd->Expression.Section();<br class="gmail_msg">
-    if (Body->Section) {<br class="gmail_msg">
-      uint64_t VA = 0;<br class="gmail_msg">
-      if (Body->Section->Flags & SHF_ALLOC)<br class="gmail_msg">
-        VA = Body->Section->Addr;<br class="gmail_msg">
-      Body->Value = Cmd->Expression(Dot) - VA;<br class="gmail_msg">
-    }<br class="gmail_msg">
+    if (Body->Section)<br class="gmail_msg">
+      Body->Value = Cmd->Expression(Dot) - Body->Section->Addr;<br class="gmail_msg">
     return;<br class="gmail_msg">
   }<br class="gmail_msg">
<br class="gmail_msg">
@@ -802,12 +798,9 @@ void LinkerScript<ELFT>::assignAddresses<br class="gmail_msg">
   }<br class="gmail_msg">
<br class="gmail_msg">
   uintX_t MinVA = std::numeric_limits<uintX_t>::max();<br class="gmail_msg">
-  for (OutputSectionBase *Sec : *OutputSections) {<br class="gmail_msg">
+  for (OutputSectionBase *Sec : *OutputSections)<br class="gmail_msg">
     if (Sec->Flags & SHF_ALLOC)<br class="gmail_msg">
       MinVA = std::min<uint64_t>(MinVA, Sec->Addr);<br class="gmail_msg">
-    else<br class="gmail_msg">
-      Sec->Addr = 0;<br class="gmail_msg">
-  }<br class="gmail_msg">
<br class="gmail_msg">
   allocateHeaders<ELFT>(Phdrs, *OutputSections, MinVA);<br class="gmail_msg">
 }<br class="gmail_msg">
<br class="gmail_msg">
Modified: lld/trunk/ELF/OutputSections.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=294346&r1=294345&r2=294346&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=294346&r1=294345&r2=294346&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- lld/trunk/ELF/OutputSections.cpp (original)<br class="gmail_msg">
+++ lld/trunk/ELF/OutputSections.cpp Tue Feb  7 14:22:04 2017<br class="gmail_msg">
@@ -57,7 +57,7 @@ void OutputSectionBase::writeHeaderTo(ty<br class="gmail_msg">
   Shdr->sh_flags = Flags;<br class="gmail_msg">
   Shdr->sh_info = Info;<br class="gmail_msg">
   Shdr->sh_link = Link;<br class="gmail_msg">
-  Shdr->sh_addr = Addr;<br class="gmail_msg">
+  Shdr->sh_addr = (Flags & SHF_ALLOC) ? Addr : 0;<br class="gmail_msg">
   Shdr->sh_size = Size;<br class="gmail_msg">
   Shdr->sh_name = ShName;<br class="gmail_msg">
 }<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div></div></div>