Tracking issue: #201242 See the [migration guide] for more information. [migration guide]: https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines This is a stacked PR based on #210208, which is the standalone rename commit for this miscellaneous Markdown migration batch. This was prepared with rst2myst plus LLM-assisted cleanup. LLDB man pages are intentionally left as reStructuredText because LLDB man-page building should not take on Markdown parser dependencies. Unfortunately, many of these miscellaneous docs do not have working standalone doc build targets, so I was not able to render HTML for all of them. I think the scope is small enough that this is reviewable by hand.
91 lines
3.2 KiB
Markdown
91 lines
3.2 KiB
Markdown
(index)=
|
|
|
|
# libunwind LLVM Unwinder
|
|
|
|
## Overview
|
|
|
|
libunwind is an implementation of the interface defined by the HP libunwind
|
|
project. It was contributed by Apple as a way to enable clang++ to port to
|
|
platforms that do not have a system unwinder. It is intended to be a small and
|
|
fast implementation of the ABI, leaving off some features of HP's libunwind
|
|
that never materialized (e.g. remote unwinding).
|
|
|
|
The unwinder has two levels of API. The high level APIs are the `_Unwind_*`
|
|
functions which implement functionality required by `__cxa_*` exception
|
|
functions. The low level APIs are the `unw_*` functions which are an interface
|
|
defined by the old HP libunwind project.
|
|
|
|
### Getting Started with libunwind
|
|
|
|
:::{toctree}
|
|
:maxdepth: 2
|
|
|
|
BuildingLibunwind
|
|
:::
|
|
|
|
### Current Status
|
|
|
|
libunwind is a production-quality unwinder, with platform support for DWARF
|
|
unwind info, SjLj, and ARM EHABI.
|
|
|
|
The low level libunwind API was designed to work either in-process (aka local)
|
|
or to operate on another process (aka remote), but only the local path has been
|
|
implemented. Remote unwinding remains as future work.
|
|
|
|
### Platform and Compiler Support
|
|
|
|
libunwind is known to work on the following platforms:
|
|
|
|
| OS | Arch | Compilers | Unwind Info |
|
|
| ---------- | ------------------------ | ---------- | ----------- |
|
|
| Any | i386, x86_64, ARM | Clang | SjLj |
|
|
| Bare Metal | ARM | Clang, GCC | EHABI |
|
|
| FreeBSD | i386, x86_64, ARM64 | Clang | DWARF CFI |
|
|
| iOS | ARM | Clang | SjLj |
|
|
| Linux | ARM | Clang, GCC | EHABI |
|
|
| Linux | i386, x86_64, ARM64 | Clang, GCC | DWARF CFI |
|
|
| macOS | i386, x86_64 | Clang, GCC | DWARF CFI |
|
|
| NetBSD | x86_64 | Clang, GCC | DWARF CFI |
|
|
| Windows | i386, x86_64, ARM, ARM64 | Clang | DWARF CFI |
|
|
|
|
The following minimum compiler versions are strongly recommended.
|
|
|
|
- Clang 3.5 and above
|
|
- GCC 4.7 and above.
|
|
|
|
Anything older *may* work.
|
|
|
|
### Notes and Known Issues
|
|
|
|
- TODO
|
|
|
|
## Getting Involved
|
|
|
|
First please review our [Developer's Policy](https://llvm.org/docs/DeveloperPolicy.html)
|
|
and [Getting started with LLVM](https://llvm.org/docs/GettingStarted.html).
|
|
|
|
**Bug Reports**
|
|
|
|
If you think you've found a bug in libunwind, please report it using
|
|
the [LLVM bug tracker]. If you're not sure, you
|
|
can ask for support on the [Runtimes forum] or on Discord.
|
|
Please use the tag "libunwind" for new threads.
|
|
|
|
**Patches**
|
|
|
|
If you want to contribute a patch to libunwind, please start by reading the LLVM
|
|
[documentation about contributing](https://www.llvm.org/docs/Contributing.html).
|
|
|
|
**Discussion and Questions**
|
|
|
|
Send discussions and questions to the [Runtimes forum]. Please add the tag "libunwind" to your post.
|
|
|
|
## Quick Links
|
|
|
|
- [LLVM Homepage](https://llvm.org/)
|
|
- [LLVM Bug Tracker](https://github.com/llvm/llvm-project/labels/libunwind/)
|
|
- [Clang Discourse Forums](https://discourse.llvm.org/c/clang/6)
|
|
- [cfe-commits Mailing List](http://lists.llvm.org/mailman/listinfo/cfe-commits)
|
|
- [Runtimes Forum](https://discourse.llvm.org/tags/c/runtimes)
|
|
- [Browse libunwind Sources](https://github.com/llvm/llvm-project/blob/main/libunwind/)
|
|
|