<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 - Pointer to a hidden function alias, when obtained across a DSO boundary at -O > 0, calls the visible version of the symbol"
   href="https://bugs.llvm.org/show_bug.cgi?id=40166">40166</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Pointer to a hidden function alias, when obtained across a DSO boundary at -O > 0, calls the visible version of the symbol
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>6.0
          </td>
        </tr>

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

        <tr>
          <th>OS</th>
          <td>Linux
          </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>-New Bugs
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>pskocik@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org, neeilans@live.com, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=21275" name="attach_21275" title="shell script to build & run a demonstration of the problem; run in an empty directory">attachment 21275</a> <a href="attachment.cgi?id=21275&action=edit" title="shell script to build & run a demonstration of the problem; run in an empty directory">[details]</a></span>
shell script to build & run a demonstration of the problem; run in an empty
directory

Also, the visible version then compares equal to the hidden one (both inside
and outside the DSO) even when the visible version is interposed.

Calling the hidden versions inside the DSO does ignore the interposition as it
should, but if the pointer to the hidden alias is passed outside the DSO and
then called, the interposed function is called.

The attached script demonstrates the problem (tested on x86_64 Linux).

The problem disappears if optimization's turned off (-O0). (gcc is doing the
right thing at all optimization levels.)</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>