<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 9, 2016 at 3:14 PM, Petr Hosek <span dir="ltr"><<a href="mailto:phosek@google.com" target="_blank">phosek@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">There is no DefinedRelative in ELF (or IMAGE_SYM_ABSOLUTE used to represent it).</div></blockquote><div><br></div><div> Sorry, I meant DefinedSynthetic with Section == nullptr. See for example the symbols we create in Writer<ELFT>::addStartEndSymbols().</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">The image-relative symbols are represented as SHN_ABS in ELF.</div></blockquote><div><br></div><div>I actually don't think there is a representation for image-relative symbols in ELF, so we end up making something up. See the test case lld/test/ELF/relocatable-symbols.s, we end up using SHN_UNDEF for *_{start,end}.</div><div><br></div><div>Peter</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><div class="gmail-h5"><br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 9, 2016 at 2:56 PM Peter Collingbourne <<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class="gmail-m_2082888145348578893gmail_msg">So it looks like this is a bug in either your linker script or the linker script parser: we should end up with a DefinedRelative for _BASE. (I'm not an expert in linker scripts, so I'm not sure exactly what the actual semantics of your linker script are.)<div class="gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893gmail_msg"></div><div class="gmail-m_2082888145348578893gmail_msg">Peter</div></div><div class="gmail_extra gmail-m_2082888145348578893gmail_msg"></div><div class="gmail_extra gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893gmail_msg"><div class="gmail_quote gmail-m_2082888145348578893gmail_msg">On Fri, Dec 9, 2016 at 2:50 PM, Petr Hosek <span dir="ltr" class="gmail-m_2082888145348578893gmail_msg"><<a href="mailto:phosek@google.com" class="gmail-m_2082888145348578893gmail_msg" target="_blank">phosek@google.com</a>></span> wrote:<br class="gmail-m_2082888145348578893gmail_msg"><blockquote class="gmail_quote gmail-m_2082888145348578893gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class="gmail-m_2082888145348578893gmail_msg">Yes, that's correct.</div><div class="gmail-m_2082888145348578893m_5095346354329162410HOEnZb gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410h5 gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893gmail_msg"><div class="gmail_quote gmail-m_2082888145348578893gmail_msg"><div dir="ltr" class="gmail-m_2082888145348578893gmail_msg">On Fri, Dec 9, 2016 at 2:48 PM Peter Collingbourne <<a href="mailto:peter@pcc.me.uk" class="gmail-m_2082888145348578893gmail_msg" target="_blank">peter@pcc.me.uk</a>> wrote:<br class="gmail-m_2082888145348578893gmail_msg"></div><blockquote class="gmail_quote gmail-m_2082888145348578893gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">This appears to be the relevant part of the fuschia linker script:</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div><a href="https://github.com/fuchsia-mirror/magenta/blob/fad6801bd5c27e9887e912a3c6883dba463ec3d4/third_party/ulib/musl/ldso/base.ld#L6" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg" target="_blank">https://github.com/fuchsia-<wbr>mirror/magenta/blob/<wbr>fad6801bd5c27e9887e912a3c6883d<wbr>ba463ec3d4/third_party/ulib/<wbr>musl/ldso/base.ld#L6</a><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">From the comment it seems like you are intending to create an image-relative symbol, no?</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">Peter</div></div><div class="gmail_extra gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div><div class="gmail_extra gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail_quote gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">On Fri, Dec 9, 2016 at 2:43 PM, Petr Hosek <span dir="ltr" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><<a href="mailto:phosek@google.com" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg" target="_blank">phosek@google.com</a>></span> wrote:<br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><blockquote class="gmail_quote gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail_quote gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><span class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div dir="ltr" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">On Thu, Dec 8, 2016 at 6:32 AM Rafael Avila de Espindola <<a href="mailto:rafael.espindola@gmail.com" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg" target="_blank">rafael.espindola@gmail.com</a>> wrote:</div><blockquote class="gmail_quote gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
It is entirely possible we just have another case where lld gets<br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970m_3230738116742474084m_8525751479540810442gmail_msg gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">
confused about a symbol being absolute or not. Can you provide the full<br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970m_3230738116742474084m_8525751479540810442gmail_msg gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">
original code in musl that fails with lld?<br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970m_3230738116742474084m_8525751479540810442gmail_msg gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></blockquote><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div></span><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">I missed your response on the list. The original code that fails with lld is pretty much equivalent to the new test case I've added:</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><span class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"># RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t</div></span><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"># RUN: echo "PROVIDE_HIDDEN(_BASE = 0);" > %t.script</div><span class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"># RUN: ld.lld -shared --gc-sections --script %t.script -o %t1 %t</div></span><span class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"># RUN: llvm-readobj --elf-output-style=GNU --file-headers --symbols %t1 | FileCheck %s</div></span><span class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"># CHECK: 0000000000000000     0 NOTYPE  LOCAL  HIDDEN   ABS base</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div></span><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">.text</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">.globl _start</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">_start:</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">        lea _BASE(%rip),%rax</div></div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">Currently, lld fails with the following error:</div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">bin/ld.lld: error: gc-start.o:(.text.internal+<wbr>0x3): relocation R_X86_64_PC32 cannot refer to absolute symbol '_BASE' defined in (internal)<br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div></div></div>
</blockquote></div><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br clear="all" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"></div></div><div class="gmail_extra gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">-- <br class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970m_3230738116742474084gmail_signature gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg"><div dir="ltr" class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">-- <div class="gmail-m_2082888145348578893m_5095346354329162410m_9162764729765623970gmail_msg gmail-m_2082888145348578893gmail_msg">Peter</div></div></div>
</div></blockquote></div>
</div></div></blockquote></div><br class="gmail-m_2082888145348578893gmail_msg"><br clear="all" class="gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893gmail_msg"><br class="gmail-m_2082888145348578893gmail_msg"></div></div><div class="gmail_extra gmail-m_2082888145348578893gmail_msg">-- <br class="gmail-m_2082888145348578893gmail_msg"><div class="gmail-m_2082888145348578893m_5095346354329162410gmail_signature gmail-m_2082888145348578893gmail_msg"><div dir="ltr" class="gmail-m_2082888145348578893gmail_msg">-- <div class="gmail-m_2082888145348578893gmail_msg">Peter</div></div></div>
</div></blockquote></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</div></div>