Hi, We used to have a somewhat awkward get_unwind_table interface where we passed both the (fake) address space of the unwind table as the original vaddr of the table. This was necessary because eh_frames contain pc-relative addresses, so libunwind wanted to get the original address. This patch makes it so that the address space we pass to libunwind has the correct relative addresses, so no extra arguments are necessary for libunwind to adjust anything. There is one local libunwind patch necessary for now to make this work. That is to not directly read the the personality routine address from the CIE since it can be stored anywhere and currently we are just feeding it the unwind table data. We still need to read the encoded pointer to get past it. This can be restored when frysk feeds the eh_frame through its main address space. We never use the personality routine inside Frysk at the moment. frysk-imports/libunwind/ChangeLog 2007-12-22 Mark Wielaard * include/libunwind-common.h.in (unw_get_unwind_table): Remove as, arg and peh_vaddr arguments. * src/mi/Gget_unwind_table.c (unw_get_unwind_table): Likewise. Create address space from eh_frame_accessors. Set rti.table_data and rti.segbase from eh_frame_hdr_address. Pass eh_frame_arg to tdep_search_unwind_table. * src/dwarf/Gfde.c (parse_cie): Add FRYSK LOCAL hack to not read personality routine address. frysk-sys/lib/unwind/ChangeLog 2007-12-22 Mark Wielaard * cni/UnwindH.hxx (get_eh_frame_hdr_addr): Return char*. (createProcInfoFromElfImage): Calculate virtual and adjusted addresses from eh_table_hdr and peh_vaddr. Tested on x86 and x86_64. Committed, Mark