libunwind is a portable and efficient C API for determining the current call chain of ELF program threads of execution and for resuming execution at any point in that call chain. The API supports both local (same process) and remote (other process) operation.
The API ise useful in a number of applications, including but not limited to the following.
Program introspection: Either for error messages showing a back trace of the call chain leading to a problem or for performance monitoring and analysis.
Debugging: Whether the debugging and analysis of the call chain of a remote program or the post-mortem analysis of a coredump.
Language runtime exception handling libunwind: optionally provides an alternative implementation of the Itanium exception handling ABI used by many popular toolchains.
Alternative setjmp()/longjmp(): libunwind optionally provides an alternative implementation of the setjmp()/longjmp() functionality of the C standard library.
Homepage
Download
Recent Releases
1.8.123 Feb 2024 06:05
minor feature:
lt;p gt;Small release of libunwind 1.8. lt;/p gt;.
lt;p gt;One of the functional changes is that the testsuite is now installed with a lt;code gt;make install lt;/code gt;, which may affect downstream packagers. By default these executables are installed in lt;code gt; libexecdir /libunwind lt;/code gt; where lt;code gt; libexecdir lt;/code gt; defaults to lt;code gt; pre /libexec lt;/code gt;, but all this can be set explicitly though arguments to lt;code gt;configure lt;/code gt;. lt;/p gt;.
lt;h2 gt;What's Changed lt;/h2 gt;.
lt;ul gt;.
lt;li gt; lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2097459071" data-permission-text="Title is private" data-url="https://github.com/libunwind/libunwind//713" data-hovercard-type="" data-hovercard-url="/libunwind/libunwind//713/hovercard" href="https://github.com/libunwind/libunwind//713" gt;#713 lt;/a gt; by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cshung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cshung" gt;@cshung lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2112597060" data-permission-text="Title is private" data-url="https://github.com/libunwind/libunwind//717" data-hovercard-type="pull_request" data-hovercard-url="/libunwind/libunwind/pull/717/hovercard" href="https://github.com/libunwind/libunwind/pull/717" gt;#717 lt;/a gt; lt;/li gt;.
lt;li gt;Add do-release script by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bregma/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bregma" gt;@bregma lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2145091373" data-permission-text="Title is private" data-url="https://github.com/libunwind/libunwind//725" data-hovercard-type="pull_reque
1.8.030 Jan 2024 11:18
minor feature:
What's Changed
Improve unwinding through a bad function pointer on x86_64. by @EmployedRussian in #449
Fix single-bit-bitfield-constant-conversion warning by @am11 in #457
Remove mailing list information by @bkmgit in #463
Fix UMRs indicated by valgrind (x86_64) by @peadar in #454
Remove unneeded check by @bkmgit in #466
fix byte_order_is_valid function logic by @he7850 in #445
Use size_t to match R.H.S by @am11 in #455
Move get_proc_info_in_range under dwarf/ by @am11 in #460
Bump actions/checkout@v2 to @V3 by @bregma in #469
dwarf_find_unwind_table: Find load_base correctly when current segment does not start at segbase by @BobIsOnFire in #456
Add introspection for march=armv8-a+sve by @am11 in #471
Add refined read-only permissions to CI actions by @bregma in #476
Conditionally handle differing struct fpreg layout on FreeBSD armv7 by @rcmcdonald91 in #478
src/Gtrace: remove unguarded print() calls by @rossburton in #483
Linux: Make get_elf_image guaranteed AS-safe by @bertwesarg in #485
Rework CI-unix.yml to add clang by @bregma in #472
Provide syscall wrappers for mmap and munmap by @bertwesarg in #486
Allow to use a custom dl_iterate_phdr implementation by @bertwesarg in #490
aarch64: unw_step() validates address before calling dwarf_get by @he7850 in #494
doc: Add manpage for unw_set_iterate_phdr_function by @bertwesarg in #497
Fix unused variable warning by @michalbiesek in #498
Provide AS-safe allocator to LZMA by @bertwesarg in #484
Rework register load in aarch64_local_resume() by @bregma in #503
Add manpage for libunwind-coredump by @bregma in #496
Make Debug() signal-safe by @bregma in #506
Handle edge case in aarch64 tdep_trace() by @bregma in #504
Update to rc2 by @bkmgit in #468
don't override sp on arm and mips64 by @kasperk81 in #481
Fix NO_PTRACE_TEST conditions by @bregma in #500
Skip test-ptrace tests if ptrace() returns an err