Home | History | Annotate | Download | only in docs
      1 .. _index:
      2 
      3 =======================
      4 libunwind LLVM Unwinder
      5 =======================
      6 
      7 Overview
      8 ========
      9 
     10 libunwind is an implementation of the interface defined by the HP libunwind
     11 project. It was contributed by Apple as a way to enable clang++ to port to
     12 platforms that do not have a system unwinder. It is intended to be a small and
     13 fast implementation of the ABI, leaving off some features of HP's libunwind
     14 that never materialized (e.g. remote unwinding).
     15 
     16 The unwinder has two levels of API. The high level APIs are the `_Unwind_*`
     17 functions which implement functionality required by `__cxa_*` exception
     18 functions. The low level APIs are the `unw_*` functions which are an interface
     19 defined by the old HP libunwind project.
     20 
     21 Getting Started with libunwind
     22 ------------------------------
     23 
     24 .. toctree::
     25    :maxdepth: 2
     26 
     27    BuildingLibunwind
     28 
     29 Current Status
     30 --------------
     31 
     32 libunwind is a production-quality unwinder, with platform support for DWARF
     33 unwind info, SjLj, and ARM EHABI.
     34 
     35 The low level libunwind API was designed to work either in-process (aka local)
     36 or to operate on another process (aka remote), but only the local path has been
     37 implemented. Remote unwinding remains as future work.
     38 
     39 Platform and Compiler Support
     40 -----------------------------
     41 
     42 libunwind is known to work on the following platforms:
     43 
     44 ============ ======================== ============ ========================
     45 OS           Arch                     Compilers    Unwind Info
     46 ============ ======================== ============ ========================
     47 Any          i386, x86_64, ARM        Clang        SjLj
     48 Bare Metal   ARM                      Clang, GCC   EHABI
     49 FreeBSD      i386, x86_64, ARM64      Clang        DWARF CFI
     50 iOS          ARM                      Clang        SjLj
     51 Linux        ARM                      Clang, GCC   EHABI
     52 Linux        i386, x86_64, ARM64      Clang, GCC   DWARF CFI
     53 Mac OS X     i386, x86_64             Clang, GCC   DWARF CFI
     54 NetBSD       x86_64                   Clang, GCC   DWARF CFI
     55 Windows      i386, x86_64, ARM, ARM64 Clang        DWARF CFI
     56 ============ ======================== ============ ========================
     57 
     58 The following minimum compiler versions are strongly recommended.
     59 
     60 * Clang 3.5 and above
     61 * GCC 4.7 and above.
     62 
     63 Anything older *may* work.
     64 
     65 Notes and Known Issues
     66 ----------------------
     67 
     68 * TODO
     69 
     70 
     71 Getting Involved
     72 ================
     73 
     74 First please review our `Developer's Policy <http://llvm.org/docs/DeveloperPolicy.html>`__
     75 and `Getting started with LLVM <http://llvm.org/docs/GettingStarted.html>`__.
     76 
     77 **Bug Reports**
     78 
     79 If you think you've found a bug in libunwind, please report it using
     80 the `LLVM Bugzilla`_. If you're not sure, you
     81 can post a message to the `cfe-dev mailing list`_ or on IRC.
     82 Please include "libunwind" in your subject.
     83 
     84 **Patches**
     85 
     86 If you want to contribute a patch to libunwind, the best place for that is
     87 `Phabricator <http://llvm.org/docs/Phabricator.html>`_. Please include [libunwind] in the subject and
     88 add `cfe-commits` as a subscriber. Also make sure you are subscribed to the
     89 `cfe-commits mailing list <http://lists.llvm.org/mailman/listinfo/cfe-commits>`_.
     90 
     91 **Discussion and Questions**
     92 
     93 Send discussions and questions to the
     94 `cfe-dev mailing list <http://lists.llvm.org/mailman/listinfo/cfe-dev>`_.
     95 Please include [libunwind] in the subject.
     96 
     97 
     98 Quick Links
     99 ===========
    100 * `LLVM Homepage <http://llvm.org/>`_
    101 * `LLVM Bugzilla <https://bugs.llvm.org/>`_
    102 * `cfe-commits Mailing List`_
    103 * `cfe-dev Mailing List`_
    104 * `Browse libunwind Sources <https://github.com/llvm/llvm-project/blob/master/libunwind/>`_
    105