<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </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 --- - JIT notifiers called before relocations performed (and pages marked executable)"
   href="https://llvm.org/bugs/show_bug.cgi?id=31380">31380</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>JIT notifiers called before relocations performed (and pages marked executable)
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

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

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

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>MCJIT
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>andres@anarazel.de
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Hi,

Currently the jit notifier's NotifyObjectEmitted() is called by
MCJIT::generateCodeForModule(). That's too early, because relocations haven't
been performed (making the code debuggers/profiling tools see wrong) and
because the page hasn't yet been marked executable (bad, because some profiling
tools don't work in that case).

It seems to me that generateCodeForModule() should put all notifications into a
queue of pending notifications which then is emitted in
finalizeLoadedModules(), after Dyld.resolveRelocations() and
MemMgr->finalizeMemory().

Are there reasons for the current placement that I missed, or is this just an
omission? In the latter case I'll happily provide a patch fixing this.

Regards,

Andres</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>