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



Correction:

On 2021/06/01 7:10, Rin Okuyama wrote:
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

This paragraph:

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

is only applied to the case of LAST_REGISTER = REGNO_ARM32_S31, and
not to existing code.

However, LAST_RESTORE_REG itself has nothing to do with memory usage.
And moreover, the conclusion below is not changed at all.

Thanks,
rin

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