Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/lib/libunwind



On 2021/05/31 23:35, Joerg Sonnenberger wrote:
On Mon, May 31, 2021 at 12:12:24PM +0000, Rin Okuyama wrote:
Bump LAST_REGISTER and LAST_RESTORE_REG to REGNO_ARM32_S31 for arm.

This is not desirable as it significantly increases the memory use.
The goal here is to actually alias the single and double register in the
space. That's what the existing was doing.

Existing code did not.

With LAST_REGISTER = REGNO_ARM32_D31, libunwind gave up unwinding frames
when it encounters s0-s31; see parseInstructions():

https://nxr.netbsd.org/xref/src/sys/lib/libunwind/DwarfParser.hpp#parseInstructions

And with LAST_RESTORE_REG = REGNO_ARM32_D31, it did not copy-back contents
of s0-s31 at all; see stepWithDwarf():

https://nxr.netbsd.org/xref/src/sys/lib/libunwind/DwarfInstructions.hpp#136

IMO, in order to support VFP-register aliasing, we need to heavily modify
MI codes. This adds complexities to the code, and only ARM would receive
benefits from them.

Existing code was not acceptable for me; for example, GDB aborted *every
time* exceptions were raised. I won't revert this change at the moment.
Please provide working alternative if you don't like mine.

Thanks,
rin


Joerg



Home | Main Index | Thread Index | Old Index