This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] C6X readelf unwinding table parsing
- From: Paul Brook <paul at codesourcery dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: binutils at sourceware dot org
- Date: Thu, 7 Apr 2011 12:53:38 +0100
- Subject: Re: [PATCH] C6X readelf unwinding table parsing
- References: <201103220930.52594.paul@codesourcery.com> <Pine.LNX.4.64.1103291645500.30259@digraph.polyomino.org.uk>
> > The attached patch teaches readelf -u how to grok the C6X ABI defined
> > unwinding tables. These are similar to those used by ARM, so much of the
> > code is shared. Notable differences are the handling of PREL31 offsets,
> > different unwinding opcodes, and the addition of two more standard
> > personality routines.
>
> This is OK in C6X terms (and you can approve the ARM changes yourself),
> presuming that:
>
> * It is deliberate that you don't try to represent the big-endian pair
> swapping when describing instructions to pop registers.
Yes, this was deliberate. Likewise the padding in the compact layout is
implicit. I erred on the side of displaying the information as encoded in the
file, rather than interpreting the semantics.
There are three different pop opcodes. These are output as "pop {regs}" for
the regular ABI defined layout: "pop compact {regs}" for the ABI defined
compact layout, and "pop frame {regs+padding}" for custom layouts. c6x
doesn't have an actual pop instruction, so this seemed reasonably unambiguous.
Paul