Currently, a stolen register value that is translated by a client is discarded both in a synchall and a synchronous signal. We fix both paths here.
Adds a new test client.stolen-reg which tests both a synchronous fault signal translation path as well as a synchall translation path via a synchall flush. The test was confirmed to fail without either of the fixes in place.
Ensures the new test passes on 32-bit ARM. This exercised the translate_from_synchall_to_dispatch() path and found some ARM bugs: the reset exit stub is A32 mode, so we need to change the mode for the suspended sigcontext; yet thread_set_mcontext() did not support that. That is all fixed now and verified.
Fixes #4495 (closed)