I'm new to the LLVM's libunwind library. Could you please tell me what's the purpose and the difference of the two sets of functions that libunwind provides:
- functions with the prefix _Unwind_
- functions with the prefix unw_
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.