This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix PR debug/24444: incorrect frame base in IA64 prologues


rOn Sat, Feb 04, 2006 at 04:54:11PM -0200, Alexandre Oliva wrote:
> On Feb  3, 2006, Richard Henderson <rth@redhat.com> wrote:
> 
> > It looks ok to me.  Be prepared to help the arm folk if 
> > they report problems.
> 
> As it turned out, testing revealed that stack unwinding was thoroughly
> broken, because of the fix to the definition of the CFA location from
> past the red zone to the literal SP value.  This broke unwind-ia64.c's
> uw_init_context_1, that used to compensate for the incorrect CFA
> value.  Since you'd confirmed in private that the CFA fix was correct,
> I'll proceed to check in this patch without further approval, unless
> retesting reveals any remaining regressions.

Just a general note: once a platform has defined the CFA with or
without a particular bias to the caller's SP, you can't change it.
It's an ABI break of a peculiar sort for debuggers.

For instance, GDB may know about it.  All the unwinders for a target
need to agree about the interpretation of the CFA, or else frames will
appear to be on the stack in a bogus order.  And if you've got some
code compiled with the old CFA for dwarf and some with the new...

It looks to me like ia64-tdep.c does know about the magic +16, but
I'm not familiar enough with ia64 to work that out for sure.

-- 
Daniel Jacobowitz
CodeSourcery


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]