The attached ia64 patch fixes a few problems, most notably backtracing through signal handlers. Ok to commit? 2003-10-17 Jeff Johnston * ia64-tdep.c: Change all references of DEPRECATED_REGISTER_RAW_SIZE to use register_size() instead. (ia64_frame_cache): Add new prev_cfm field. (ia64_alloc_frame_cache): Initialize new prev_cfm field to 0. (floatformat_valid): New static routine. (floatformat_ia64_ext): Add name field and set up is_valid routine to floatformat_valid(). (examine_prologue): For the previous cfm, use frame_unwind_register() if the cfm is not stored in a register-stack register. Save the previous cfm value in the prev_cfm field. Add debug output. (ia64_frame_this_id): Use frame_id_build_special() to also register the bsp. Add debug output. (ia64_sigtramp_frame_this_id): Ditto. (ia64_frame_prev_register): Look at cache saved_regs for a few more registers and also add some checks for framelessness before accepting current register values for fields such as return address. For cfm, use the cached prev_cfm field if available. Add debug output. (ia64_sigtramp_frame_init_saved_regs): Bump up base by 16 to get sp needed for calling lower level ia64_linux_sigcontext_register_address(). Also save the bsp and sp address as part of initialization. (ia64_sigtramp_frame_cache): Don't bother using cached stack size as it won't be set. Cache the bsp and cfm values. (ia64_sigtramp_frame_prev_register): Flesh this routine out instead of using ia64_frame_prev_register(). The saved values for bsp and sp can be taken from the cache. Add debug output. (ia64_push_dummy_call): Use frame_id_build_special() to also register the bsp.