On Wed, Oct 14, 2015 at 11:34 AM, Stas Sergeev <stsp@xxxxxxx> wrote:Ah, so the old progs simply never return to 32bit, so you
14.10.2015 21:06, Andy Lutomirski ÐÐÑÐÑ:What I mean is: it has the behavior it would have normally on a new
Hmm, no, it didn't do this in the past for sure.Also it doesn't seem to be saying what happens if CS is 32-bitA new signal will be delivered. sigreturn doesn't modify its behavior
and SS is invalid (the flag is not set).
in this case -- it does the default thing, which is to honor the SS in
the saved context.
It simply ignored SS, no matter to what mode it returns.
kernel, which is to honor the saved SS. I'll try to improve the
comment.
That's the assumption. If I understand correctly, though, old DOSEMUSo it will actually try to use that saved SSSo it seems this logic assumes that when dosemu returns to 32bit,
value, which will fail, causing SIGSEGV.
the previous SS is always still valid, am I right with the understanding?
I.e. the one that kernel have saved on a signal delivery (because
old dosemu does not overwrite it).
If it is so, I'd say this assumption is very risky and will likely
not hold. But maybe I am missing the point.
never actually returns to 32-bit using sigreturn in the first place,
since old kernels gave no control over SS. Doesn't old DOSEMU always
return to the 64-bit IRET trampoline?