blob: 7126d02abd2960815d3dccee7da580aaa9d49789 [file] [log] [blame]
Jonathan Roelofsaf9d03a2017-03-28 15:21:431.. _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
Martin Storsjodbf17cf2017-09-16 20:52:0518functions. The low level APIs are the `unw_*` functions which are an interface
Jonathan Roelofsaf9d03a2017-03-28 15:21:4319defined 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
Martin Storsjo39201892017-11-16 07:16:3644============ ======================== ============ ========================
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
J. Ryan Stinnettd45eaf92019-05-30 16:46:2253macOS i386, x86_64 Clang, GCC DWARF CFI
Martin Storsjo39201892017-11-16 07:16:3654NetBSD x86_64 Clang, GCC DWARF CFI
55Windows i386, x86_64, ARM, ARM64 Clang DWARF CFI
56============ ======================== ============ ========================
Jonathan Roelofsaf9d03a2017-03-28 15:21:4357
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
Jonathan Roelofs978da1f2017-04-03 19:23:1170
Jonathan Roelofsaf9d03a2017-03-28 15:21:4371Getting Involved
72================
73
Sylvestre Ledru72fd1032020-03-22 21:42:0374First please review our `Developer's Policy <https://llvm.org/docs/DeveloperPolicy.html>`__
75and `Getting started with LLVM <https://llvm.org/docs/GettingStarted.html>`__.
Jonathan Roelofsaf9d03a2017-03-28 15:21:4376
77**Bug Reports**
78
79If you think you've found a bug in libunwind, please report it using
Simon Pilgrim527654d2022-02-05 21:03:5180the `LLVM bug tracker`_. If you're not sure, you
Danny Möscha749e322022-03-23 14:10:2081can ask for support on the `Runtimes forum`_ or on IRC.
82Please use the tag "libunwind" for new threads.
Jonathan Roelofsaf9d03a2017-03-28 15:21:4383
84**Patches**
85
86If you want to contribute a patch to libunwind, the best place for that is
Sylvestre Ledru72fd1032020-03-22 21:42:0387`Phabricator <https://llvm.org/docs/Phabricator.html>`_. Please include [libunwind] in the subject and
Danny Möscha749e322022-03-23 14:10:2088add `cfe-commits` as a subscriber. Also make sure you are subscribed to the `cfe-commits mailing list`_.
Jonathan Roelofsaf9d03a2017-03-28 15:21:4389
90**Discussion and Questions**
91
Danny Möscha749e322022-03-23 14:10:2092Send discussions and questions to the `Runtimes forum`_. Please add the tag "libunwind" to your post.
Jonathan Roelofsaf9d03a2017-03-28 15:21:4393
94
95Quick Links
96===========
Sylvestre Ledru72fd1032020-03-22 21:42:0397* `LLVM Homepage <https://llvm.org/>`_
Danny Möscha749e322022-03-23 14:10:2098* `LLVM Bug Tracker <https://github.com/llvm/llvm-project/labels/libunwind/>`_
tlattner520d29f2022-07-28 23:54:3899* `Clang Discourse Forums <https://discourse.llvm.org/c/clang/6>`_
Danny Möscha749e322022-03-23 14:10:20100* `cfe-commits Mailing List <http://lists.llvm.org/mailman/listinfo/cfe-commits>`_
101* `Runtimes Forum <https://discourse.llvm.org/tags/c/runtimes>`_
xgupta94fac812021-02-01 07:24:21102* `Browse libunwind Sources <https://github.com/llvm/llvm-project/blob/main/libunwind/>`_