<div dir="ltr">I'm not familiar with this part of code and wondering what this code is for.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 16, 2018 at 8:49 AM, Rafael Espindola via llvm-commits <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">Author: rafael<br>
Date: Tue Jan 16 08:49:05 2018<br>
New Revision: 322572<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=322572&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=322572&view=rev</a><br>
Log:<br>
Set dso_local in lld.<br>
<br>
We were already doing this in gold, but not in lld.<br>
<br>
Modified:<br>
    lld/trunk/ELF/LTO.cpp<br>
    lld/trunk/test/ELF/lto/<wbr>asmundef.ll<br>
    lld/trunk/test/ELF/lto/<wbr>internalize-basic.ll<br>
    lld/trunk/test/ELF/lto/<wbr>internalize-exportdyn.ll<br>
    lld/trunk/test/ELF/lto/<wbr>internalize-llvmused.ll<br>
    lld/trunk/test/ELF/lto/wrap-1.<wbr>ll<br>
<br>
Modified: lld/trunk/ELF/LTO.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.cpp?rev=322572&r1=322571&r2=322572&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/ELF/LTO.cpp?<wbr>rev=322572&r1=322571&r2=<wbr>322572&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/ELF/LTO.cpp (original)<br>
+++ lld/trunk/ELF/LTO.cpp Tue Jan 16 08:49:05 2018<br>
@@ -134,6 +134,8 @@ void BitcodeCompiler::add(<wbr>BitcodeFile &F<br>
     if (auto *Cmd = dyn_cast<SymbolAssignment>(<wbr>Base))<br>
       ScriptSymbols.insert(Cmd-><wbr>Name);<br>
<br>
+  bool IsExecutable = !Config->Shared && !Config->Relocatable;<br>
+<br>
   // Provide a resolution to the LTO API for each symbol.<br>
   for (const lto::InputFile::Symbol &ObjSym : Obj.symbols()) {<br>
     Symbol *Sym = Syms[SymNum];<br>
@@ -156,6 +158,10 @@ void BitcodeCompiler::add(<wbr>BitcodeFile &F<br>
     R.VisibleToRegularObj = Config->Relocatable || Sym->IsUsedInRegularObj ||<br>
                             (R.Prevailing && Sym->includeInDynsym()) ||<br>
                             UsedStartStop.count(ObjSym.<wbr>getSectionName());<br>
+    R.FinalDefinitionInLinkageUnit =<br>
+        Sym->isDefined() &&<br>
+        (IsExecutable || Sym->getVisibility() != STV_DEFAULT);<br>
+<br>
     if (R.Prevailing)<br>
       undefine(Sym);<br>
<br>
<br>
Modified: lld/trunk/test/ELF/lto/<wbr>asmundef.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/asmundef.ll?rev=322572&r1=322571&r2=322572&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>lto/asmundef.ll?rev=322572&r1=<wbr>322571&r2=322572&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/test/ELF/lto/<wbr>asmundef.ll (original)<br>
+++ lld/trunk/test/ELF/lto/<wbr>asmundef.ll Tue Jan 16 08:49:05 2018<br>
@@ -20,5 +20,5 @@ define void @_start() {<br>
   ret void<br>
 }<br>
<br>
-; CHECK: define void @foo<br>
+; CHECK: define dso_local void @foo<br>
<br>
<br>
Modified: lld/trunk/test/ELF/lto/<wbr>internalize-basic.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/internalize-basic.ll?rev=322572&r1=322571&r2=322572&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>lto/internalize-basic.ll?rev=<wbr>322572&r1=322571&r2=322572&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/test/ELF/lto/<wbr>internalize-basic.ll (original)<br>
+++ lld/trunk/test/ELF/lto/<wbr>internalize-basic.ll Tue Jan 16 08:49:05 2018<br>
@@ -15,7 +15,7 @@ define hidden void @foo() {<br>
 }<br>
<br>
 ; Check that _start is not internalized.<br>
-; CHECK: define void @_start()<br>
+; CHECK: define dso_local void @_start()<br>
<br>
 ; Check that foo function is correctly internalized.<br>
 ; CHECK: define internal void @foo()<br>
<br>
Modified: lld/trunk/test/ELF/lto/<wbr>internalize-exportdyn.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/internalize-exportdyn.ll?rev=322572&r1=322571&r2=322572&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>lto/internalize-exportdyn.ll?<wbr>rev=322572&r1=322571&r2=<wbr>322572&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/test/ELF/lto/<wbr>internalize-exportdyn.ll (original)<br>
+++ lld/trunk/test/ELF/lto/<wbr>internalize-exportdyn.ll Tue Jan 16 08:49:05 2018<br>
@@ -38,10 +38,10 @@ define linkonce_odr void @baz() {<br>
 @use_baz = global void ()* @baz<br>
<br>
 ; Check what gets internalized.<br>
-; CHECK: define void @_start()<br>
-; CHECK: define void @foo()<br>
+; CHECK: define dso_local void @_start()<br>
+; CHECK: define dso_local void @foo()<br>
 ; CHECK: define internal void @bar()<br>
 ; CHECK: define internal void @zed()<br>
 ; CHECK: define internal void @zed2()<br>
-; CHECK: define weak_odr void @bah()<br>
-; CHECK: define weak_odr void @baz()<br>
+; CHECK: define weak_odr dso_local void @bah()<br>
+; CHECK: define weak_odr dso_local void @baz()<br>
<br>
Modified: lld/trunk/test/ELF/lto/<wbr>internalize-llvmused.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/internalize-llvmused.ll?rev=322572&r1=322571&r2=322572&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>lto/internalize-llvmused.ll?<wbr>rev=322572&r1=322571&r2=<wbr>322572&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/test/ELF/lto/<wbr>internalize-llvmused.ll (original)<br>
+++ lld/trunk/test/ELF/lto/<wbr>internalize-llvmused.ll Tue Jan 16 08:49:05 2018<br>
@@ -17,4 +17,4 @@ define hidden void @f() {<br>
 @llvm.used = appending global [1 x i8*] [ i8* bitcast (void ()* @f to i8*)]<br>
<br>
 ; Check that f is not internalized.<br>
-; CHECK: define hidden void @f()<br>
+; CHECK: define dso_local hidden void @f()<br>
<br>
Modified: lld/trunk/test/ELF/lto/wrap-1.<wbr>ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/wrap-1.ll?rev=322572&r1=322571&r2=322572&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>lto/wrap-1.ll?rev=322572&r1=<wbr>322571&r2=322572&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/test/ELF/lto/wrap-1.<wbr>ll (original)<br>
+++ lld/trunk/test/ELF/lto/wrap-1.<wbr>ll Tue Jan 16 08:49:05 2018<br>
@@ -20,8 +20,8 @@<br>
 ; Make sure that the 'r' (linker redefined) bit is set for bar and __wrap_bar<br>
 ; in the resolutions file.<br>
 ; RESOLS: ,bar,xr<br>
-; RESOLS: ,__wrap_bar,px<br>
-; RESOLS: ,__real_bar,pxr<br>
+; RESOLS: ,__wrap_bar,plx<br>
+; RESOLS: ,__real_bar,plxr<br>
<br>
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:<wbr>32:64-S128"<br>
 target triple = "x86_64-unknown-linux-gnu"<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>
</blockquote></div><br></div>