<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - LLD as a library doesn't reset its global states across calls"
   href="https://bugs.llvm.org/show_bug.cgi?id=48548">48548</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>LLD as a library doesn't reset its global states across calls
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lld
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>All Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>dpldobrev@protonmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, smithp352@googlemail.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>lld is explicitly documented as invokable as a library at <a href="https://lld.llvm.org/">https://lld.llvm.org/</a>
:

"You can embed LLD in your program to eliminate dependencies on external
linkers. All you have to do is to construct object files and command line
arguments just like you would do to invoke an external linker and then call the
linker’s main function, lld::elf::link, from your code."

However, LLD uses a global state which isn't reset across invocations. The
problem is detailed in more detail at
<a href="https://github.com/ziglang/zig/issues/3825">https://github.com/ziglang/zig/issues/3825</a> . I guess the reporter meant items
such as
<a href="https://github.com/llvm/llvm-project/blob/main/lld/MachO/Driver.cpp#L695">https://github.com/llvm/llvm-project/blob/main/lld/MachO/Driver.cpp#L695</a> or
<a href="https://github.com/llvm/llvm-project/blob/main/lld/MachO/Driver.cpp#L777">https://github.com/llvm/llvm-project/blob/main/lld/MachO/Driver.cpp#L777</a> . The
latter example is especially showing because I have to call the contents of
InitLLVM() myself as I compile before linking so LLD as a library should be
smart not to call it a second time.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>