<div dir="ltr">Yes.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 19, 2017 at 1:30 PM, Rafael Avila de Espindola <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"><br>
I would like to port this to 4.0. OK?<br>
<br>
Cheers,<br>
Rafael<br>
<div class="HOEnZb"><div class="h5"><br>
Rafael Espindola via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> writes:<br>
<br>
> Author: rafael<br>
> Date: Thu Jan 19 13:43:34 2017<br>
> New Revision: 292512<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=292512&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=292512&view=rev</a><br>
> Log:<br>
> Create _end symbol even if a .so defines it.<br>
><br>
> The freebsd sbrk implementation uses _end to find the initial value of<br>
> brk, so it has to be defined in the main binary.<br>
><br>
> This should fix the emacs build.<br>
><br>
> Added:<br>
>     lld/trunk/test/ELF/Inputs/<wbr>resolution-end.s<br>
>     lld/trunk/test/ELF/resolution-<wbr>end.s<br>
> Modified:<br>
>     lld/trunk/ELF/SymbolTable.cpp<br>
><br>
> Modified: lld/trunk/ELF/SymbolTable.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=292512&r1=292511&r2=292512&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/ELF/<wbr>SymbolTable.cpp?rev=292512&r1=<wbr>292511&r2=292512&view=diff</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- lld/trunk/ELF/SymbolTable.cpp (original)<br>
> +++ lld/trunk/ELF/SymbolTable.cpp Thu Jan 19 13:43:34 2017<br>
> @@ -140,7 +140,7 @@ template <class ELFT><br>
>  DefinedRegular<ELFT> *SymbolTable<ELFT>::<wbr>addIgnored(StringRef Name,<br>
>                                                      uint8_t Visibility) {<br>
>    SymbolBody *S = find(Name);<br>
> -  if (!S || !S->isUndefined())<br>
> +  if (!S || S->isInCurrentDSO())<br>
>      return nullptr;<br>
>    return addAbsolute(Name, Visibility);<br>
>  }<br>
><br>
> Added: lld/trunk/test/ELF/Inputs/<wbr>resolution-end.s<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/resolution-end.s?rev=292512&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>Inputs/resolution-end.s?rev=<wbr>292512&view=auto</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- lld/trunk/test/ELF/Inputs/<wbr>resolution-end.s (added)<br>
> +++ lld/trunk/test/ELF/Inputs/<wbr>resolution-end.s Thu Jan 19 13:43:34 2017<br>
> @@ -0,0 +1,2 @@<br>
> +.data<br>
> +        .quad _end<br>
><br>
> Added: lld/trunk/test/ELF/resolution-<wbr>end.s<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/resolution-end.s?rev=292512&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>resolution-end.s?rev=292512&<wbr>view=auto</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- lld/trunk/test/ELF/resolution-<wbr>end.s (added)<br>
> +++ lld/trunk/test/ELF/resolution-<wbr>end.s Thu Jan 19 13:43:34 2017<br>
> @@ -0,0 +1,39 @@<br>
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o<br>
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/resolution-end.s -o %t2.o<br>
> +# RUN: ld.lld -shared -o %t2.so %t2.o<br>
> +# RUN: ld.lld %t1.o %t2.so -o %t<br>
> +# RUN: llvm-readobj -t -s -section-data  %t | FileCheck %s<br>
> +# REQUIRES: x86<br>
> +<br>
> +# Test that we resolve _end to the this executable.<br>
> +<br>
> +# CHECK:      Name: .text<br>
> +# CHECK-NEXT: Type: SHT_PROGBITS<br>
> +# CHECK-NEXT: Flags [<br>
> +# CHECK-NEXT:   SHF_ALLOC<br>
> +# CHECK-NEXT:   SHF_EXECINSTR<br>
> +# CHECK-NEXT: ]<br>
> +# CHECK-NEXT: Address:<br>
> +# CHECK-NEXT: Offset:<br>
> +# CHECK-NEXT: Size:<br>
> +# CHECK-NEXT: Link:<br>
> +# CHECK-NEXT: Info:<br>
> +# CHECK-NEXT: AddressAlignment:<br>
> +# CHECK-NEXT: EntrySize:<br>
> +# CHECK-NEXT: SectionData (<br>
> +# CHECK-NEXT:   0000: 80202000 00000000<br>
> +# CHECK-NEXT: )<br>
> +<br>
> +# CHECK:      Symbol {<br>
> +# CHECK:        Name: _end<br>
> +# CHECK-NEXT:   Value: 0x202080<br>
> +# CHECK-NEXT:   Size:<br>
> +# CHECK-NEXT:   Binding: Global<br>
> +# CHECK-NEXT:   Type:<br>
> +# CHECK-NEXT:   Other:<br>
> +# CHECK-NEXT:   Section:<br>
> +# CHECK-NEXT: }<br>
> +<br>
> +.global _start<br>
> +_start:<br>
> +.quad _end<br>
><br>
><br>
> ______________________________<wbr>_________________<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/<wbr>mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>