102 lines · plain
1.. _index:2 3=======================4libunwind LLVM Unwinder5=======================6 7Overview8========9 10libunwind is an implementation of the interface defined by the HP libunwind11project. It was contributed by Apple as a way to enable clang++ to port to12platforms that do not have a system unwinder. It is intended to be a small and13fast implementation of the ABI, leaving off some features of HP's libunwind14that 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_*` exception18functions. The low level APIs are the `unw_*` functions which are an interface19defined by the old HP libunwind project.20 21Getting Started with libunwind22------------------------------23 24.. toctree::25 :maxdepth: 226 27 BuildingLibunwind28 29Current Status30--------------31 32libunwind is a production-quality unwinder, with platform support for DWARF33unwind 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 been37implemented. Remote unwinding remains as future work.38 39Platform and Compiler Support40-----------------------------41 42libunwind is known to work on the following platforms:43 44============ ======================== ============ ========================45OS Arch Compilers Unwind Info46============ ======================== ============ ========================47Any i386, x86_64, ARM Clang SjLj48Bare Metal ARM Clang, GCC EHABI49FreeBSD i386, x86_64, ARM64 Clang DWARF CFI50iOS ARM Clang SjLj51Linux ARM Clang, GCC EHABI52Linux i386, x86_64, ARM64 Clang, GCC DWARF CFI53macOS i386, x86_64 Clang, GCC DWARF CFI54NetBSD x86_64 Clang, GCC DWARF CFI55Windows i386, x86_64, ARM, ARM64 Clang DWARF CFI56============ ======================== ============ ========================57 58The following minimum compiler versions are strongly recommended.59 60* Clang 3.5 and above61* GCC 4.7 and above.62 63Anything older *may* work.64 65Notes and Known Issues66----------------------67 68* TODO69 70 71Getting Involved72================73 74First please review our `Developer's Policy <https://llvm.org/docs/DeveloperPolicy.html>`__75and `Getting started with LLVM <https://llvm.org/docs/GettingStarted.html>`__.76 77**Bug Reports**78 79If you think you've found a bug in libunwind, please report it using80the `LLVM bug tracker`_. If you're not sure, you81can ask for support on the `Runtimes forum`_ or on Discord.82Please use the tag "libunwind" for new threads.83 84**Patches**85 86If you want to contribute a patch to libunwind, please start by reading the LLVM87`documentation about contributing <https://www.llvm.org/docs/Contributing.html>`__.88 89**Discussion and Questions**90 91Send discussions and questions to the `Runtimes forum`_. Please add the tag "libunwind" to your post.92 93 94Quick Links95===========96* `LLVM Homepage <https://llvm.org/>`_97* `LLVM Bug Tracker <https://github.com/llvm/llvm-project/labels/libunwind/>`_98* `Clang Discourse Forums <https://discourse.llvm.org/c/clang/6>`_99* `cfe-commits Mailing List <http://lists.llvm.org/mailman/listinfo/cfe-commits>`_100* `Runtimes Forum <https://discourse.llvm.org/tags/c/runtimes>`_101* `Browse libunwind Sources <https://github.com/llvm/llvm-project/blob/main/libunwind/>`_102