3 =======================
4 libunwind LLVM Unwinder
5 =======================
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).
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.
21 Getting Started with libunwind
22 ------------------------------
32 libunwind is a production-quality unwinder, with platform support for DWARF
33 unwind info, SjLj, and ARM EHABI.
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.
39 Platform and Compiler Support
40 -----------------------------
42 libunwind is known to work on the following platforms:
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
51 Linux ARM Clang, GCC EHABI
52 Linux i386, x86_64, ARM64 Clang, GCC DWARF CFI
53 macOS 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 ============ ======================== ============ ========================
58 The following minimum compiler versions are strongly recommended.
63 Anything older *may* work.
65 Notes and Known Issues
66 ----------------------
74 First please review our `Developer's Policy <https://llvm.org/docs/DeveloperPolicy.html>`__
75 and `Getting started with LLVM <https://llvm.org/docs/GettingStarted.html>`__.
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.
86 If you want to contribute a patch to libunwind, the best place for that is
87 `Phabricator <https://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>`_.
91 **Discussion and Questions**
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.
100 * `LLVM Homepage <https://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/>`_