[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libunwind] libunwind v0.9 released
From: |
David Mosberger |
Subject: |
[libunwind] libunwind v0.9 released |
Date: |
Wed, 5 Mar 2003 23:07:42 -0800 |
I just uploaded v0.9 of libunwind. See:
http://www.hpl.hp.com/research/linux/libunwind/
for download instructions or go straight to:
ftp://ftp.hpl.hp.com/pub/linux-ia64/libunwind-0.9.tar.gz
As far as I'm concerned, this release is feature-complete for ia64,
which is why the version number jumped so much (getting close to a 1.0
release, hopefully).
If you build this release, "make check" should complete with 1 failure
out of 13 tests. Actually, due to a bug in gcc-3.2 and earlier,
you'll have to compile tests/Ltest-exc and tests/Gtest-exc with -O
(not with -O2) to avoid an infinite loop (the bug has been fixed in
gcc-3.3). I'd recommend to do something along the lines of:
$ ./configure ..whatever-options-you-like...
$ make
$ make check CFLAGS="-g -O"
$ make install
The one expected failure is due to tests/test-ptrace. It fails
because of (small) bugs in the libc unwind info. I'm working on
fixing those so that in the future even this test will pass.
Compared to the last snapshot (0.2-pre5), here are some of the
improvements:
- For dynamic unwind info, it is now possible to set the
region length of the last region of a procedure to a
negative value -N. This indicates that the region describes
the last N instructions of the procedure. This enables
the sharing of region descriptors for dynamically generated
procedures that share the same epilogue.
- The dynamic unwind code is now tested. Especially for the
remote unwind case a lot of bugs were fixed. A test-case
has been added which covers most of the dynamic unwind info
directives and its correctness is tested by single-stepping
through dynamically generated code and generating a
backtrace after each instruction. To see this in action,
try running:
$ tests/test-ptrace -v -t tests/ia64-test-dyn1
after `make check CFLAGS="-g -O"'.
- The ia64-implementation now has proper locking, so libunwind
should now be safe to use in multi-threaded programs.
- It is now possible to obtain the procedure-name for a given
stack frame. For static code, the procedure name is fetched
from the underlying ELF image (both the static and dynamic
symbol table are considered). Of course, in a stripped
binary with no dynamic symbol table, the returned procedure
names are not terribly useful. Still, the facility turns
out to be very handy. In conjunction with this, I also
added an optional get_proc_name() callback to the accessors
structure, so that remote unwinders can also provide
procedure names (the ptrace-based accessor does that, for
example).
While the current implementation already passes some rather hairy
test-cases, there are still a bunch of things that require testing.
For example, I haven't done any testing with ECC-generated code so far
(if someone tries that, let me know of the result). Over the next
couple of weeks, I hope to address that and also fill in the missing
man-pages.
Enjoy,
--david
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libunwind] libunwind v0.9 released,
David Mosberger <=