* frame.h (frame_unwind_arch): New.

(frame_unwind_caller_arch): Likewise.
	* frame-unwind.h (frame_prev_arch_ftype): New type.
	(struct frame_unwind): New member prev_arch.
	* frame.c (struct frame_info): New member prev_arch.
	(frame_unwind_arch): New function.
	(frame_unwind_caller_arch): Likewise..
	(get_frame_arch): Reimplement in terms of frame_unwind_arch.
	* sentinel-frame.c (sentinel_frame_prev_arch): New function.
	(sentinel_frame_unwinder): Install it.

	* frame.c (frame_pc_unwind): Use frame_unwind_arch instead
	of get_frame_arch.
	(frame_unwind_register_value): Likewise.
	(frame_unwind_register_signed): Likewise.
	(frame_unwind_register_unsigned): Likewise.
	* frame-unwind.c (frame_unwind_got_optimized): Likewise.
	(frame_unwind_got_register): Likewise.
	(frame_unwind_got_constant): Likewise.
	(frame_unwind_got_bytes): Likewise.
	(frame_unwind_got_address): Likewise.

	* frame.h (enum frame_type): New value ARCH_FRAME.
	* frame.c (fprint_frame_type): Handle ARCH_FRAME.
	* stack.c (print_frame_info): Likewise.
This commit is contained in:
Ulrich Weigand 2009-07-02 17:09:28 +00:00
parent 848f574829
commit 36f15f554f
7 changed files with 123 additions and 21 deletions

View file

@ -522,7 +522,8 @@ print_frame_info (struct frame_info *frame, int print_level,
int location_print;
if (get_frame_type (frame) == DUMMY_FRAME
|| get_frame_type (frame) == SIGTRAMP_FRAME)
|| get_frame_type (frame) == SIGTRAMP_FRAME
|| get_frame_type (frame) == ARCH_FRAME)
{
struct cleanup *uiout_cleanup
= make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
@ -555,6 +556,10 @@ print_frame_info (struct frame_info *frame, int print_level,
annotate_signal_handler_caller ();
ui_out_field_string (uiout, "func", "<signal handler called>");
}
else if (get_frame_type (frame) == ARCH_FRAME)
{
ui_out_field_string (uiout, "func", "<cross-architecture call>");
}
ui_out_text (uiout, "\n");
annotate_frame_end ();