Hi, One of the issues we had with libunwind for 32-on-64 unwinding was that there are some parts that need access to local 64bit memory, but defined an unw_word_t as wide as the target (32 bit). This patch makes it so that for those parts we now use an address space that is indexed of a 64bit pointer (passed as arg to the accessor methods). And gets rid of the MAP_32BIT hacks we had. When we push this upstream, we should do the same for the libunwind ptrace backend to show why it is useful. But I didn't want to spend too much time on that now since we don't use it in frysk. frysk-imports/libunwind/ChangeLog 2007-11-28 Mark Wielaard * src/mi/Gget_unwind_table.c (unw_get_unwind_table): Make addr a char *, pass addr as arg to dwarf_read functions, make local_access_mem use arg as base address for start indexed reads. frysk-sys/lib/unwind/ChangeLog 2007-11-29 Mark Wielaard * cni/ElfImage.cxx: Don't define MAP_32BIT. (mapElfImage): Don't use MAP_32BIT. * cni/UnwindH.hxx: Don't define MAP_32BIT. (createElfImageFromVDSO): Don't use MAP_32BIT. Tested by also running all -arch 32 tests on a 64bit system (and also straight make check on x86 and x86_64). It would be nicer if we didn't need to feed an elfimage to libunwind and libunwind didn't try to do the elf parsing itself here. But when we feed it debug_frame info we will have the table come not from the inferior memory directly anyway, so for now it is useful (although ideally libunwind would just accept a pointer or addressspace reference to the debug_frame or debug_info table and use that). Cheers, Mark