[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Libunwind-devel] [RFC] _ULx86_64_tdep_trace returns off-by-one addr
From: |
Paul Pluzhnikov |
Subject: |
Re: [Libunwind-devel] [RFC] _ULx86_64_tdep_trace returns off-by-one addresses |
Date: |
Sun, 4 Dec 2011 22:54:04 -0800 |
On Sun, Dec 4, 2011 at 10:44 PM, Lassi Tuura <address@hidden> wrote:
> I suppose in fast trace under "case UNW_X86_64_FRAME_SIGRETURN" we could
> maybe fix things up with something like:
>
> /* In x86_64 the signal frame is usually __restore_rt, and we didn't
> get there by a call, it's just set up to look like that on stack.
> Because of d->use_prev_instr we ended up reporting an address one
> byte before the function at previous frame. Fix that up now. */
> if (depth)
> buffer[depth-1] = (uint64_t) buffer[depth-1]+1;
>
> Does that seem like a sensible idea to anyone?
I was going to propose the same fix-up, but I haven't yet read the
threads you've already referenced.
> I'll try to check if this an> ok strategy for platforms other than linux, but
> I need to dust my VMs first.
The fix-up could of course be made conditional: do it only on Linux
(and anywhere else where it is required).
Thanks,--
Paul Pluzhnikov