mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-26 17:17:39 +01:00
Fork of the libunwind official github repo — http://www.nongnu.org/libunwind/
2fc4fd6e48
The previous version was OK for all but one corner case. The new version uses slightly more space in the cursor (4 extra bytes) but on the other hand, the final result is both much more easier to understand and likely faster. It also seems more correct, which is always a bonus. BKrev: 403f05c1TMcVYiNdYmb4S5hSOVJkfw |
||
---|---|---|
aux | ||
BitKeeper/etc | ||
doc | ||
include | ||
scripts | ||
src | ||
tests | ||
acinclude.m4 | ||
aclocal.m4 | ||
AUTHORS | ||
ChangeLog | ||
ChangeSet | ||
configure | ||
configure.in | ||
COPYING | ||
INSTALL | ||
Makefile.am | ||
Makefile.in | ||
NEWS | ||
README | ||
TODO |
-*- mode: Outline -*- This is version 0.96 of the unwind library. At the moment, only the IA-64 Linux (IPF Linux) platform is fully supported. Some very basic support for x86 and HP-UX/IPF exists also. However, the x86 support is based purely on the frame-chain and does not use unwind information, so its utility is limited. Similarly, the HP-UX/IPF support is incomplete, though it is sufficient to do a basic backtrace. unw_resume() is not supported, however. * General Build Instructions In general, this library can be built and installed with the following commands: $ ./configure $ make $ make install prefix=PREFIX where PREFIX is the installation prefix. By default, a prefix of /usr/local is used, such that libunwind.a is installed in /usr/local/lib and unwind.h is installed in /usr/local/include. For testing, you may want to use a prefix of /usr/local instead. If, during the build, you're getting an error of the form: ../src/.libs/libunwind-ia64.so: undefined reference to `__tls_get_addr' it indicates that you have a compiler which supports the `__thread' keyword, but a runtime system (C library), which does not. As of September 2003, this appears to be a common problem for Debian "unstable" systems. To work around this issue, run "./configure" with option "--disable-__thread". * Building with Intel compiler ** Up to version 7 To build libunwind with the Intel Electron compiler (ECC), it is recommended to run configure like this: $ ./configure CC=ecc CXX=ecc CCAS=gcc The reason for this is that ECC uses the Intel assembler, which doesn't grok some of the IA-64 assembly code in the "tests" directory. For an ECC-built version of libunwind to work properly, you also need to ensure that /usr/include/asm/fpu.h contains a "long double" member called "__dummy" in the declaration of "struct ia64_fpreg". Without that member, variables of type unw_context_t won't be aligned properly. ** Version 8 and later Starting with version 8, the preferred name for the IA-64 Intel compiler is "icc" (same name as on x86). Thus, the configure-line should look like this: $ ./configure CC=icc CXX=icc CCAS=gcc * Building on HP-UX For the time being, libunwind must be built with GCC on HP-UX. Unfortunately, gcc-3.0 and gcc-3.2 ship with a bad version of sys/types.h. The workaround for this is: $ mkdir $top_dir/include/sys $ cp /usr/include/sys/types.h $top_dir/include/sys Apart from this glitch, libunwind should configure and install on HP-UX like this: $ ./configure CFLAGS="-g -O2 -mlp64" Caveat: Unwinding of 32-bit (ILP32) binaries is not supported at the moment. * Regression Testing After building the library, you can run a set of regression tests with: $ make check ** Expected results on IA-64 Linux Unless you have a very recent C library and compiler installed, it is currently expected to have the following tests fail on IA-64 Linux: Gtest-init (should pass starting with glibc-2.3.x/gcc-3.4) Ltest-init (should pass starting with glibc-2.3.x/gcc-3.4) test-ptrace (should pass starting with glibc-2.3.x/gcc-3.4) run-ia64-test-dyn1 (should pass starting with glibc-2.3.x) This does not mean that libunwind cannot be used with older compilers or C libraries, it just means that for certain corner cases, unwinding will fail. Since they're corner cases, it is not likely for applications to trigger them. ** Expected results on x86 Linux The following tests are expected to fail on x86 Linux: test-proc-info (x86 unwinder doesn't use unwind-info yet) Gtest-exc (unw_resume() not implmented yet) Ltest-exc (unw_resume() not implmented yet) test-setjmp (unw_resume() not implmented yet) ** Expected results on HP-UX "make check" is currently unsupported for HP-UX. The only test programs that are known to work at this time are tests/bt (which produces various backtraces) and tests/Gperf-simple, which does some simple performance measurements. * Performance Testing This distribution includes a few simple performance tests which give some idea of the basic cost of various libunwind operations. After building the library, you can run these tests with the following commands: $ cd tests $ make perf * Contacting the Developers Please direct all questions regarding this library to: libunwind@linux.hpl.hp.com For spam protection, you'll have to subscribe to this list before posting a question. You can do this by sending a mail to libunwind-request@linux.hpl.hp.com with a body of: subscribe libunwind Note: the host that is running this list is behind a firewall, so you'll not be able to use the Web interface to manage your subscription. Send a mail containing "help" to libunwind-request@linux.hpl.hp.com for information on how to manage your subscription via email.