libunwind-devel
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]