From 5a203e440538bfe04bb982e79a45d00a88a5fec4 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Mon, 18 Nov 2002 22:19:33 +0000 Subject: 2002-11-18 Andrew Cagney * frame.h (enum frame_type): Define. (get_frame_type): Declare. (struct frame_info): Add field `type'. Delete field signal_handler_caller. (deprecated_set_frame_signal_handler_caller): Declare. * frame.c (get_frame_type): New function. (deprecated_set_frame_type): New function. (create_new_frame): Set the frame's type. (get_prev_frame): Similar. * sparc-tdep.c: Use get_frame_type instead of signal_handler_caller. * s390-tdep.c: Ditto. * m68klinux-nat.c: Ditto. * ns32k-tdep.c: Ditto. * x86-64-linux-tdep.c: Ditto. * vax-tdep.c: Ditto. * rs6000-tdep.c: Ditto. * ppc-linux-tdep.c: Ditto. * i386-interix-tdep.c: Ditto. * mips-tdep.c: Ditto. * m68k-tdep.c: Ditto. * hppa-tdep.c: Ditto. * ia64-tdep.c: Ditto. * cris-tdep.c: Ditto. * arm-tdep.c: Ditto. * alpha-tdep.c: Ditto. * i386-tdep.c: Ditto. * stack.c: Ditto. * ada-lang.c: Ditto. * blockframe.c: Update. * i386-interix-tdep.c (i386_interix_back_one_frame): Use deprecated_set_frame_type instead of signal_handler_caller. * ppc-linux-tdep.c (ppc_linux_init_extra_frame_info): Ditto. * rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto. * breakpoint.h: Delete FIXME suggesting get_frame_type. Index: tui/ChangeLog 2002-11-18 Andrew Cagney * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of signal_handler_caller. --- gdb/ada-lang.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'gdb/ada-lang.c') diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 1e526eb..c21a325 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -5032,16 +5032,19 @@ find_printable_frame (struct frame_info *fi, int level) for (; fi != NULL; level += 1, fi = get_prev_frame (fi)) { - /* If fi is not the innermost frame, that normally means that fi->pc - points to *after* the call instruction, and we want to get the line - containing the call, never the next line. But if the next frame is - a signal_handler_caller or a dummy frame, then the next frame was - not entered as the result of a call, and we want to get the line - containing fi->pc. */ + /* If fi is not the innermost frame, that normally means that + fi->pc points at the return instruction (which is *after* the + call instruction), and we want to get the line containing the + call (because the call is where the user thinks the program + is). However, if the next frame is either a SIGTRAMP_FRAME + or a DUMMY_FRAME, then the next frame will contain a saved + interrupt PC and such a PC indicates the current (rather than + next) instruction/line, consequently, for such cases, want to + get the line containing fi->pc. */ sal = find_pc_line (fi->pc, fi->next != NULL - && !fi->next->signal_handler_caller + && !(get_frame_type (fi->next) == SIGTRAMP_FRAME) && !deprecated_frame_in_dummy (fi->next)); if (sal.symtab && !is_ada_runtime_file (sal.symtab->filename)) { -- cgit v1.1