<div dir="ltr"><div>George,</div><div><br></div><div>The new test you added is failing. Can you take a look?</div><div><br></div><div>$ bin/llvm-lit -v /ssd/llvm/tools/lld/test/elf2/strip-all.s </div><div>ninja: no work to do.</div><div>-- Testing: 1 tests, 1 threads --</div><div>FAIL: lld :: elf2/strip-all.s (1 of 1)</div><div>******************** TEST 'lld :: elf2/strip-all.s' FAILED ********************</div><div>Script:</div><div>--</div><div>llvm-mc -filetype=obj -triple=x86_64-unknown-linux /ssd/llvm/tools/lld/test/elf2/strip-all.s -o /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp</div><div>ld.lld2 /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp -o /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp1</div><div>llvm-objdump -section-headers /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp1 | FileCheck /ssd/llvm/tools/lld/test/elf2/strip-all.s -check-prefix BEFORE</div><div>ld.lld2 /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp.o -e main --strip-all -o /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp1</div><div>llvm-objdump -section-headers /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp1 | FileCheck /ssd/llvm/tools/lld/test/elf2/strip-all.s -check-prefix AFTER</div><div>ld.lld2 /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp.o -e main -s -o /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp1</div><div>llvm-objdump -section-headers /ssd/build/tools/lld/test/elf2/Output/strip-all.s.tmp1 | FileCheck /ssd/llvm/tools/lld/test/elf2/strip-all.s -check-prefix AFTER</div><div>--</div><div>Exit Code: 1</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>undefined symbol: main</div><div><br></div><div>--</div><div><br></div><div>********************</div><div>Testing Time: 0.03s</div><div>********************</div><div>Failing Tests (1):</div><div>    lld :: elf2/strip-all.s</div><div><br></div><div>  Unexpected Failures: 1</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 23, 2015 at 1:24 PM, George Rimar 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: grimar<br>
Date: Fri Oct 23 15:24:44 2015<br>
New Revision: 251144<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=251144&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=251144&view=rev</a><br>
Log:<br>
[ELF2] --strip-all/-s command line implemented<br>
<br>
-s, --strip-all - Strip all symbols<br>
Implementation removes .strtab and .symtab sections from output.<br>
<br>
Differential Revision: <a href="http://reviews.llvm.org/D13934" rel="noreferrer" target="_blank">http://reviews.llvm.org/D13934</a><br>
<br>
Added:<br>
    lld/trunk/test/elf2/strip-all.s<br>
Modified:<br>
    lld/trunk/ELF/Config.h<br>
    lld/trunk/ELF/Driver.cpp<br>
    lld/trunk/ELF/Options.td<br>
    lld/trunk/ELF/Writer.cpp<br>
