The 1.5.1 release of mpatrol has just been completed and released to the
Subversion repository at SourceForge,
http://sourceforge.net/svn/?group_id=19456.
It contains the following major changes from release 1.5.0.
* mpatrol can be built to use libunwind for call stack traversal on any UNIX
system that has libunwind installed. It is the default for ARM and IA64
but can be turned on for other processor architecures by defining
MP_LIBUNWIND_SUPPORT when building the mpatrol library. [Code supplied by
Daniel Jacobowitz of CodeSourcery].
* mpatrol can be built to use the backtrace() routine for call stack
traversal on any UNIX system that has glibc installed. This doesn't give
valid frame pointers (they are simulated) and only has support for a
finite
number of frames (currently set at 64). It is the default for 64-bit x86
Linux systems but can be turned on for other processor architectures and
systems by defining MP_GLIBCBACKTRACE_SUPPORT when building the mpatrol
library.
* Only do a backup copy of the call stack context where it is necessary in
__mp_getaddrs(). [Code supplied by Daniel Jacobowitz of Code Sourcery].
* No longer free allocations created by alloca() when in a recursive call
within the mpatrol library, and check for the possibility that the call
stack traversal may have failed before performing a call stack comparison
in checkalloca(). [Code supplied by Daniel Jacobowitz of Code Sourcery].
* Added support for reading symbols and/or line number information from
stripped executable files or shared libraries generated by gcc that have
their debugging information in a separate file (referenced by the
.gnu_debuglink section). [Code supplied by Daniel Jacobowitz of Code
Sourcery].
* Now use dl_iterate_phdr() on Linux systems to determine the shared
libraries loaded by a program rather than the _DYNAMIC symbol. This might
mean that statically linked programs can no longer be built with
libmpatrol.a if dl_iterate_phdr() is only available to dynamically linked
programs. [Code supplied by Daniel Jacobowitz of Code Sourcery].
I didn't make libunwind the default stack traversal mechanism for MIPS yet
as
I know some people are still using the existing MIPS mechanism and until the
patches for getting libunwind to work on MIPS are public there didn't seem
any
point in changing the current default.
Also, it might be better to use libunwind rather than backtrace() for the
64-bit x86 processors as there are less limitations. I just didn't know
what
the support was like for that processor in libunwind.
I never quite got round to migrating the mpatrol web site to SourceForge,
but
I'll see what I can get done over the next few months.
Have a good Christmas,
Graeme.