[PATCH/AARCH64/ILP32] Fix unwinding (libgcc)

James Greenhalgh james.greenhalgh@arm.com
Thu May 26 12:38:00 GMT 2016


On Wed, Apr 27, 2016 at 02:13:21PM -0700, Andrew Pinski wrote:
> Hi,
>   AARCH64 ILP32 is like x32 where UNITS_PER_WORD > sizeof(void*) so we
> need to define REG_VALUE_IN_UNWIND_CONTEXT for ILP32.  This fixes
> unwinding through the signal handler.  This is independent of the ABI
> which Linux kernel uses to store the registers.
> 
> OK?  Bootstrapped and tested on aarch64 with no regressions.

I've read back through the threads around this issue [1][2] and it looks
like most of the discussion was to do with the machinery and enabling
compatability between unwinder libraries rather than the ABI implications
of turning on REG_VALUE_IN_UNWIND_CONTEXT.

You had a concern in the PR:

  "Does it matter for the propose of unwinding as all we care about
   is pointers to get back to frame before?  Your commit might change
   the ABI for some targets."

That basically sums up my concerns too, particularly as I'm not remotely
familiar with this area! I'm assuming you convinced yourself this wasn't
an issue for x32, and therefore won't be an issue for AArch64 ilp32?

Could you write a paragraph on why this is OK to set my mind at ease, then
give it another few days for Marcus and Richard to comment? I've got no
objections to the patch content if you can help me to understand why this
is correct and does not introduce/break ABI.

Thanks,
James

---
[1]: Bug 48007 - [x32] Unwind library doesn't work with
        UNITS_PER_WORD > sizeof (void *)
     https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48007
[2]: PATCH [8/n]: Prepare x32: PR other/48007: Unwind library doesn't
        work with UNITS_PER_WORD > sizeof (void *)
     https://gcc.gnu.org/ml/gcc-patches/2011-06/msg01913.html

> ChangeLog:
> * config/aarch64/value-unwind.h: New file.
> * config.host (aarch64*-*-*): Add aarch64/value-unwind.h to tm_file.



More information about the Gcc-patches mailing list