Re: Fw: Re: Java interpreter on ARM GNU/Linux
Daniel Jacobowitz writes:
> On Fri, Jul 13, 2007 at 11:08:15AM +0100, Andrew Haley wrote:
> > > > I can work around some of the failures, but I can't really be
> > > > bothered: the real fix for this is EABI.
> > >
> > > Unfortunately, the EABI won't fix this either. In its native form it
> > > supported neither forced unwinding nor _Unwind_Backtrace; we added
> > > forced unwinding for the benefit of NPTL (though we're still talking
> > > to ARM intermittently about its semantics). But no one's tried to
> > > make _Unwind_Backtrace work yet, and it's not clear how to. To me
> > > anyway.
> > Interesting. Presumably there is enough information in the unwinder
> > data to do it? If it's technically impossible to do a simple
> > backtrace then I have to wonder what the point of the EABI is.
> The data is there, but it's not structured the right way. In
> .eh_frame unwinding, there's a standard format to define saved
> registers and an augmentation to define the language-specific data and
> the personality routine which understands that language-specific data.
> In ARM EABI unwinding, the personality routine is responsible for
> reading the saved register data as well as the language specific
> data. So the core unwinder (_Unwind_* in libgcc) is limited in what
> it can do by the flags accepted by the personality routines.
> There are several standard formats defined by the EHABI. GCC only
> ever uses those. But we might not have our own implementations of the
> personality routines, so we can't ABI-conformantly pass them invalid
> flags. We play a little loose with this for forced unwinding and let
> ourselves sleep at night since we proposed standardization language
> for them to ARM :-)
OK. Can you send me a copy of your proposed standardization language?
> However, for the standard table formats and personality routines, we
> could arrange to do backtraces anyway. It should be just a matter of
> a day's work or so and a little more code in the unwinder, and it
> would work with all GCC-compiled code with unwind info.
Thanks. I'm busy for the next week or so, but I might be able to get
back to it after then, depending on hardware availability.