<html>
    <head>
      <base href="http://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 --- - Missing support for APCS frame layout"
   href="http://llvm.org/bugs/show_bug.cgi?id=18505">18505</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Missing support for APCS frame layout
          </td>
        </tr>

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

        <tr>
          <th>Version</th>
          <td>trunk
          </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>Backend: ARM
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>eugeni.stepanov@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Clang does not support gcc's flags -mapcs and -mapcs-frame.

Linux perf tool uses frame pointer based unwinder to gather callgraph profile
(perf -g). On ARM this requires APCS frames (-fno-omit-frame-pointer
-mapcs-frame) to ensure that frame pointers are stored in predictable
locations. As a result, callgraph profiling on ARM does not work with
Clang-generated binaries.

Dwarf-based unwinding is not an option due to performance issues.

AddressSanitizer would benefit greatly from this, too. It needs to gather stack
traces of all memory allocations. Without FP we have use libc dwarf-based
unwinder, and it's a huge performance hit (10x easily, depending on the
application).</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>