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