[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Patches] [patch] Fix for debug/tst-backtrace{5, 6} failure of 32-bit libc on 64-bit host
- To: "Joseph S. Myers" <joseph@xxxxxxxxxxxxxxxx>
- Subject: Re: [Patches] [patch] Fix for debug/tst-backtrace{5, 6} failure of 32-bit libc on 64-bit host
- From: Paul Pluzhnikov <ppluzhnikov@xxxxxxxxxx>
- Date: Mon, 20 Feb 2012 16:05:00 -0800
On Mon, Feb 20, 2012 at 3:54 PM, Joseph S. Myers
<joseph@xxxxxxxxxxxxxxxx> wrote:
>> This failure is due to GCC laying out fn code like so:
>
> But I don't think the test should be changed here to allow no name for the
> function. The libgcc unwinder knows to subtract 1 from a return address
> when unwinding (and knows not to do so in a signal frame), and subtracting
> 1 should get you within the function. Maybe there is somewhere that logic
> is missing?
For what it's worth, "man backtrace" says:
Each item in the array pointed to by buffer is of type void *, and is
the return address from the corresponding stack frame.
Note that it says RA, and RA-1 ...
The man page and backtrace itself could of course be changed, but (I expect)
doing so will break many applications that are already doing -1 on return
addresses.
An alternate fix could be to re-try symbol @RA-1 if symbol @RA is empty
in tst-backtrace6.c.
Thanks,
--
Paul Pluzhnikov
_______________________________________________
Patches mailing list
Patches@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/patches