Re: [RFA/alpha-osf] another next frame confusion in signal unwinder?

Andrew Cagney
2004-12-12T15:48:23Z

Joel Brobecker wrote:

> It looks to me that we already have the next frame, so computing
> the next frame of that frame in alpha_osf1_sigcontext_addr() is
> making us using the wrong frame when getting the base address for
> the signal context area. So I changed this function to:
>
> static CORE_ADDR
> alpha_osf1_sigcontext_addr (struct frame_info *next_frame)
> {
> return (read_memory_integer (get_frame_base (next_frame), 8));
> }
>
> This fixes the problem above, and I obtain the expected callstack.
>
> 2004-12-01 Joel Brobecker <brobecker@gnat.com>
>
> * alpha-osf1-tdep.c (alpha_osf1_sigcontext_addr): Change
> parameter name to make it clear that we already have a next
> frame. Return the sigcontext from that next frame instead
> of the frame following it.
> Fixes [DB30-017].
>
> Tested on alpha-tru64 5.1a. No regression.
>
> OK to apply?
>
>
> ------------------------------------------------------------------------
>
> Index: alpha-osf1-tdep.c
> ===================================================================
> RCS file: /nile.c/cvs/Dev/gdb/gdb-6.3/gdb/alpha-osf1-tdep.c,v
> retrieving revision 1.3
> diff -u -p -r1.3 alpha-osf1-tdep.c
> --- alpha-osf1-tdep.c 21 Oct 2004 00:08:34 -0000 1.3
> +++ alpha-osf1-tdep.c 1 Dec 2004 17:54:46 -0000
> @@ -35,14 +35,9 @@ alpha_osf1_pc_in_sigtramp (CORE_ADDR pc,
> }
>
> static CORE_ADDR
> -alpha_osf1_sigcontext_addr (struct frame_info *frame)
> +alpha_osf1_sigcontext_addr (struct frame_info *next_frame)
> {
> - struct frame_info *next_frame = get_next_frame (frame);
> -
> - if (next_frame != NULL)
> - return (read_memory_integer (get_frame_base (next_frame), 8));
> - else
> - return (read_memory_integer (get_frame_base (frame), 8));
> + return (read_memory_integer (get_frame_base (next_frame), 8));

(I need to deprecate get frame base). Can you just tweak this to return
get_frame_id().stack_addr before committing.

thanks,
Andrew

> }
>
> static void