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