<div dir="ltr">COFF lld uses exit() unlike ELF lld due to lack of user needs, but are you trying to use it as a library? If so, I believe you need to fix other places where exit() is called on success or for a trivial error (such as invalid command line argument) as well.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 31, 2017 at 10:45 AM, Andrew Kelley via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@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"><div dir="ltr"><div>I believe that LLD is not supposed to call exit on success when you call lld::coff::link.</div><div><br></div><div>From downstream fork of LLD: <a href="https://github.com/zig-lang/zig/commit/41da9fdb69065082f57c604b12eb02ca166cb18d" target="_blank">https://github.com/zig-<wbr>lang/zig/commit/<wbr>41da9fdb69065082f57c604b12eb02<wbr>ca166cb18d</a></div><div><br></div><div><br></div><div>diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp</div><div>index 854c3e69098..8b17f039870 100644</div><div>--- a/lld/COFF/Driver.cpp</div><div>+++ b/lld/COFF/Driver.cpp</div><div>@@ -1030,7 +1030,7 @@ void LinkerDriver::link(ArrayRef<<wbr>const char *> ArgsArr) {</div><div>   if (!Args.hasArgNoClaim(OPT_<wbr>INPUT)) {</div><div>     fixupExports();</div><div>     createImportLibrary(/*AsLib=*<wbr>/true);</div><div>-    exit(0);</div><div>+    return;</div><div>   }</div><div> </div><div>   // Handle /delayload</div><div>@@ -1122,7 +1122,7 @@ void LinkerDriver::link(ArrayRef<<wbr>const char *> ArgsArr) {</div><div>   // This is useful because MSVC link.exe can generate complete PDBs.</div><div>   if (Args.hasArg(OPT_msvclto)) {</div><div>     invokeMSVC(Args);</div><div>-    exit(0);</div><div>+    return;</div><div>   }</div><div> </div><div>   // Do LTO by compiling bitcode input files to a set of native COFF files then</div><div>@@ -1173,8 +1173,7 @@ void LinkerDriver::link(ArrayRef<<wbr>const char *> ArgsArr) {</div><div>   // Write the result.</div><div>   writeResult(&Symtab);</div><div> </div><div>-  // Call exit to avoid calling destructors.</div><div>-  exit(0);</div><div>+  return;</div><div> }</div><div> </div><div> } // namespace coff</div><div><br></div></div>
<br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>