<br>
Modified: lld/trunk/ELF/Config.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=251144&r1=251143&r2=251144&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=251144&r1=251143&r2=251144&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Config.h (original)<br>
+++ lld/trunk/ELF/Config.h Fri Oct 23 15:24:44 2015<br>
@@ -58,6 +58,7 @@ struct Configuration {<br>
   bool NoUndefined;<br>
   bool Shared;<br>
   bool Static = false;<br>
+  bool StripAll;<br>
   bool SysvHash = true;<br>
   bool Verbose;<br>
   bool ZNodelete = false;<br>
<br>
Modified: lld/trunk/ELF/Driver.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=251144&r1=251143&r2=251144&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=251144&r1=251143&r2=251144&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Driver.cpp (original)<br>
+++ lld/trunk/ELF/Driver.cpp Fri Oct 23 15:24:44 2015<br>
@@ -146,6 +146,7 @@ void LinkerDriver::createFiles(opt::Inpu<br>
   Config->NoInhibitExec = Args.hasArg(OPT_noinhibit_exec);<br>
   Config->NoUndefined = Args.hasArg(OPT_no_undefined);<br>
   Config->Shared = Args.hasArg(OPT_shared);<br>
+  Config->StripAll = Args.hasArg(OPT_strip_all);<br>
   Config->Verbose = Args.hasArg(OPT_verbose);<br>
<br>
   Config->DynamicLinker = getString(Args, OPT_dynamic_linker);<br>
<br>
Modified: lld/trunk/ELF/Options.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=251144&r1=251143&r2=251144&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=251144&r1=251143&r2=251144&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Options.td (original)<br>
+++ lld/trunk/ELF/Options.td Fri Oct 23 15:24:44 2015<br>
@@ -90,6 +90,9 @@ def shared : Flag<["-"], "shared">,<br>
 def soname : Joined<["-"], "soname=">,<br>
   HelpText<"Set DT_SONAME">;<br>
<br>
+def strip_all : Flag<["--"], "strip-all">,<br>
+  HelpText<"Strip all symbols">;<br>
+<br>
 def sysroot : Joined<["--"], "sysroot=">,<br>
   HelpText<"Set the system root">;<br>
<br>
@@ -124,6 +127,7 @@ def alias_shared_Bshareable : Flag<["-"]<br>
 def alias_soname_h : Separate<["-"], "h">, Alias<soname>;<br>
 def alias_soname_soname : Separate<["-"], "soname">, Alias<soname>;<br>
 def alias_script_T : Separate<["-"], "T">, Alias<script>;<br>
+def alias_strip_all: Flag<["-"], "s">, Alias<strip_all>;<br>
 def alias_undefined_u : Separate<["-"], "u">, Alias<undefined>;<br>
<br>
 // Options listed below are silently ignored now.<br>
@@ -135,7 +139,6 @@ def no_add_needed : Flag<["--"], "no-add<br>
 def no_fatal_warnings : Flag<["--"], "no-fatal-warnings">;<br>
 def no_warn_mismatch : Flag<["--"], "no-warn-mismatch">;<br>
 def start_group : Flag<["--"], "start-group">;<br>
-def strip_all : Flag<["--"], "strip-all">;<br>
 def version_script : Separate<["--"], "version-script">;<br>
 def warn_common : Flag<["--"], "warn-common">;<br>
 def warn_shared_textrel : Flag<["--"], "warn-shared-textrel">;<br>
<br>
Modified: lld/trunk/ELF/Writer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=251144&r1=251143&r2=251144&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=251144&r1=251143&r2=251144&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Writer.cpp (original)<br>
+++ lld/trunk/ELF/Writer.cpp Fri Oct 23 15:24:44 2015<br>
@@ -97,7 +97,8 @@ template <class ELFT> void lld::elf2::wr<br>
   StringTableSection<ELFT> ShStrTab(".shstrtab", false);<br>
   Out<ELFT>::ShStrTab = &ShStrTab;<br>
   StringTableSection<ELFT> StrTab(".strtab", false);<br>
-  Out<ELFT>::StrTab = &StrTab;<br>
+  if (!Config->StripAll)<br>
+    Out<ELFT>::StrTab = &StrTab;<br>
   StringTableSection<ELFT> DynStrTab(".dynstr", true);<br>
   Out<ELFT>::DynStrTab = &DynStrTab;<br>
   OutputSection<ELFT> Bss(".bss", SHT_NOBITS, SHF_ALLOC | SHF_WRITE);<br>
@@ -109,8 +110,11 @@ template <class ELFT> void lld::elf2::wr<br>
     Out<ELFT>::GotPlt = &GotPlt;<br>
   PltSection<ELFT> Plt;<br>
   Out<ELFT>::Plt = &Plt;<br>
-  SymbolTableSection<ELFT> SymTab(*Symtab, *Out<ELFT>::StrTab);<br>
-  Out<ELFT>::SymTab = &SymTab;<br>
+  std::unique_ptr<SymbolTableSection<ELFT>> SymTab;<br>
+  if (!Config->StripAll) {<br>
+    SymTab.reset(new SymbolTableSection<ELFT>(*Symtab, *Out<ELFT>::StrTab));<br>
+    Out<ELFT>::SymTab = SymTab.get();<br>
+  }<br>
   SymbolTableSection<ELFT> DynSymTab(*Symtab, *Out<ELFT>::DynStrTab);<br>
   Out<ELFT>::DynSymTab = &DynSymTab;<br>
   HashTableSection<ELFT> HashTab;<br>
@@ -286,7 +290,8 @@ template <class ELFT> void Writer<ELFT>:<br>
       StringRef SymName = *SymNameOrErr;<br>
       if (!shouldKeepInSymtab<ELFT>(*F, SymName, Sym))<br>
         continue;<br>
-      Out<ELFT>::SymTab->addLocalSymbol(SymName);<br>
+      if (Out<ELFT>::SymTab)<br>
+        Out<ELFT>::SymTab->addLocalSymbol(SymName);<br>
     }<br>
   }<br>
 }<br>
