<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_ASSIGNED "
   title="ASSIGNED --- - Add support for producing DWARF CFI unwind info for ARM"
   href="http://llvm.org/bugs/show_bug.cgi?id=18636">18636</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Add support for producing DWARF CFI unwind info for ARM
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>tools
          </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>ASSIGNED
          </td>
        </tr>

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

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

        <tr>
          <th>Component</th>
          <td>llc
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>mseaborn@chromium.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>mseaborn@chromium.org
          </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>llc currently supports producing ARM EABI/EHABI unwind info for ARM (when
passed the option "-arm-enable-ehabi"), but not DWARF CFI unwind info.  I'd
like to add support for the latter.

My main motivation is that PNaCl currently uses DWARF CFI when targeting ARM so
that it can use the same DWARF unwinding code on all targets (without having to
build an EABI-based unwinder specially for ARM).  I'd like to be able to
upstream PNaCl's DWARF+ARM changes.

I think DWARF CFI support will be useful more generally, though.  Other reasons
for adding it include:

 1) For parity with GCC, which emits DWARF CFI directives when given "-g".
 2) For use by GDB.  I think GDB can read ARM prologs, but this typically isn't
guaranteed to work for complex prologs.
 3) DWARF CFI can specify the frame state at every instruction, so can work for
backtracing after an asynchronous interruption, whereas I think EABI unwind
info is only accurate at call sites.
 4) As debugging info, DWARF CFI info can be stripped, but I'm not sure if EABI
unwind info can.
 5) Producing DWARF CFI is useful for tools like Breakpad.  There has been some
work on getting Breakpad to read EABI unwind info, but it's not committed:
<a href="https://code.google.com/p/google-breakpad/issues/detail?id=503">https://code.google.com/p/google-breakpad/issues/detail?id=503</a></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>