index.rst 3.5 KB

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