@@ -512,7 +517,8 @@ template <class ELFT> void Writer<ELFT>:<br>
       CommonSymbols.push_back(C);<br>
     if (!includeInSymtab<ELFT>(*Body))<br>
       continue;<br>
-    Out<ELFT>::SymTab->addSymbol(Body);<br>
+    if (Out<ELFT>::SymTab)<br>
+      Out<ELFT>::SymTab->addSymbol(Body);<br>
<br>
     if (isOutputDynamic() && includeInDynamicSymtab(*Body))<br>
       Out<ELFT>::DynSymTab->addSymbol(Body);<br>
@@ -521,9 +527,11 @@ template <class ELFT> void Writer<ELFT>:<br>
<br>
   // This order is not the same as the final output order<br>
   // because we sort the sections using their attributes below.<br>
-  OutputSections.push_back(Out<ELFT>::SymTab);<br>
+  if (Out<ELFT>::SymTab)<br>
+    OutputSections.push_back(Out<ELFT>::SymTab);<br>
   OutputSections.push_back(Out<ELFT>::ShStrTab);<br>
-  OutputSections.push_back(Out<ELFT>::StrTab);<br>
+  if (Out<ELFT>::StrTab)<br>
+    OutputSections.push_back(Out<ELFT>::StrTab);<br>
   if (isOutputDynamic()) {<br>
     OutputSections.push_back(Out<ELFT>::DynSymTab);<br>
     if (Out<ELFT>::GnuHashTab)<br>
<br>
Added: lld/trunk/test/elf2/strip-all.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/strip-all.s?rev=251144&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/strip-all.s?rev=251144&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/test/elf2/strip-all.s (added)<br>
+++ lld/trunk/test/elf2/strip-all.s Fri Oct 23 15:24:44 2015<br>
@@ -0,0 +1,25 @@<br>
+# REQUIRES: x86<br>
+<br>
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t<br>
+# RUN: ld.lld2 %t -o %t1<br>
+#RUN: llvm-objdump -section-headers %t1 | FileCheck %s -check-prefix BEFORE<br>
+#BEFORE:       4 .symtab 00000030<br>
+#BEFORE-NEXT:  5 .shstrtab 0000002c<br>
+#BEFORE-NEXT:  6 .strtab 00000008<br>
+<br>
+#RUN: ld.lld2 %t.o -e main --strip-all -o %t1<br>
+#RUN: llvm-objdump -section-headers %t1 | FileCheck %s -check-prefix AFTER<br>
+#AFTER-NOT: .symtab<br>
+#AFTER: 7 .shstrtab 0000003f<br>
+#AFTER-NOT: .strtab<br>
+<br>
+# Test alias -s<br>
+#RUN: ld.lld2 %t.o -e main -s -o %t1<br>
+#RUN: llvm-objdump -section-headers %t1 | FileCheck %s -check-prefix AFTER<br>
+<br>
+# exits with return code 42 on linux<br>
+.globl _start;<br>
+_start:<br>
+  mov $60, %rax<br>
+  mov $42, %rdi<br>
+  syscall<br>
<br>
<br>
_______________________________________________<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/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>